RPi + USB hub

Nemrég kezdtem el Raspberry Pi-vel vacakolni, kevés még a tapasztalatom.

Következő kérdés merült fel: a Raspberry Pi tud USB hub-okkal működni? Kell valami speciális dolog hozzá?

Van egy Pi Zero-m, ezen két micro USB csatlakozó van, az egyik a tápnak, a másik a perifériáknak.

Vettem egy USB hub-ot, hogy több eszközt is lehessen csatlakoztatni. Az már korábban feltűnt, hogy a TV vevő nem működött a hub-ra dugva, direktben bedugva viszont igen.

Ma viszont szerettem volna egeret és billentyűzetet használni, és azt tapasztaltam, hogy ha az USB hub-on keresztül csatlakoztatom bármelyiket egymagában, nem megy. Az egér hasán a piros fény nem gyullad fel. A billentyűzet power led-je ég, de hiába gépelek, nem történik semmi, caps lock nem gyújtja fel a caps lock ledet.
Ha hub nélül csatlakoztatom az egyiket vagy a másikat, akkor működnek. Egér hasa világít, billentyűzeten a power led ugyanúgy ég, de ha gépelek, észleli a Pi a lenyomott billentyűket. Caps lock led is világít, ha kell.

Maga az USB hub egyébként nem tűnik rossznak, ha a laptopra csatlakoztatom, akkor mind a billentyűzet mind az egér működik.

Mi lehet a gond? Nem ad elég áramot a Pi USB portja? Az USB hub valamire elhasznál egy jelentős mennyiséget és nem marad elég az eszközöknek, amit a laptop tud kompenzálni, de az RPi nem?
Egyszerre szeretnék legalább 2, de néha 3 eszközt használni. Nyugtassatok meg, hogy ez nem lehetetlen!

Hozzászólások

Szintén Zero-nál én belefutottam abba, hogy passzív hub esetén nem ment egyszerre az usb-s wifi és és a bill.
--
Én TUDOM, hogy igazam van. És ha nincs is, akkor is NEKEM van igazam, mert én vagyok az Admin. Ennyi!

Olyan USB HUb kell, aminek van önálló tápja.

Ugye a hubot az usb portba dugod és nem az usb alakú tápbementre? Az egyik igazi usb port.
Amennyire tudom a zero esetén simán össze van kötve a betáp és az usb táp része, szóval megfelelő tápegysággel elképzelhető, hogy passzív hub is működik. Nem nagyon volt szó arról, hogy milyen tápegységgel használod.

Egy IKEA KOPPLA tápot használtam. Elméletileg ez elég áramot kéne adjon, a teszt alapján olyan 4A-t tudna kitolni, ha kéne.

De egy billentyűzetnek csak nem kell ennyi sok energia!

Mennyi lehet a hub miatti csökkenés (hub fogyasztása + veszteség)?

Ma már nem, de majd kipróbálom másik táppal is, nehogy ezen múljék.

Ha az usb portba dugod a hubot én nem kevered össze a táp porttal, akkor elvileg mennie kellene. A közepe felé eső az usb, mellé is van írva. Amásik táp, "pwr". Tápot bármelyikről fel tud venni, szóval ha fordítva dugod be őket, akkor elindul csak természetesen a hub adatlábak nélkül nem tud működni a pwr csatlakozón. Közben látom a másik kommentet a dmesg kimenettel.

Az okostöltők nem feltétlen adnak sok áramot, ha a buta pi-re van kötve. Sajna a pi-n nincs a tápcsatlakozón a microusb adatlábán ellenállás mátrix, amiből a töltő tudná, hogy több ampert is adhat neki, így előfordulhat, hogy esetleg csak fél ampert ad, ha túl okos.

https://youtu.be/uRe9w5PKmsE?t=8m41s
Nem kapja meg direktben az 5V-ot a csati, hanem kulon kell "kernie", ha nagyobb aramot akar. Tudtommal a rpi-ben nincs ehhez intelligens chip, a tapcsatin csak az 5V es GND van bekotve.
Egyebkent nagyon korrekt kapcsolouzemu tap.

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald

no igen, nem is értem, hogy nem készült még ellenálásos okosító toldalék a pi-hez, ha már nem integrálták rájuk.

https://www.raspberrypi.org/forums/viewtopic.php?t=104781&p=725828

