PomeraでDebianを動かすためイメージを全面的に作り直しました。
kernel3.10, Debian11などかなり古くなっていたところを全部入れ替え、起動処理が以前よりわかったので本体へのインストール不要でSDをさすだけで起動可能にしました。
そろそろRC2ぐらいにはなったか?と思うので、書き込んで電源を入れるだけでDebianが起動できるSDカード用イメージを公開します。
以前とどこが違うのかと、使う上での変更点は以下を参照してください。
主な変更点
- 本体無改造でのSD単体起動に変更
- kernelをLinux 6.18ベースに更新
- U-Bootを本家v2026.07をベースにカスタムしたものを使うように変更
- rootfsをDebian13(trixie)に変更
- 初回起動処理でユーザー名とパスワードを設定するように変更
- 各種便利スクリプトを整理して、置き場所も/opt/binから/usr/local/binに変更
何が動くか
| 機能 | 対応状況 | 備考など |
| キーボード | ○ | keydを追加したことによりキーボードのカスタマイズが可能 無変換+矢印キーでHome,End,PgUp,PgDn対応設定を追加 |
| 内蔵LCD/表示 | ○ | XでGPU(Mali400)が有効になったはず |
| WiFi | ○ | ここは以前と変わらず 個体によっては常に1Mbps出ない。 確認しているDM200とDM250本体では1〜20Mbps程度。 |
| Bluetooth | ○ | ほぼ問題なし チップとの通信速度改善により音声出力が一応実用できる程度には改善 有効になっているとWiFiに影響有りか |
| USB | △(制限あり) | 起動時からHOSTモード設定に変更。 HOSTモードでも内部からのVBUS出力不可のため外からの給電が必要。 DM250では先にハブに給電している状態で本体に差し込まないと認識しない。 |
| suspend/resume | ○? | suspend(s2idle)と復帰は可能。電源ボタンでsuspend hibernation(suspend to diskでSDのp3を使用)にも対応。ただし復帰が怪しい。 |
SDイメージ
本体の機種に合ったイメージを選びSDカード全体に書き込んでください。
以前の方式と違い、このSDイメージではインストーラを使用する必要はありません。本体の内容は何も書き換えません。
なおDM200, DM250, DM250USのイメージは、uboot, kernel, device tree, moduleが機種専用になるため違いがあります。
20261002版
- DM200用SDイメージ
SHA256: d19aa21111bb14b673a41a5dffc4448babc2440ac54f51044025579618820f6e - DM250用SDイメージ
SHA256: 3a2e88bf239b772573c91e43ba9fde2785d9acd68673bda7b1a0ef18b1919347 - DM250US用SDイメージ
SHA256: ad80e51f858adc90e186eaa103c9987d0470f73a206251f487ca8a29322bbc0b
起動
- 使用したい機種イメージのzipを展開してetcherやddで8GB以上のSDカードに書き込む
- pomeraの電源を一度落とす
- SDカードを入れて電源を入れる
- ubootが起動、1秒後kernelがロードされてLinuxが起動する
(ubootのカウントダウン中にキーを押すとubootが入力待ちで止まるので、その場合はsdと入力してEnter) - 初回起動ではパーティション拡張を行い一旦再起動がかかる
- 次の起動ではユーザーの作成を要求するのでユーザーの作成を行う(タイミング次第でkernelのメッセージがかぶることがあります)
- 使用準備完了
日本語入力とキーボード
コンソールの日本語表示・入力は引き続きFbTermとuim/Mozcを使います。
少しフォントや文字幅の調整し、既定フォントはRicty Diminishedにしています。
ログイン後、日本語を表示・入力したいときは、次のコマンドでFbTermを起動してください。
FbTermではCtrl+Spaceで日本語入力と英数入力を切り替えられます。
終了するときは
を入力してEnterを押すと、通常のコンソールへ戻ります。
PageUp、PageDown、Home、Endの入力のため、キーレイヤーを使いたくなりkeydを追加しました。
無変換と矢印キーを組み合わせる設定にしています。
| 組み合わせ | 入力されるキー |
|---|---|
| 無変換 + ↑ | PageUp |
| 無変換 + ↓ | PageDown |
| 無変換 + ← | Home |
| 無変換 + → | End |
| 無変換 + F1 | 輝度 – 1 |
| 無変換 + F2 | 輝度 + 1 |
無変換だけを押して離した場合は、通常の無変換キーとして使えます。 割り当ての変更や追加は
で行い、コンソール、FbTerm、X上で同じ設定を使います。 DM250USには無変換キーがないのでこの組み合わせは使えません。
Xfceの起動と操作
デスクトップ環境のXfceを使う場合は、通常のコンソールから次のコマンドを実行してください。
なおFbTermが動いている状態では実行できないので、終了して通常のコンソールへ戻ってから実行してください。
Xfceの操作にはマウスがあった方が便利ですが、USB接続のマウスを使う場合は本体からUSB給電できないため、外部給電できるUSBハブを介して接続してください。bluetoothの場合は下の方に記載の接続方法でつないでください。
左上のメニューはAlt+F1で開けます。
便利かもしれない情報
- Wi-Fiの接続設定
まず、次のコマンドで接続できるAPの一覧を確認します。nmcli device wifi list接続するには、一覧のSSIDに合わせて「APの名前」を置き換え、次のコマンドを実行してください。パスワードは実行後に入力します。
sudo nmcli dev wifi connect "APの名前" --ask接続状態は次のコマンドで確認できます。
nmcli device status - Bluetooth機器の接続
接続したいマウスやスピーカー/イヤホンをペアリングモードにしておきます。bluetoothctlで、bluetoothctlの画面になるので
power on
agent on
default-agent
scan on検索結果に機器名とアドレスが表示されます。大量に出る場合があるので先にPCなどで確認しておくと楽です。
(scanして認識された機器のアドレスはtabキーで入力補完可能)pair AA:BB:CC:DD:EE:FFペアリングが成功したら、次のコマンドを1行ずつ入力して機器を信頼済みにして接続。
trust AA:BB:CC:DD:EE:FF
connect AA:BB:CC:DD:EE:FF
info AA:BB:CC:DD:EE:FFで
Connected: yesになれば接続できています。検索を止めてbluetoothctlから抜けます。
scan off quitペアリング済みの機器に再接続するだけなら、通常のコンソールから次を実行できます。
bluetoothctl connect AA:BB:CC:DD:EE:FFコマンドの詳細はbluetoothctlのマニュアルを参照してください。
- suspendとhibernateについて
電源ボタンの短押しはsystemd-logindに任せ、s2idleへ入る設定にしました。 ただし、これはCPUやDDRをより深く停止するものではないのでdeep suspendよりは電気を食っていると思われます。
またhibernateはswap領域が有効になる3回目以降の起動状態でsystemctl hibernateで使用可能です。(ただし復帰が怪しい) - ubootのカウントダウン中にキーを押すとubootのshellに入ります
ここで通常のlinux起動はsd(またはboot)ですが、emmcだとpomeraの元の環境を呼び出します(ただし遷移できない場合が多く不安定です)
確実に本体の元のソフトを起動したい場合は、ubootのshellに入ったらSDカードを抜いてresetが良いです。 - 上記emmcコマンドでEnterを押して画面が真っ暗のまま止まった場合やフリーズした場合など、どうしようもなくなった場合は電源ボタンを10秒程度押すと強制電源断になり、再度電源ボタンを押せば起動してきます。
- 電池持ちに効きそうなところ
まず無線系とUSBホストを止めると電池もちは改善が期待できます。
見ている感じではwifiは効くようです。sudo /usr/local/bin/wifi_power off
sudo /usr/local/bin/bluetooth_power off
sudo /usr/local/bin/usb_host off再開するときはoffをonに変更
現状の問題・残っている確認
- DM200、DM250、DM250USのすべての動作は確認できていません。
- s2idle中の消費電流や復帰後の動作はまだ確認が必要です。deep suspendが可能そうですが未調査。
- HibernateはSD上のp3であるswap領域を使いますが、復帰が怪しいです
- Xfceの電源ウィジェットの表示が正しくないです
- bluetoothマウスが接続しても動いてない?
参考にした実装や情報
今回の対応では、外部で公開されている実装や動作確認の情報も利用しています。 取り込んだ変更と参考にした情報元を載せておきます。
SDからの起動
SD起動でUMSモードにし、eMMCの中身にUSB経由でアクセスできるようにするものです。
Bluetoothの通信速度
BluetoothのI/F 1.5 Mbps化は、kay-ws氏のdm200_tools PR #5
旧kernel 3.10系のDM250で、UARTの帯域不足と1.5 Mbpsへの変更による改善を調査されたものです。この情報をもとに、Linux 6.18のDevice TreeとBluetoothドライバに合わせて対応しています。
本家U-Bootのpomera対応
取り込み元は主にJoshua Stein氏(jcs)のjcs/u-boot・pomera-dm250系列です。
このうちRK3128のクロック・reset対応は、Alex Bee氏のknaerzche/u-bootのrk3128-wipブランチをもとに、jcs版を経由して取り込んでいます。
表示とpanelの処理は、これらの実装をもとに現在のU-Bootと各機種の設定に合わせて調整しています。