Подключить принтер, физически подсоединённый к компьютеру с Windows, к устройству на Linux кажется сложной задачей только на первый взгляд. На практике это стандартная процедура, которая решается с помощью встроенных инструментов обеих операционных систем. Главная проблема — отсутствие прямого доступа к USB-порту принтера, но её легко обойти, используя сетевые протоколы или специализированное ПО.

В этой статье мы разберём три проверенных метода: через общий доступ Samba (идеально для домашних сетей), напрямую по IP-адресу (если принтер сетевой) и через CUPS (универсальный менеджер печати в Linux). Каждый способ подходит для разных сценариев: от офисных МФУ до старых струйных принтеров. Вам не потребуются дополнительные программы — только стандартные настройки и 10–15 минут времени.

⚠️ Важно: Если ваш принтер подключён к Windows через USB, а не по сети, обязательно включите общий доступ к нему в настройках Windows. Без этого Linux просто «не увидит» устройство, даже если оно физически доступно в локальной сети.

1. Подготовка Windows: настройка общего доступа к принтеру

Прежде чем настраивать Linux, нужно правильно подготовить компьютер с Windows. Открытие общего доступа к принтеру занимает не больше 2–3 минут, но здесь есть нюансы, которые часто упускают.

Сначала убедитесь, что принтер корректно установлен на Windows и работает без ошибок. Для этого:

  • 🖨️ Распечатайте тестовую страницу через Панель управления → Устройства и принтеры → Правая кнопка на принтере → Свойства принтера → Печать тестовой страницы.
  • 🔌 Проверьте, что принтер подключён к Windows через USB или Ethernet (не по Wi-Fi, если речь о прямом подключении).
  • 🔄 Перезагрузите принтер и компьютер — это устранит возможные конфликты драйверов.

Теперь откройте общий доступ:

  1. Перейдите в Панель управления → Сеть и Интернет → Центр управления сетями и общим доступом → Изменить дополнительные параметры общего доступа.
  2. Включите сетевое обнаружение и общий доступ к файлам и принтерам для вашей сети (обычно это профиль «Частная»).
  3. Вернитесь в Устройства и принтеры, кликните правой кнопкой на принтере и выберите Свойства принтера → Доступ → Общий доступ к данному принтеру. Укажите имя (например, HP_LaserJet_Pro) и примените настройки.
⚠️ Внимание: Если у вас Windows 10/11 Home, функция общего доступа к принтерам может быть отключена по умолчанию. В этом случае потребуется включить службу Print Spooler и Server через services.msc или использовать альтернативные методы (например, подключение по IP).
📊 Какой принтер вы используете?
HP
Canon
Epson
Brother
Другой

2. Способ 1: Подключение через Samba (для USB-принтеров)

Samba — это протокол, который позволяет Linux-машинам взаимодействовать с ресурсами Windows, включая принтеры. Этот метод оптимален, если принтер подключён к Windows по USB, а обе машины находятся в одной локальной сети.

Для начала установите необходимые пакеты. В большинстве дистрибутивов Linux (Ubuntu, Debian, Mint) это делается одной командой:

sudo apt update && sudo apt install cups samba smbclient

Далее добавьте принтер через CUPS (Common Unix Printing System):

  1. Откройте браузер и перейдите по адресу http://localhost:631 (веб-интерфейс CUPS).
  2. Выберите Administration → Add Printer.
  3. В списке устройств найдите Windows Printer via SAMBA и укажите путь в формате:
    smb://[IP_адрес_Windows]/[имя_принтера]
    Пример: smb://192.168.1.100/HP_LaserJet_Pro.
  4. Введите логин и пароль от учётной записи Windows (если требуется аутентификация).
  5. Выберите драйвер принтера из списка (или загрузите PPF-файл с сайта производителя).

Если принтер не отображается, проверьте:

  • 🔌 Правильность IP-адреса Windows (узнать можно через ipconfig в командной строке).
  • 🔒 Настройки брандмауэра Windows (должен разрешать входящие подключения по портам 139 и 445).
  • 📡 Работоспособность сети (ping с Linux до Windows должен проходить без потерь).

Установлены пакеты CUPS и Samba|Принтер включён в общий доступ на Windows|IP-адрес Windows известен и пингуется|Брандмауэр Windows разрешает SMB-трафик-->

3. Способ 2: Подключение по IP-адресу (для сетевых принтеров)

Если принтер подключён к сети напрямую (через Ethernet или Wi-Fi), его можно добавить в Linux по IP-адресу, минуя Windows. Этот метод универсален и работает даже если компьютер с Windows выключен.

Сначала найдите IP-адрес принтера:

  • На самом принтере (обычно распечатывается через меню Network Configuration или Wireless Settings).
  • В настройках роутера (раздел DHCP Clients или Connected Devices).
  • Через Windows: Панель управления → Устройства и принтеры → Свойства принтера → Порты.

