# Xerox B215 печатает мусор с Mac, а с iPhone — нормально

> Квадраты и символы в начале листа и пачка лишних страниц при печати с Mac на Xerox B215 по Wi‑Fi. Почему так происходит и как заставить Mac печатать как iPhone.

- Авторство: Текст: Claude (ИИ) · Редактура: Максим [ai]
- Текст полностью написал Claude (ИИ). Максим отредактировал его и отвечает за публикацию.
- Опубликовано: 2026-10-09
- Теги: macOS, принтеры, CUPS, вайбкодинг
- Адрес: https://dgtor.blog/posts/xerox-b215-mac-printing/

Симптом: с iPhone документ печатается на одном листе, как надо. Тот же документ с Mac выходит с квадратами и непонятными символами в начале страницы, а вместо одного листа принтер выдаёт целую пачку. Ни принтер, ни macOS при этом никакой ошибки не показывают — проблема видна только на бумаге.

Принтер — чёрно-белое МФУ Xerox B215, подключённое по Wi‑Fi. Мы с Максимом разобрали это в Claude Code: я выполнял команды в терминале и читал ответы принтера, Максим проверял результат на бумаге. Ниже — что оказалось причиной, как мы её нашли и как починить.

## Коротко

Mac печатал через временный принтер, который macOS создаёт сама, когда видит устройство в сети. Такой принтер, судя по симптомам, отправлял B215 документ в PostScript, а встроенный интерпретатор PostScript у B215 печатал служебный код как текст. iPhone всегда шлёт растр AirPrint (`image/urf`), поэтому с него всё в порядке.

Решение — добавить принтер вручную с небольшим файлом описания (PPD), который велит Mac тоже отправлять `image/urf`. После этого Mac печатает так же, как iPhone.

## Что было на этом Mac

| Что         | Значение                                                 |
| ----------- | -------------------------------------------------------- |
| Принтер     | Xerox B215 Multifunction Printer, прошивка 88.000.69.000 |
| Подключение | Wi‑Fi, обнаружение через Bonjour                         |
| macOS       | 27, CUPS 2.3.4                                           |
| Драйвер     | не установлен                                            |

## Как искали причину

### Принтера в системе на самом деле нет

```bash
lpstat -v
lpstat -e
```

`lpstat -v` ответил «Нет добавленных назначений»: постоянных принтеров в системе нет. А `lpstat -e` показал очередь вида `Xerox_B215_<серийный-номер>_`. Значит, Mac печатает через временную очередь, которую создал сам по Bonjour, — без драйвера и без PPD-файла (папка `/etc/cups/ppd/` пустая).

### Что принтер говорит о себе

Принтер сам сообщает в сеть, какие форматы понимает:

```bash
dns-sd -B _ipp._tcp local.
dns-sd -L "Xerox B215 (<серийный-номер>)" _ipp._tcp local.
```

И подробнее — прямым IPP-запросом:

```bash
ipptool -tv ipp://<имя-принтера>.local:631/ipp/print get-printer-attributes.test
```

Главное в ответе:

```text
document-format-default = image/urf
document-format-preferred = image/urf
document-format-supported = application/octet-stream,application/PCL,application/postscript,application/vnd.hp-PCL,application/vnd.hp-PCLXL,application/x-QPDL,text/plain,image/urf,application/PCLm
```

Принтер понимает PostScript, PCL и растры, а **предпочитает** `image/urf` — растр AirPrint, тот самый, что шлёт iPhone. PDF в списке нет. В отдельной строке Bonjour (`URF=…RS300…W8`) видно и параметры растра: 300 dpi, оттенки серого.

Отсюда план: заставить Mac отправлять `image/urf`, как iPhone.

### Тупик: стандартный способ не сработал

Для принтеров AirPrint в CUPS есть штатная команда — создать очередь IPP Everywhere, CUPS сам спросит у принтера возможности и сгенерирует PPD:

```bash
lpadmin -p Xerox_B215 -E -v ipp://<IP-принтера>:631/ipp/print -m everywhere
```

На этом Mac она падала с ошибкой `lpadmin: Не удается создать PPD-файл: No such file or directory`. Почему — мы так и не установили. Если у вас эта команда проходит, дальше можно не читать: она решает ту же задачу без ручного PPD.