Had a little time on my hands and tested the IKEA KOPPLA 3-usb-port charger max 2.4Amps per port 3.4Amp Total, mentioned in my first post, with my Kyoritsu model 1009 Multimeter. It's a smart charger. Measuring exactly 5.0Volts on each port and 444mAmps (there might be a little loss because of the length of the cable I used), so to access the upper 1Amp, 2Amp or 2.4Amp modes you need to connect the D+, D- ports with the required voltages.

Szóval valsz csak az usb szabvány szerinti fél ampert hajlandó adni a pi-nek.

Persze a konkrét topicnál maga a hub volt a probléma. Csak később esetleg kevés lehet, ha komolyabb dolog is rá lenne kötve.

Neten keresgélés során három érdekes infót találtam.

Az egyik:

you need an active hub or a hub with it's own IC controller, powered vs non-powered is irreverent.
Some USB hubs simple duplicate the signal basically giving the upstream USB controller more ports. Others add a USB controller IC, ie actually register as another USB device with the upstream controller. Since the zero can only support one physical port with it's onboard USB controller IC, a hub without it's own IC controller will not work.

Ez jó nyomnak tűnik elsőre, főleg, mert míg a legtöbb embernek az az első reakciója, hogy elektromosan megtáplált USB hub-ot tessék használni, addig többen írták, hogy nekik külső táplálás nélkül is megy jól.

Viszont nem tudom, hogy jelenik meg (ha egyáltalán) az az usb hub, aminek nincs IC-je, de szerintem az enyémnek valószínű van:


[Dec21 22:31] usb 2-1.4: new full-speed USB device number 4 using ehci-pci
[  +0.110517] usb 2-1.4: New USB device found, idVendor=0a05, idProduct=7211
[  +0.000005] usb 2-1.4: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[  +0.000002] usb 2-1.4: Product: USB2.0 HUB
[  +0.000527] hub 2-1.4:1.0: USB hub found
[  +0.000176] hub 2-1.4:1.0: 4 ports detected

Gondolom, ha nem lenne IC, akkor nem mondaná azt, hogy új eszközt találtam, meg nem lenne vendor és product ID.


root@hawk:~# lsusb
Bus 002 Device 005: ID 0a05:7211 Unknown Manufacturer hub

Nem tudom, sajnos, hogy nézne ki az egyik vagy a másik fajta.

Második téma:
- van, ahol azt írják, hogy ha külsőleg táplált HUB-ot használ az ember, akkor ne adjon külön tápot a Pi-nek, mert majd a HUB-tól kap. És a két táplálás összeakad.
- Van olyan oldal, ahol kifejezetten olyan Pi-hez készített hub-ot kínálnak, amiből a Pi felé nem megy visszatáplálás, és nem is jön. A rá kötött eszközök csak a hub tápjából kapják a kakaót.

Ez érdekes, de számomra kevéssé releváns, mert én nem akarok külsőleg táplált HUB-ot.

Harmadik info:
RPi Zero-nak gondja van az USB3-as hubokkal, ha jól értettem, csak egy eszközt tud kezelni, valahogy a portok enumerációja nem megy. Le van írva részletesen, de mivel nekem USB2-es hubom van, ezért ez nem érintett.
Csak, gondoltam, ide írom, mert érdekes info. Szerintem érdekes, na.

Nálam egy olyan négyportos HUB van használatban, amelyiknek az egyik portján "gyárilag", beépítve lóg egy Fast Ethernet Adapter.
Próbaképpen beledugtam még két eszközt, és így sincs vele gondom. Egy nem eredeti Samsung töltőről megy a Zero W, amelyikkel már próbáltam a lényegesen nagyobb fogyasztású RPi 1-est is hajtani, ahhoz is elég volt.


Bus 001 Device 006: ID 13fe:3e00 Kingston Technology Company Inc. Flash Drive
Bus 001 Device 005: ID 1bcf:05c5 Sunplus Innovation Technology Inc. SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver]
Bus 001 Device 004: ID 0fe6:9700 Kontron (Industrial Computer Source / ICS Advent) DM9601 Fast Ethernet Adapter
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x1a40 Terminus Technology Inc.
idProduct 0x0101 4-Port HUB
bcdDevice 1.11
iManufacturer 0
iProduct 1
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12

Így van, nincs külön táplálva, bár van rajta bemenet ilyen célra.

Bootolás után a dmesg kimenetének erre az eszközre vonatkozó része:

[ 1.632402] usb 1-1: New USB device found, idVendor=1a40, idProduct=0101
[ 1.635315] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 1.637991] usb 1-1: Product: USB 2.0 Hub
[ 1.643187] hub 1-1:1.0: USB hub found
[ 1.646027] hub 1-1:1.0: 4 ports detected
[ 1.961229] usb 1-1.2: new full-speed USB device number 3 using dwc_otg
[ 2.093570] usb 1-1.2: New USB device found, idVendor=0fe6, idProduct=9700
[ 2.096303] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 2.098853] usb 1-1.2: Product: USB 2.0 10/100M Ethernet Adaptor

Google-ben rákeresve a hubod gyári adataira, "0a05:7211", mindenféle csúnyaságokat hoz ki.
A találatok közt
- malware lehet rajta, billentyű naplózó, https://www.raspberrypi.org/forums/viewtopic.php?t=27890&p=392358
- fake, valójában nem usb2.0 vagy csak a lassú módját tudja, https://ncrmnt.org/2013/05/27/again-fake-usb-2-0-hubs/
A dvb tunerek közül nem mindegyik hajlandó lassú módban működni, ezért nem ment esetleg vele.
- mindenféle más panasz...

szóval próbálj valami más hub-ot, mert ez az 1 dolláros kacat nem sok jóval kecsegtet.

Hát ha naplózza, azzal sokat nem ér :-)
Nincs hálózatra kötve a pi, és eddig egyébként is csak annyit látott volna, hogy python-ból a GPIO-t piszkálom :-D

Ingyen kaptam, de úgy látszik, kb. ennyit is ér.

Már rendeltem egy másikat, meglátjuk, azzal hogyan muzsikál majd.

szerk: Na most megnéztem a linket, és nincs is benne keylogger. Pont azt írja, hogy ezzel az ID-val regular firmware jön, nem keyloggeres, mint valami másik id-val.

Anno, a médiában az első, legolcsóbb hubot beraktam. Ment. Majd elvágtam az usb kábelt és maszekolva tettem rá külső áramforrást. Pi felé csak a 2 vezeték kell csak, és akkor nincs backpower. Ment így is. És igen, a hub külön USB eszközként jelent meg.

Gondolom ez azért fontos, mert a Pi zeron nincs rajta alapból USB hub chip, mint a többi normal pin, így kell neki egy.

Fejlemény:

Vettem egy AmazonBasics hubot. Nincs külső tápja, vidáman működik a Raspberry Pi Zero-val.

Szóval a hub volt a hunyó, és nem szükséges neki külső táplálás.

a zeronál mintha csak simán, közvetlenül rá lenne kötve a betáp az usb-re. Ha a hub sem okoz szűk keresztmetszetet, akkor kb csak a betáp teljesítményétől és a kábelektől függ, hogy mit bír el.

Az első generációs pi-k esetén a polyfuse-ok okoztak szűk keresztmetszetet a pi-ken. A B+ -tól fölfelé meg egy chippel okosították az usb tápot, de bemeneten akkor is ott a polyfuse. Szóval azoknál volt beépített szűk keresztmetszet. Lehet a nyákot nem úgy méretezték, hogy sok ampert átvigyen a board két vége közt.
A huboknál is lehet, hogy okosított az usb és szépen szabványosan külön kezeli a portok terhelhetőségét... csak ez nem jellemző a filléres fajtákra, ott is sokszor csak direkbe van kötve a táp, van hogy annyira nem foglalkoznak vele, hogy a saját tápját kiadja az usb bemenetén is (visszatáplálás).

Na, ezzel azt akarom mondani, hogy a faék egyszerűségű zérónál egy faék egyszerűségű hubbal lehet, hogy ésszerű határok közt elég csak egy megfelelően méretezett táp a pi-re. Itt csak arra érdemes még gondolni, hogy az okostápok nem feltétlen adják le a ráírt teljesítményt, ha a fogyasztó nem kommunikálja feléjük, hogy magasabb terhelést venne igénybe.

Ez azoknak szólt, akik fentebb azt írták, hogy azért nem megy az egyetlen billentyűzet a HUB-on át, mert külső táplálás kéne neki.

Szóval egészen addig, amíg ki nem próbáltam, és nem működött sikeresen, nem volt ez "persze".

Azoknak, akik a jövőben hasonló problémába futnak bele, és a legtöbb fórumon az első reakció az szokott lenni, mint ami itt is viszonylag hamar jött, hogy külső táp kell, azoknak is haszon lesz ez.

A tanulság az, hogy nem kell. Persze, biztos van egy csomó olyan eszköz, amihez kell külső táp, de ha egy hub nem viszi a billentyűzetet és az egeret, akkor esélyes, hogy nem a külső táp hiánya a gond, hanem a hub nem megy a pi-vel.