Теперь добавьте принтер в Linux:

  1. Откройте Настройки → Принтеры (или http://localhost:631 в браузере).
  2. Нажмите Добавить принтер и выберите Сетевой принтер.
  3. Введите IP-адрес в формате:
    socket://[IP_принтера] или lpd://[IP_принтера]
    Пример: socket://192.168.1.150.
  4. Выберите модель принтера из базы данных или загрузите драйвер вручную (файлы .ppd можно скачать с сайта производителя).
⚠️ Внимание: Некоторые принтеры (особенно Canon и Epson) требуют установки фирменных драйверов даже в Linux. Если стандартные драйверы CUPS не работают, скачайте официальные пакеты с сайта vendors или используйте репозитории вроде hplip для HP.

Критическая деталь: Если принтер имеет динамический IP (DHCP), закрепите его в настройках роутера, иначе после перезагрузки адрес может измениться, и подключение разорвётся.

💡

Если принтер не печатает после подключения, попробуйте перезапустить службу CUPS командой sudo systemctl restart cups. Это сбросит очередь печати и применит изменения.

4. Способ 3: Использование CUPS для сложных конфигураций

CUPS (Common Unix Printing System) — это стандартная система печати в Linux, которая поддерживает практически все модели принтеров. Она позволяет гибко настраивать подключения, включая те, что проходят через Windows.

Если первые два метода не сработали, попробуйте ручную настройку через CUPS:

  1. Откройте терминал и проверьте статус службы:
    sudo systemctl status cups

    Если служба не активна, запустите её:

    sudo systemctl start cups
  2. Откройте веб-интерфейс CUPS по адресу http://localhost:631 (логин/пароль — ваши данные от системы).
  3. Перейдите в Administration → Add Printer.
  4. Выберите один из вариантов:
    • 🖥️ Windows Printer via SAMBA — для USB-принтеров, подключённых к Windows.
    • 🌐 Internet Printing Protocol (ipp) — для сетевых принтеров с поддержкой IPP.
    • 🔌 AppSocket/HP JetDirect — для принтеров с прямым IP-подключением.
  • Укажите URI принтера (примеры см. в таблице ниже) и завершите настройку.
  • Тип подключения Формат URI Пример
    Samba (USB на Windows) smb://[IP_Windows]/[имя_принтера] smb://192.168.1.100/OfficePrinter
    IPP (сетевой принтер) ipp://[IP_принтера]/ipp ipp://192.168.1.150/ipp/print
    AppSocket (прямое IP) socket://[IP_принтера]:9100 socket://192.168.1.150:9100
    LPD (устаревший протокол) lpd://[IP_принтера]/queue lpd://192.168.1.150/P1

    После добавления принтера проверьте очередь печати:

    lpstat -t

    Если принтер отображается как idle, но не печатает, попробуйте отправить тестовую страницу:

    lp -d [имя_принтера] /etc/hosts
    Что делать, если CUPS не видит принтер?

    Проверьте, что служба CUPS запущена (sudo systemctl status cups). Если нет — запустите её (sudo systemctl start cups).

    Убедитесь, что брандмауэр Linux не блокирует порты 631 (CUPS) и 139/445 (Samba).

    Обновите список драйверов: sudo apt update && sudo apt install printer-driver-all (для Debian/Ubuntu).

    5. Устранение распространённых ошибок

    Даже при правильной настройке могут возникать проблемы. Вот самые частые из них и способы их решения:

    • Ошибка "Unable to locate printer":
      Проверьте правильность IP-адреса или имени принтера. Если используете Samba, убедитесь, что на Windows включён NetBIOS over TCP/IP (в свойствах сетевого адаптера).
    • Ошибка аутентификации ("Permission denied"):
      На Windows добавьте пользователя Linux в группу с правами на печать или отключите запрос пароля в настройках общего доступа.
    • Принтер добавлен, но не печатает:
      Проверьте очередь печати (lpstat -o) и очистите её (cancel -a). Также убедитесь, что на принтере нет ошибок (например, закончилась бумага или тонер).
    • Нет драйвера для модели принтера:
      Скачайте .ppd-файл с сайта производителя и укажите его вручную при добавлении принтера. Для HP используйте пакет hplip.

    Если принтер Canon или Epson, возможно, потребуется установить проприетарные драйверы. Например, для Canon LBP:

    sudo apt install cndrvcups-capt

    Для Brother скачайте драйвер с официального сайта (раздел Linux Drivers) и установите его через терминал:

    gunzip linux-brprinter-installer-*.gz
    

    sudo bash linux-brprinter-installer-* [модель_принтера]

    💡

    Большинство проблем с подключением связаны с неверными настройками сети или драйверов. Всегда начинайте диагностику с проверки ping до принтера/Windows и статуса службы CUPS.

    6. Альтернативные решения для сложных случаев

    Если стандартные методы не работают, рассмотрите альтернативные варианты:

    • 🖥️ Виртуальная машина с Windows:
      Установите VirtualBox или VMware, подключите USB-принтер к виртуальной машине и печайте из неё. Минус — требует дополнительных ресурсов ПК.
    • 🌍 Облачные сервисы печати:
      Сервисы вроде Google Cloud Print (устарел, но есть аналоги) или PaperCut позволяют печатать через интернет. Подходит для удалённой работы.
    • 🔄 Прямое подключение принтера к Linux:
      Если принтер поддерживает USB или Wi-Fi Direct, подключите его напрямую к Linux-машине. Это устранит зависимость от Windows.
    • 🛠️ Специализированное ПО:
      Для корпоративных сетей используйте Samba AD или IPP Everywhere для централизованного управления принтерами.

    Для офисных МФУ (например, Xerox или Ricoh) часто требуется настройка LDAP или Kerberos для аутентификации. В этом случае обратитесь к администратору сети или документации производителя.

    ⚠️ Внимание: Некоторые корпоративные политики безопасности блокируют прямой доступ к принтерам через Samba или IP. В таких случаях используйте официальные решения (например, Printix или PrinterLogic), одобренные IT-отделом.

    7. Оптимизация печати: советы для повседневного использования

    После успешного подключения принтера стоит настроить его для удобной работы:

    • 📄 Драйвер по умолчанию:
      В CUPS (http://localhost:631) выберите Printers → [ваш_принтер] → Administration → Set As Server Default.
    • 🔄 Двусторонняя печать:
      Включите опцию Duplex в настройках принтера (если поддерживается). В Linux это делается через Настройки → Принтеры → Свойства → Параметры устройства.
    • 🖼️ Качество печати:
      Для экономии тонера установите режим Draft (черновик) для повседневных документов.
    • 📂 Очередь печати:
      Используйте команду lpq для просмотра очереди и lprm [номер_задания] для её очистки.

    Если принтер используется несколькими пользователями, настройте разделение доступа:

    sudo lpadmin -p [имя_принтера] -o auth-info-required=username,password

    Для автоматизации печати регулярных отчётов (например, логов) используйте cron:

    0 9   1-5 lp -d [имя_принтера] /путь/к/файлу.txt

    Эта команда будет печатать файл каждый будний день в 9:00.

    💡

    Чтобы ускорить печать PDF-файлов, конвертируйте их в PostScript перед отправкой на принтер: pdf2ps input.pdf output.ps, затем lp -d [принтер] output.ps.

    FAQ: Частые вопросы по подключению принтера

    Можно ли подключить принтер к Linux, если на Windows стоит пароль?

    Да, но потребуется указать логин и пароль от учётной записи Windows при добавлении принтера через Samba. Если аутентификация не проходит, проверьте:

    • Правильность введённых данных (регистр важен!).
    • Настройки политики безопасности Windows (возможно, требуется отключить Network Security: LAN Manager authentication level в gpedit.msc).
    • Наличие пользователя в группе Print Operators на Windows.
    Почему принтер печатает пустые страницы или иероглифы?

    Это типичная проблема несовместимости драйверов. Решения:

    1. Установите правильный .ppd-файл для вашей модели.
    2. Попробуйте другой протокол подключения (например, вместо Samba используйте IPP).
    3. Обновите прошивку принтера (инструкции на сайте производителя).

    Для принтеров HP часто помогает переустановка пакета hplip:

    sudo apt purge hplip && sudo apt install hplip
    Как подключить принтер к Linux через Wi-Fi?

    Если принтер поддерживает Wi-Fi Direct или подключён к той же сети, что и Linux:

    1. Найдите IP-адрес принтера (через роутер или меню принтера).
    2. Добавьте принтер в CUPS по протоколу ipp:// или socket:// (см. таблицу в разделе 4).
    3. Выберите драйвер из списка или загрузите его с сайта производителя.

    Для принтеров Canon может потребоваться установка утилиты scangearmp2 для сканирования.

    Можно ли печатать с Linux на принтер, подключённый к Windows через USB-хаб?

    Да, но с оговорками:

    • USB-хаб должен быть самостоятельно питаемым (с блоком питания), иначе принтер может отключаться.
    • На Windows принтер должен быть включён в общий доступ (как описано в разделе 1).
    • В Linux используйте подключение через Samba (см. раздел 2).

    Если принтер не определяется, попробуйте подключить его напрямую к USB-порту Windows (без хаба).

    Как печатать с Linux на принтер, подключённый к Windows 7?

    Процесс аналогичен описанному в статье, но есть нюансы:

    • В Windows 7 может потребоваться вручную включить протокол SMB1 (небезопасно, но иногда необходимо для старых принтеров).
    • Обновите Samba на Linux до последней версии для совместимости:
    • sudo apt update && sudo apt upgrade samba
    • Если принтер старый (например, HP LaserJet 1020), используйте драйвер foo2zjs:
    • sudo apt install printer-driver-foo2zjs