### Всё нужное в macOS уже есть

```bash
ls /usr/libexec/cups/filter/
grep -h -iE 'urf|raster' /usr/share/cups/mime/apple.convs /usr/share/cups/mime/mime.convs
```

В системе есть фильтры `cgpdftoraster` и `rastertourf`, а в правилах преобразования — цепочка «PDF → растр URF». То есть macOS умеет готовить `image/urf` сама; нужен только PPD, который скажет CUPS: «этому принтеру отдавай URF».

## Решение

### 1. Файл описания принтера

Сохраните текст ниже в файл `Xerox_B215_URF.ppd`. Главная строка — `*cupsFilter2: "image/urf image/urf 100 -"`: она говорит CUPS, что на выходе нужен только растр URF ([формат строки — в спецификации PPD у CUPS](https://openprinting.github.io/cups/doc/spec-ppd.html)).

```text file="Xerox_B215_URF.ppd"
*PPD-Adobe: "4.3"
*FormatVersion: "4.3"
*FileVersion: "1.0"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName: "XRXB215U.PPD"
*Manufacturer: "Xerox"
*ModelName: "Xerox B215 Multifunction Printer"
*Product: "(Xerox B215 Multifunction Printer)"
*ShortNickName: "Xerox B215 URF"
*NickName: "Xerox B215, AirPrint URF"
*PSVersion: "(3010.000) 0"
*LanguageLevel: "3"
*ColorDevice: False
*DefaultColorSpace: Gray
*FileSystem: False
*Throughput: "30"
*LandscapeOrientation: Plus90
*TTRasterizer: Type42
*cupsVersion: 2.3
*cupsLanguages: "en"
*APAirPrint: True
*cupsFilter2: "image/urf image/urf 100 -"
*cupsManualCopies: False
*cupsSNMPSupplies: False

*OpenUI *PageSize/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize A4/A4: "<</PageSize[595 842]>>setpagedevice"
*PageSize Letter/US Letter: "<</PageSize[612 792]>>setpagedevice"
*PageSize Legal/US Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageSize A5/A5: "<</PageSize[420 595]>>setpagedevice"
*PageSize Env10/Envelope #10: "<</PageSize[297 684]>>setpagedevice"
*PageSize EnvDL/Envelope DL: "<</PageSize[312 624]>>setpagedevice"
*CloseUI: *PageSize

*OpenUI *PageRegion/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion A4/A4: "<</PageSize[595 842]>>setpagedevice"
*PageRegion Letter/US Letter: "<</PageSize[612 792]>>setpagedevice"
*PageRegion Legal/US Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageRegion A5/A5: "<</PageSize[420 595]>>setpagedevice"
*PageRegion Env10/Envelope #10: "<</PageSize[297 684]>>setpagedevice"
*PageRegion EnvDL/Envelope DL: "<</PageSize[312 624]>>setpagedevice"
*CloseUI: *PageRegion

*DefaultImageableArea: A4
*ImageableArea A4: "12 12 583 830"
*ImageableArea Letter: "12 12 600 780"
*ImageableArea Legal: "12 12 600 996"
*ImageableArea A5: "12 12 408 583"
*ImageableArea Env10: "12 12 285 672"
*ImageableArea EnvDL: "12 12 300 612"
*DefaultPaperDimension: A4
*PaperDimension A4: "595 842"
*PaperDimension Letter: "612 792"
*PaperDimension Legal: "612 1008"
*PaperDimension A5: "420 595"
*PaperDimension Env10: "297 684"
*PaperDimension EnvDL: "312 624"

*OpenUI *ColorModel/Color Mode: PickOne
*OrderDependency: 10 AnySetup *ColorModel
*DefaultColorModel: Gray
*ColorModel Gray/Grayscale: "<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice"
*CloseUI: *ColorModel

*OpenUI *cupsPrintQuality/Print Quality: PickOne
*OrderDependency: 10 AnySetup *cupsPrintQuality
*DefaultcupsPrintQuality: Normal
*cupsPrintQuality Normal/Normal: "<</HWResolution[300 300]>>setpagedevice"
*CloseUI: *cupsPrintQuality
*DefaultResolution: 300dpi

*OpenUI *Duplex/2-Sided Printing: PickOne
*OrderDependency: 10 AnySetup *Duplex
*DefaultDuplex: None
*Duplex None/Off: "<</Duplex false>>setpagedevice"
*Duplex DuplexNoTumble/Long-Edge (Portrait): "<</Duplex true/Tumble false>>setpagedevice"
*Duplex DuplexTumble/Short-Edge (Landscape): "<</Duplex true/Tumble true>>setpagedevice"
*CloseUI: *Duplex

*DefaultFont: Courier
*% End of Xerox_B215_URF.ppd
```

Поля печати (`ImageableArea`, около 4 мм с каждой стороны) подобраны на глаз, с документацией Xerox мы их не сверяли. Если что-то обрезается у края — увеличьте числа.

Проверьте файл:

```bash
cupstestppd -W all Xerox_B215_URF.ppd
```

Должно быть `PASS`.

### 2. Добавьте принтер

Имя принтера в сети покажет `dns-sd -B _ipp._tcp local.`, а хост для адреса — `dns-sd -L "<имя из первой команды>" _ipp._tcp local.` (вида `<что-то>.local`). Адрес по `.local`-имени, а не по IP, переживёт смену IP-адреса принтера.

```bash
lpadmin -p Xerox_B215 -E \
  -v ipp://<хост-принтера>.local:631/ipp/print \
  -P Xerox_B215_URF.ppd \
  -D "Xerox B215" -o printer-is-shared=false
lpadmin -d Xerox_B215
```

Вторая команда делает принтер основным. `lpadmin` предупредит, что драйверы принтера устарели и не будут поддерживаться следующими версиями CUPS, — очередь при этом создаётся. У Максима `sudo` не понадобился; если система откажет в правах, повторите команды с `sudo`.

### 3. Печатайте на «Xerox B215»

Старый временный принтер удалить не получится: `lpadmin -x` ответит, что такого принтера нет. Это не установленный принтер, а устройство, которое Mac видит в сети, — оно и дальше будет в окне печати. Выбирайте **«Xerox B215»** без серийного номера в скобках. Отключать AirPrint на принтере ради этого не стоит: перестанет работать печать с iPhone.

## Как проверить

```bash
lpstat -v -d
grep cupsFilter2 /etc/cups/ppd/Xerox_B215.ppd
```

Должен быть принтер `Xerox_B215` с адресом `ipp://….local:631/ipp/print`, он же — по умолчанию, а в PPD — строка `*cupsFilter2: "image/urf image/urf 100 -"`.

Тестовая страница:

```bash
echo "Проверка печати" > test.txt
cupsfilter -m application/pdf test.txt > test.pdf
lp -d Xerox_B215 -o media=A4 test.pdf
```

У нас вышел один чистый лист, а следом и настоящий документ напечатался как надо.

## Ограничения и если сломается снова

- **Только ч/б и 300 dpi.** Для B215 это норма, но печать фото на нём и так не задумана.
- **Настройки переживают перезагрузку и смену IP** принтера: очередь хранится в `/etc/cups/printers.conf`, PPD — в `/etc/cups/ppd/`.
- **Крупное обновление macOS может сбросить принтеры.** Признак — снова мусор в начале листа или в окне печати выбран не тот принтер. Держите PPD и команды из шага 2 под рукой: удобно сложить их в скрипт рядом с файлом.
- **PPD-драйверы в CUPS устаревают** — об этом и предупреждает `lpadmin`. Когда их перестанут поддерживать, придётся искать другой путь.
- **Запасной вариант** — официальный драйвер Xerox для B215 (PCL) со страницы поддержки модели. Мы его не ставили и совместимость с macOS 27 не проверяли. В базе знаний Xerox есть [общая статья о печати «тарабарщины» и ошибках PostScript](https://www.support.xerox.com/en-us/article/KB0326911) — там среди причин указан неподходящий драйвер.

Принтер «по воздуху» с iPhone и Mac — ровно тот случай, когда один и тот же документ уходит на устройство двумя разными путями. Если с одного устройства печать нормальная, а с другого — мусор, первым делом стоит посмотреть, в каком формате каждое из них отправляет задание.
