Usb over ip: Difference between revisions

From Linux Wiki
Jump to navigation Jump to search
Line 81: Line 81:
===== Adaugare dispozitive USB server =====
===== Adaugare dispozitive USB server =====
Din acest moment dispozitivele USB pot fi adaugate in porturile USB ale serverului sau masinii virtuale.
Din acest moment dispozitivele USB pot fi adaugate in porturile USB ale serverului sau masinii virtuale.
Mai jos este prezentat modul in care se face passtrue dispozitivelor USB catre o masina virtuala intr-un hypervisor Proxmox VM
Mai jos este prezentat modul in care se face passtrue dispozitivelor USB catre o masina virtuala intr-un hypervisor Proxmox VM



Revision as of 15:29, 14 April 2024

Configurare USB over IP Server pe Ubuntu 2X.04 LTS

Intr-un mediu enterprise in care se lucreaza cu foarte multe stiick-uri USB este nevoie ca acestea sa fie plasate intr-un mediu centralizat la care intreaga infrastuctura sa aiba acces. Prin intermediul USBIP stick-urile pot fi plasate intr-o singura locatie indiferent daca acestea sunt stick-uri de stocare, certificate SSL, semnaturi digitale, YubiKey-uri sau modem 4G/5G.

Instalare usbip

USBIP face parte in Ubuntu 2X.44 din luita de tool-uri linux-tools-generic. Pentru instalare se executa in consola:

# apt install linux-tools-generic

Se verifica daca kernelul are modulele disponibile:

# lsmod | grep usbip

...in unele situatii fiind necesara instalarea unor pachete specifice:

# apt install linux-tools-5.15.0-43-generic linux-cloud-tools-5.15.0-43-generic

Startup usbip

Pentru ca aplicatia sa porneasca la odata cu systemului de operare se creeaza un fisier de startup un systemctl

  • nano /etc/systemd/system/usbipd.service

[Unit] Description=USB/IP Host Service After=network.target [Service] ExecStart=/usr/bin/usbipd -D ExecStop=/usr/bin/usbip --tcp-port 3240 --log Restart=on-failure User=root Type=forking StartLimitBurst=5 StartLimitIntervalSec=10 [Install] WantedBy=multi-user.target

Dupa creerea serviciului se executa:

# systemctl enable --now usbipd.service # systemctl status usbipd.service usbipd.service - USB/IP Host Service Loaded: loaded (/etc/systemd/system/usbipd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2024-04-12 18:03:02 EEST; 25min ago Process: 696 ExecStart=/usr/bin/usbipd -D (code=exited, status=0/SUCCESS) Main PID: 728 (usbipd) Tasks: 1 (limit: 2220) Memory: 800.0K CPU: 18ms

Module usbip

USBIP are nevoie de 3 module dintre care doua de USB/IP si unul de virtual host controller

# modprobe usbip_core # modprobe usbip_host # modprobe vhci_hcd

Pentru ca aceste module sa fie activate la startup-ul de OS se adauga in lista de module incarcabile:

  • nano nano /etc/modules-load.d/modules.conf

usbip_core usbip_host vhci_hcd

Adaugare dispozitive USB server

Din acest moment dispozitivele USB pot fi adaugate in porturile USB ale serverului sau masinii virtuale.

Mai jos este prezentat modul in care se face passtrue dispozitivelor USB catre o masina virtuala intr-un hypervisor Proxmox VM

Dupa ce dispozitivele USB sunt adaugate fizis se trece la atasarea acestora in server:

Listare dispozitive USB

Listam dispozitivele USB atasate cu comanda lsusb:

# lsusb Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 002 Device 005: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive Bus 002 Device 002: ID 13fe:4200 Kingston Technology Company Inc. Platinum USB drive mini

Pentru a vedea ce dispozitive pot fi parsate de catre aplicatie rulam:

# usbip list -p -l busid=2-2#usbid=13fe:4200# busid=2-4#usbid=090c:1000#

Atasarea dispozitive USB

Pentru a afla BUSID-ul fiecatui dispozitiv asa cum este inregistrat de usbip rulam:

# usbip list -l - busid 2-2 (13fe:4200) Kingston Technology Company Inc. : Platinum USB drive mini (13fe:4200) - busid 2-4 (090c:1000) Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000) Vom atasa serverului cele doua dispozitive listate anterior:

# usbip bind -b 2-2 usbip: info: bind device on busid 2-2: complete # usbip bind -b 2-4 usbip: info: bind device on busid 2-4: complete

Atasarea dispozitive USB la pornirea OS

Pentru binding-ul dispozitivelor USB la pornirea de OS se ceeaza cate un serviciu de sistemd pentru fiecare dispozitiv in parte:

  • /etc/systemd/system/usbip_bus22.service

[Unit] Description=USB-IP Device Binding BUS 2-2 After=network-online.target Wants=network-online.target Requires=usbipd.service [Service] Type=oneshot ExecStart=/usr/bin/usbip bind --busid 2-2 [Install] WantedBy=multi-user.target # systemctl enable usbip_bus22.service

* Requires=usbipd.service este adaugat pentru ca bind-ul sa fie facut dupa ponirea aplicatiei de usbip

* Type=oneshot bind-ul este o actiune de se executa o singura data. Ne fiind un serviciu in sine systemctl status usbip_bus22.service va arata serviciul ca dead dar actiunea de bind este indeplinita