Поиск по сайту:

Как поделиться своим USB-устройством в Ubuntu 24.04 через локальную сеть

В этом руководстве показано, как предоставить общий доступ к вашему USB-устройству, например USB-мыши/клавиатуре, USB-накопителю, веб-камере и динамику, в Ubuntu, чтобы вы могли получить удаленный доступ с других компьютеров/ноутбуков.

Ядро Linux включает инструмент командной строки под названием USB/IP, позволяющий совместно использовать USB-устройства между компьютерами с их полной функциональностью. Таким образом, компьютер может использовать удаленные USB-устройства, как если бы они были подключены напрямую.

Если вы просто хотите использовать USB-мышь и клавиатуру между компьютерами, то Barrier — хороший выбор. Но это руководство покажет вам, как это сделать для веб-камеры, USB-накопителя, принтера (с его помощью обычно есть возможность выполнить задание) и других обычных USB-устройств.

Шаг 1. Установите инструмент ядра USB/IP.

Прежде всего, нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть окно терминала.

Когда терминал откроется, выполните команду, чтобы установить инструменты ядра Linux:

sudo apt install linux-tools-$(uname -r)

Эта команда устанавливает инструменты ядра для текущей версии ядра. Поскольку Ubuntu регулярно обновляет свое ядро, вам может потребоваться повторно запустить эту команду для более новых ядер.

Шаг 2. Совместное использование USB-устройств во время выполнения

Если вы просто хотите опробовать этот метод, который работает до перезагрузки или до отключения вручную, выполните приведенные ниже команды одну за другой.

1. Сначала загрузите модули ядра USB/IP. На главном компьютере с подключенными USB-устройствами необходимо сначала загрузить модули ядра usbip_core и usbip_host.

Для этого откройте терминал (Ctrl+Alt+T) и выполните команду:

sudo modprobe usbip_core
sudo modprobe usbip_host

2. Затем запустите демон. Существует команда usbipd для запуска демона сервера, который по умолчанию прослушивает TCP-порт 3240.

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

usbipd &

Если порт 3240 используется или вы хотите прослушивать другой порт, используйте вместо него usbipd --tcp-port 1234 & (замените номер 1234).

3. Затем распечатайте все USB-устройства на компьютере, чтобы получить такую информацию, как идентификатор шины, идентификатор поставщика и идентификатор продукта.

usbip list -l

В выводе вам необходимо запомнить идентификатор шины (обычно 1-1, 1-2, …) USB-устройства, к которому вы хотите предоставить общий доступ.

Наконец, привяжите USB-устройство, чтобы к нему нельзя было получить удаленный доступ (замените идентификатор шины 1-1 на свой).

sudo usbip bind -b 1-1

Должно появиться что-то вроде «привязать устройство к ***: завершено». Однако для USB-клавиатуры/мыши, если вы перемещаете или используете устройства на хосте перед удаленным подключением, привязка может завершиться неудачно.

И, чтобы прекратить общий доступ к USB-устройству, используйте команду:

sudo usbip unbind -b 1-1

Шаг 3. Доступ к USB-устройству с удаленного компьютера

На клиентских машинах вам также необходимо установить инструмент USB/IP. См. шаг 1 для Linux и перейдите на эту страницу для Windows (не проверялось).

Затем вам необходимо загрузить модуль ядра vhci_hcd, выполнив команду:

sudo modprobe vhci_hcd

Наконец, перечислите доступные удаленные USB-устройства:

sudo usbip list -r 192.168.0.104

И подключите удаленный USB с помощью команды:

sudo usbip attach -r 192.168.0.104 -b 1-1

Здесь замените 192.168.0.104 на IP-адрес вашего хоста и замените 1-1 в соответствии с тем, какой идентификатор шины вы поделились. Если все пойдет хорошо, теперь вы сможете использовать удаленное USB-устройство так же, как оно подключено напрямую.

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

sudo usbip port

Затем запустите команду для отсоединения (замените 00 в соответствии с выводом последней команды).

sudo usbip detach -p 00

Включить общий доступ к USB-устройствам при запуске

Если предыдущие шаги работают хорошо и вы хотите сделать его постоянным, вы можете написать правила для автоматической загрузки модулей ядра, автоматического запуска демона и автоматической привязки USB-устройства.

ПРИМЕЧАНИЕ. В приведенных ниже шагах я буду использовать gnome-text-editor (Gnome Default) для создания и редактирования файла конфигурации. Вы можете заменить его на gedit для версии 22.04 и более ранних, коврик для мыши для рабочего стола XFCE или текстовый редактор nano (Ctrl+S для сохранения, Ctrl+ X для выхода), который работает в большинстве сред рабочего стола.

1. Сначала автоматически загрузите модули ядра при загрузке системы, создав собственный файл конфигурации с помощью команды (Ctrl+Alt+T):

sudo gnome-text-editor /etc/modules-load.d/usbip.conf

Когда файл откроется, просто добавьте две строки ниже и сохраните:

usbip_core
usbip_host

2. Затем автоматически запустите демон usbipd, создав службу systemd с помощью команды:

sudo gnome-text-editor /etc/systemd/system/usbipd.service

Когда файл откроется, добавьте строки ниже и сохраните:

[Unit]
Description=USB/IP server
After=network.target

[Service]
ExecStart=/usr/bin/usbipd

[Install]
WantedBy=multi-user.target

Наконец, запустите команду, чтобы включить и запустить службу:

sudo systemctl enable --now usbipd.service

ПРИМЕЧАНИЕ. Служба может не запуститься до перезагрузки системы, поскольку демон уже запущен на шаге 2–2.

3. Наконец, создайте службу для автоматической привязки USB-устройства, которым вы хотите поделиться. Для этого выполните команду:

sudo gnome-text-editor /etc/systemd/system/[email 

Когда файл откроется, добавьте строки ниже и сохраните.

[Unit]
Description=USB-IP Binding on bus id %I
After=network-online.target usbipd.service
Wants=network-online.target
Requires=usbipd.service
#DefaultInstance=1-1

[Service]
Type=simple
ExecStart=/usr/bin/usbip bind -b %i
RemainAfterExit=yes
ExecStop=/usr/bin/usbip unbind -b %i  
Restart=on-failure

[Install]
WantedBy=multi-user.target

Далее вам нужно запустить команду для включения и запуска службы:

sudo systemctl enable --now [email 

В этой команде замените 1-1 в соответствии с идентификатором шины USB-устройства, к которому вы хотите предоставить общий доступ.

Когда закончите, перезагрузите компьютер и попробуйте подключиться с удаленного компьютера.

Отменить :

Чтобы отменить последний шаг, сначала откройте терминал (Ctrl+Alt+T) и выполните команду для отключения служб (также замените 1-1 соответственно):

sudo systemctl disable --now [email 
sudo systemctl disable --now usbipd.service

Затем удалите 3 файла конфигурации, хотя служебные файлы не будут работать, пока вы их повторно не включите:

sudo rm /etc/systemd/system/[email 
sudo rm /etc/systemd/system/usbipd.service
sudo rm /etc/modules-load.d/usbip.conf

Статьи по данной тематике