よりすすんだ内容 ― Raspbianの設定
unbrickには、つぎのようなデバイスがくみこまれています。
- タッチパネルつきの5インチ液晶ディスプレイ
- マウスのかわりになるアナログスティックとボタン
- オーディオDAC
- カレンダー時計
これらのデバイスを有効にするには、Raspbianに追加で設定をする必要があります。
※ unbrick用に設定したRaspbianを書きこみずみのマイクロSDカードをエスリルから購入することもできます。 以下の手順は、じぶんでSDカードにRaspbianをインストールするばあいに必要になる手順です。
unbrickのデバイスドライバーのインストール
unbrickでは、つぎのようなデバイスドライバーのインストールが必要になります。
- eub_mobo (マザーボードのマルチファンクションデバイスドライバー)
- eub_touch (液晶タッチパネルのデバイスドライバー)
- eub_backlight (液晶バックライトのデバイスドライバー)
- eub_power (電源ボードのマルチファンクションデバイスドライバー)
- eub_battery (電源および電池の状態を監視するデバイスドライバー)
- eub_mouse (アナログスティックのデバイスドライバー)
- eub_dac (オーディオDACのデバイスドライバー)
- eub_i2c (I2Cブリッジのデバイスドライバー)
インストール手順
デバイスドライバーとユーティリティーは、ソースコードをGitHubから公開しています。
1. Raspbian Stretch with desktop imageをダウンロードする
https://www.raspberrypi.org/downloads/raspbian/ からRaspbian Stretch with desktopをダウンロードします。
2. RaspbianのイメージをSDカードにかきこむ
かきこみは、Etcherをつかうとかんたんです。
3. cmdline.txtとconfig.txtをSDカードにコピーする
unbrick/boot/cmdline.txtとunbrick/boot/config.txtを、SDカードの/bootパーティションにコピーします。
- unbrick/boot/cmdline.txtは、シリアルコンソールを無効にします。unbrickのシリアルポートは、内部でマイコンとつながっています。
- unbrick/boot/config.txtは、液晶画面やunbrickの内蔵デバイスを有効にします。
4. unbrickを起動する
unbrickに、SDカードをさしこみ、キーボード、マウス、ネットワークアダプターをつなげます。 準備ができたら、unbrickを起動します。 起動後、ネットワークアダプターの設定をしてください。
5. unbrickディレクトリーをホームディレクトリーにコピーする
ターミナルをひらきます。
unbrickディレクトリーを/home/pi/unbrickにコピーします。
$ cd
$ git clone https://github.com/esrille/unbrick.git
※ Linuxをつかっていれば、手順3で、unbrickディレクトリーをSDカードの/rootfs/home/pi/unbrickにコピーしておくこともできます。
6. デバイスドライバーとユーティリティーをインストールする
つぎのコマンドを実行します。
$ cd unbrick
$ ./install.sh
install.shが完了したら、unbrickを再起動します。再起動後、アナログスティックやタッチスクリーンなどがつかえるようになります。
※ unbrick用のデバイスドライバーは、LinuxのDynamic Kernel Module Support(DKMS)をつかって管理しています。 Linuxカーネル内部のインターフェイスに変更がなければ、カーネルのアップデートに自動的に対応していきます。
/boot/config.txtの設定
液晶ディスプレイ
Raspbianの標準のオーバーレイ(dpi24)を指定して液晶ディスプレイを有効にします。
/boot/config.txt
dtoverlay=dpi24
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0
framebuffer_width=800
framebuffer_height=480
framebuffer_depth=24
enable_dpi_lcd=1
display_default_lcd=1
dpi_group=2
dpi_mode=87
dpi_output_format=475175
hdmi_timings=800 0 40 48 88 480 0 13 3 32 0 0 0 60 0 32000000 6
display_lcd_rotate=2
参考: DPI (Parallel Display Interface)
I2C ブリッジ
unbrickのI2CポートはRaspberry Piとはべつのマイコンにつながっています。 Raspberry PiとマイコンはUARTで接続しています。 このUARTをつかったI2Cブリッジの設定をします。
⚠︎ Raspberry PiのI2Cはクロックストレッチングをサポートしていません。 そのため、unbrickではこのような構成をとっています。
/boot/config.txt
dtoverlay=uart0,txd0_pin=32,rxd0_pin=33,pin_func=7
enable_uart=1
dtoverlay=eub_i2c
I2Cブリッジは、つぎのsystemdサービスといっしょにうごいています。
- /etc/systemd/system/eub-i2c.service
マザーボード マルチファンクション デバイス
unbrickのマザーボード上のデバイスをまとめて有効にします。 液晶ディスプレイのバックライトのあかるさを調整したり、タッチパネルを使用できるようになります。
/boot/config.txt
dtoverlay=eub_mobo
タッチパネルのキャリブレーションは、つぎのファイルのTransformationMatrixで指定しています。
- /usr/share/X11/xorg.conf.d/95-eub_touch.conf
電源ボード マルチファンクション デバイス
unbrickの電源ボード上のデバイスをまとめて有効にします。 電池残量を監視したり、アナログスティックをマウスとして使用したりできるようになります。
/boot/config.txt
dtoverlay=eub_power
※ 表示される乾電池残量は、スタンダードなニッケル水素2次電池を使用したばあいのめやすです。 じっさいの乾電池の残量とはかならずしも一致しません。
※ アナログスティックはunbrick内部では電源ボードにつながっています。
電源ボードは、つぎのsystemdサービスをつかいます。 eub-poweroffは、Raspbianが電源off状態にはいったあと主電源をきるためのサービスです。
- /etc/systemd/system/eub-poweroff.service
RTC (カレンダークロック)
unbrickのRTCボードにI2Cブリッジでアクセスできるようにします。 デバイス ドライバーはRaspbianの標準のドライバーをつかっています。 オーバーレイ ファイル(eub_rtc)のみunbrick専用のものになります。
/boot/config.txt
dtoverlay=eub_rtc
RTCのよみこみは、つぎのファイルで設定しています。
- /etc/udev/rules.d/85-hwclock.rules
オーディオDAC
unbrickのサウンド ボード上のオーディオDACを有効にします。
/boot/config.txt
dtoverlay=i2s-gpio28-31
dtoverlay=dtoverlay=eub_dac