mattintosh note

どこかのエンジニアモドキの備忘録

Raspberry Pi Zero に USB ハブを直結する

USB ハブ一体型 Raspberry Pi Zero を作ってみた。

USBハブ一体型Raspberry Pi Zeroの完成だよ! #raspberrypi #raspberrypizero #rpi

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

先日、会社の先輩に Raspberry Pi Zero を頂いた。生で見るのはこれが初めて。

「色々遊んで成果を見せて欲しい」とのこと。

まずは普通にいつもの Arch Linux ARM が使える状態にする。Zero は 1 Model B と同じなので ARMv6 用の Arch Linux ARM を使用する。microSD はいつも通り作成。これは問題無くクリア。

Model Bと同じなのでとりあえずArch Linux ARMの起動は問題なさげ

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

さて、次はネットワークへの接続だが、そもそも OTG ケーブルやら変換ケーブルを買ってきていない。

事前に調べていた通りの情報が正しければ、Zero の裏面のテストポイントから USB ハブを直結出来るはず。とりあえず安物 USB ハブを買ってきて分解。

USBハブを分解。さて、何をするでしょう?

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

Zero からハブに接続するための線を用意する。

こんな感じで結線

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

Zero と USB ハブを接続する。

で、こうして

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

Wi-Fi アダプタと Bluetooth アダプタを装着して起動。無事認識。

bluetoothもwi-fiもちゃんと認識したよ! #raspberrypizero #raspberrypi #rpi

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

普通の USB キーボードも使えるようになったので wpa_supplicant の設定を進める。ネットワークにも無事接続。

Wi-Fi接続まで完了! ちょっと電力不足感あるけど安物ハブだからだろうか…。

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

Raspberry Pi Zero に普通の USB ハブを直結してみて

ハブに接続したデバイスはすべて認識したのだが、実は大きな問題があった。USB のモードが High Speed だと Wi-Fi アダプタは動くが、Bluetooth アダプタとキーボードなどの Low Speed デバイスが正しく動かない。

Bluetooth は認識しているものの TX timeout が発生するためデバイスを起動できない。運良く起動できたことがあり、Bluetooth スピーカーへの接続を試みたが音が飛び飛びになる。調べてみたところ、Raspberry Pi に USB DAC を接続した場合に似たようなことが起こるようだ。

これが dwc_otg が問題なのか、買ってきた安物ハブが問題なのかは今のところ不明。

/boot/cmdline.txt に以下の記述を追加して強制的に Low Speed に切り替えたところすべてのデバイスを正しく認識した。

dwc_otg.speed=1

次に、mpv のハードウェアデコーディングの問題。

Arch Linux ARM 公式では未だに --vo=rpi に対応していないので自前でコンパイル。以下の変数をエクスポートしておく。

CFLAGS="-I/opt/vc/include"
LDFLAGS="-L/opt/vc/lib -lbrcmEGL -lbrcmGLESv2"
PKG_CONFIG_PATH=/opt/vc/lib/pkgconfig

で、--vo=rpi が使えるようになったので HD 動画を再生してみたがまともに再生できない。ソフトウェアデコードと同等だろうか。Raspberry Pi 3 なら問題なく再生できるのに。

omxplayer で試してみたところきっちり 1080p@30fps で再生できた。Bluetooth スピーカーを使って再生させる場合は alsa -> pulseaudio で接続する。HDMI と同期が取れていないようなので -z も必要。

$ omxplayer -o alsa -z video.mp4
Video codec omx-h264 width 1920 height 1080 profile 100 fps 30.000000
Error: Unable to open font
Audio codec aac channels 2 samplerate 44100 bitspersample 16
Subtitle count: 0, state: off, index: 1, delay: 0
V:PortSettingsChanged: 1920x1080@30.00 interlace:0 deinterlace:0 anaglyph:0 par:1.00 display:0 layer:0 alpha:255 aspectMode:0

Raspberry Pi Zero & Bluetoothで1080p動画の再生に成功 #raspberrypi #raspberrypizero

Makoto Yoshidaさん(@mattintosh4)が投稿した写真 -

どうやら mpv は OMX ではなく MMAL を使っているっぽいのでハードウェアデコーダーの性能をフルに使えていないらしい?ていうか Raspberry Pi 1 Model B の頃からこのレベルで再生出来ていたのか…。全然有効活用してなかったな。

とりあえず SambaDLNA も使えるようにしてスマホから動画を呼び出せるようにしたけど USB はやっぱり 2.0 で使いたいな…。もう少しまともなハブを買ってみるか…。