「Amazonにはびこる劣悪USBハブにうんざりした」という理由で開発されたRaspberry Pi公式USBハブを分解してみた、かなり頑丈な作り&ホスト不要で充電も可能
2024年11月7日(木)にRaspberry Pi公式USBハブ「Raspberry Pi USB 3 Hub」が登場しました。Raspberry Pi USB 3 Hubは「市場には高品質かつ高価格なUSBハブか、低品質かつ低価格なUSBハブしかなく、特にAmazonでは粗悪品が良品を追い出す状況に陥っている」という状況に不満を持った開発チームによって設計されており、価格を12ドル(約1800円)に抑えつつ高品質な製品に仕上がっているとのこと。GIGAZINE編集部に実物が届いたので、実際に分解して品質をチェックしてみました。
https://www.raspberrypi.com/products/usb-3-hub/
Raspberry Pi USB 3 Hub on sale now at $12 - Raspberry Pi
https://www.raspberrypi.com/news/raspberry-pi-usb-3-hub-on-sale-now-at-12/
・目次
◆1:外観&搭載ポートチェック
◆2:分解して細部をチェック
◆3:充電アダプタとしても使える
◆4:異なるUSB規格を混在させられる
◆5:デバイスの詳細情報
◆1:外観&搭載ポートチェック
Raspberry Pi USB 3 Hubのパッケージはこんな感じ。
これがRaspberry Pi USB 3 Hubです。PCやRaspberry PiとはUSB Tye-Aで接続します。
ハブ部分にはRaspberry Piのロゴが彫られています。
裏面には各種認証マーク。
側面にはUSB 3.0対応のType-Aポートを搭載しています。
反対側にもUSB 3.0対応のType-Aポートを搭載。Type-Aポートの数は合計4個です。
ケーブルの隣には充電アダプタとして使用する際の給電用USB Type-Cポートを搭載。
残り1つの面には何も搭載されていません。
◆2:分解して細部をチェック
ロゴが彫られた面がフタになっており、フタの隙間から細いマイナスドライバーなどをねじ込めばパカッと外れます。
フタのツメはH型で折れにくい構造。フタの開け閉めを何度か繰り返しましたが、ツメが折れる気配はありません。
また、ケース内側の赤枠で囲った部分にY型の突起が設けられており、「基板が表裏逆になる」というミスを防止できるようになっていました。
基板とケースはネジや接着剤で固定されておらず、簡単に外せました。
ケーブルも接着剤などで固定されておらず、簡単に外せます。簡単に外せるといってもコネクタの固定力は十分なので、普通に使っている間にケーブルが抜けることはなさげ。
基板はこんな感じ。
USBコントローラーはインフィニオンの「CYUSB3304-68LTXC」です。
これはEEPROM。
一般的にUSB Type-Aポートは根元の2カ所で固定されていますが、Raspberry Pi USB 3 Hubは6カ所でガッチリ固定しています。
USB Type-Cポートも4カ所で固定。安価なUSBハブだと「USBケーブルを抜く際にポートごとすっぽ抜ける」というアクシデントがまれに発生しますが、Raspberry Pi USB 3 Hubでは大丈夫そうです。
基板の裏面はこんな感じ。
◆3:充電アダプタとしても使える
Raspberry Pi USB 3 HubはUSB Type-Cポートから給電してUSB充電アダプタとして使うこともできます。なお、コントローラーのデータシートによるとホスト不要での充電はインフィニオン独自機能の「Ghost Charge」で実現しているそうです。
Type-Aコネクタ経由で電力を供給することもできます。
USB PDに対応していないデバイスの中には「USB PD対応電源アダプタから電力を引き出せない」という問題を抱えたもの存在しますが、Raspberry Pi USB 3 HubはUSB PD対応アダプタからでも電力を引き出せました。
USBテスター「Power-Z KM003C」で確認してみたところ、Apple 2.4Aでトリガーしていました。
◆4:異なるUSB規格を混在させられる
USBハブの中には「USB規格の異なるデバイスを複数接続した場合、全デバイスの最大速度を遅い方の規格にそろえる」という仕様のものも存在しています。この仕様の場合、「USB 1.1対応のマウスとUSB 3.0のUSBメモリを接続した場合、USBメモリの速度が遅くなる」といった問題が発生します。Raspberry Pi USB 3 Hubは問題なく異なる規格を混在させられます。
試しに、USB 3.2 Gen1対応のUSBメモリとUSB 1.1対応のマウスを接続してみます。
USBの接続状況を確認するために、以下のコマンドを実行。
lsusb -t
結果はこんな感じ。USBメモリが5000M(USB 3.0)でつながり、マウスが1.5M(USB 1.1)でつながっています。
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
|__ Port 1: Dev 7, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 8, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
|__ Port 1: Dev 14, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 16, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
また、USBRaspberry Pi USB 3 HubはMultiple Transaction Translator(MTT)に対応しており、異なるUSB規格のデバイスが混在した際の速度低下を抑えられます。
◆5:デバイスの詳細情報
Linuxでは、以下のコマンドでUSBデバイスの詳細情報を出力できます。
lsusb -v
出力からRaspberry Pi USB 3 Hubに関する情報を抜き出したものが以下。ポートごとの給電をオン・オフできる「per-port power switching(PPPS)」には対応していないことが分かります。ほかにも色んな情報が含まれているので、何かの参考にしてください。
Bus 004 Device 007: ID 2e8a:000e Raspberry Pi USB3 HUB
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 9 Hub
bDeviceSubClass 0
bDeviceProtocol 3
bMaxPacketSize0 9
idVendor 0x2e8a
idProduct 0x000e
bcdDevice 50.00
iManufacturer 1 Raspberry Pi
iProduct 2 USB3 HUB
iSerial 3 000TESTING
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x001f
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 19
Transfer Type Interrupt
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 8
bMaxBurst 0
Hub Descriptor:
bLength 12
bDescriptorType 42
nNbrPorts 4
wHubCharacteristic 0x0000
Ganged power switching
Ganged overcurrent protection
bPwrOn2PwrGood 50 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
bHubDecLat 0.3 micro seconds
wHubDelay 1507 nano seconds
DeviceRemovable 0x00
Hub Port Status:
Port 1: 0000.02a0 5Gbps power Rx.Detect
Port 2: 0000.02a0 5Gbps power Rx.Detect
Port 3: 0000.02a0 5Gbps power Rx.Detect
Port 4: 0000.02a0 5Gbps power Rx.Detect
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x002a
bNumDeviceCaps 3
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
HIRD Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {1ea02fa3-2332-4d85-a8ba-d730139dbb30}
Device Status: 0x000d
Self Powered
U1 Enabled
U2 Enabled
Bus 003 Device 014: ID 2e8a:000d Raspberry Pi USB3 HUB
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
bDeviceClass 9 Hub
bDeviceSubClass 0
bDeviceProtocol 2 TT per port
bMaxPacketSize0 64
idVendor 0x2e8a
idProduct 0x000d
bcdDevice 50.00
iManufacturer 1 Raspberry Pi
iProduct 2 USB3 HUB
iSerial 3 000TESTING
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0029
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0
bInterfaceProtocol 1 Single TT
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
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0
bInterfaceProtocol 2 TT per port
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
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 4
wHubCharacteristic 0x0000
Ganged power switching
Ganged overcurrent protection
TT think time 8 FS bits
bPwrOn2PwrGood 50 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Port 3: 0000.0100 power
Port 4: 0000.0100 power
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x002a
bNumDeviceCaps 3
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000006
BESL Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {1ea02fa3-2332-4d85-a8ba-d730139dbb30}
Device Status: 0x0001
Self Powered