ひとまず人柱版を公開します。人柱版なので説明は少なめです。7月頭ぐらいに設定を詰めてもう少し動作確認したものをリリースし直すつもりです。
説明も急ごしらえなので以下の内容では記述が不足気味かと思います。
このROM固有の内容について質問/意見などがありましたらコメント欄にどうぞ。
その他不具合なども有れば教えてください。
この手のソフトではお決まりですが文鎮になっても責任は負いません。
本体内のソフト変更を伴いますのでメーカーへの問い合わせはやめてください。
簡単な動きの説明
インストーラでは内蔵eMMC NANDのリカバリkernelとリカバリinitramfs領域を書き換えます。
書き換え後に起動手順を行うと書き換えたkernelとinitramfsを使って、SDカードの2番目のパーティションに置いたrootfsのDebian(jessie)が動きます。
何が動くか
機能 | 対応状況 | 備考など |
キーボード | △ | Fnキー周りがまだ怪しい以外はだいたい普通に動作 |
内蔵LCD | ○ | |
WiFi | ほぼ○ | BTと同時に動かすと動作が怪しくなる |
Bluetooth | × | 現在有効化スクリプト作成中。(過去に動作実績は有り) |
USB | △(制限あり) | HOSTモード自動変更不可。 HOSTモード時に内部からのVBUS出力不可。 |
suspend/resume | ○? | Suspend to RAMとResumeは可能。 suspend状態でどの程度電池がもつかは検証不足。 今のところ異常操作以外での復帰ミスはなし。 |
注意/制限事項など
長いですがひととおり読んでから入れるか判断してください。
■標準環境はコンソール状態なのでLinuxの操作/設定がそれなりにわかる方向けです。以下の説明では環境固有の情報以外は省略されている場合があります。その場合は他で調べてください。
■DM200には内蔵のポインティングデバイスがないため基本的にはコンソールでの使用になると考えています。X関係のパッケージは初期状態では入れていません。必要な方は起動後に追加してください。
Xの動作はまだ検証不足です。DM200はもともとポインティングデバイスを内蔵していないので、X環境をメインで使うつもりの場合は以下の各種制限もあって微妙かもしれません。
■実装されている物理メモリは512MBなのであまりメモリを使用するソフトは厳しいと思います。そのためSDカードの3番目のパーティションに1GB分のswapを作成するようにしています。
メモリ使用量の参考値としては、コンソールだけだと100MBも使いません。Pomera DM200 Linux 動作テスト (youtube)でFirefoxを動かした時点でのメモリ使用量は350MB程度でした。(Firefoxがメモリ食い)
■USBをHOSTとして動かすのにひと手間かかるのと、動作に制限があります。
1. DM200ではUSB-OTG端子のidラインが結線されていないため、自動でHOSTモードにするべきかどうかの判定ができません。ソフトから切り替えが必要です。(切り替え手順は下の方参照)
2. VBUS電源(USB端子の5V)を内部から供給できないため、USB機器に対して外部から電源供給可能なハブ等が必要になります。
■インストーラやLinux起動のために使っている3点長押しの起動方法は、通常ROMの状態で行うとFACTORY MODEに入ります。このモードにある項目を適当に触った場合、最悪本体が起動しなくなる可能性があるためあまり触らないことをお勧めします。
間違って入った場合はSPACEキーを押すと選択項目が移動できるのでSHUTDOWNを選択してEnterを押すか、電源長押し(10秒)で再起動してください。
#特に赤字のLD MODEを実行した場合はbootloaderが消えて二度と起動しなくなりそうな気がするので実行しないほうが良い気がします。(未確認)
■BluetoothとWiFiを同時に有効にするとWiFiの接続が不安定になる現象が発生しています。
■現時点ではソフト的に電池残量低下を検知してシャットダウンする処理などは追加していません。
kernelでは電池の電圧が一定の電圧まで降下すると割り込みが入ってshutdownの処理に入りそうな感じではあるのですが、動作するのか未確認です。
なお電池残量は以下のコマンド
/opt/bin/battery2
で表示される2項目目の数値を参考にしてください。
ここが0になるまで使うと電池によろしくないと考えられますので、それまでに充電するようにしてください。
インストール手順
■準備
内蔵eMMC(4GB)のバックアップをとるために十分なサイズのSDカードが必要です。
インストーラとrootfsの入ったSDカードイメージを書き込むために16GB以上のSDカードが必要です。
公開前のテストにはSanDiskのUltra 16GBを使用しました。(48MB/sの記載のあるもの)
0. 本体のバックアップをとる
DM200 eMMC NAND バックアップ/リストア ツール
使い方はzipを展開するとできるreadme.txtを読んでください。
取得したファイルはPCなど別の機器上に保存しておいてください。
1. インストーラのダウンロードとSDへの書き込み
DM200 Debian インストーラー
readme.txtにも記載していますが、展開するとdm200_debian_16GB.imgができるので、Windowsの場合はWin32DiskImagerやrawrite、Linux,MacならddなどでSDカードの先頭から書き込んでください。
RasPiのSDイメージインストール手順が参考になります。
2. インストール実行
readme.txtの手順でインストールを実行してください。
3. Linux起動手順
インストールが正常に完了すると自動で再起動がかかり標準ロムが動作するので、一度電源を切って”左Alt + 右Shift + 電源キー”の3つ長押しで電源を入れます。
POMERAのロゴが出たら離してOK。Linuxの起動ログ(というかkmsg)が流れてコンソールのログイン画面が表示されるはずです。
4. ログイン
起動後は通常のLinuxと同様に使用可能です。
アカウントはrootのほかにdm200というユーザーを作成してあります。
rootのパスワードはroot、dm200のパスワードはdm200です。
以下のパッケージが入っています。
vim-tiny,bluetooth,net-tools,wireless-tools,console-setup,sudo,isc-dhcp-client,
wpasupplicant,psmisc,locales,fbterm,uim-anthy,uim-fep,unifont,tmux
日本語入力はfbtermとuim-fepを起動してCtrl+spaceでon/off可能です。
インストール後
・SDカードのVFAT領域(Pomeraの標準ROMで見える領域)は
/mnt/vfat に標準でマウントします。
・バックライトの明るさ変更は
/opt/bin/backlight [0〜254]
で設定可能です。40以下にすると暗すぎて見えないので注意。
・WiFiの設定とON/OFF
1./etc/wpa_supplicant の下にwpa_supplicant.confを置いてください。
wpa_supplicant.confの書き方は省略。
2.WiFi機能ON (要root権限)
#/opt/bin/wifi_switch on
これでwpa_supplicant.confに記載の情報でWiFi接続されます。
3.WiFi機能OFF (要root権限)
#/opt/bin/wifi_switch off
・USB端子のモード切り替え (USB-HOSTケーブルを挿しても自動認識できないため)
HOSTモード (要root権限)
#/opt/bin/usb_host on
DEVICEモード (要root権限)
#/opt/bin/usb_host off
・Suspend / Resume (要root権限)
#/opt/bin/suspend
でSuspend to RAMの動作が動きます。Resumeは電源ボタンを押してください。
なおどこまで省電力状態にできているかは検証中です。そこそこ電流量は減らせていると思います。
元に戻す場合
・バックアップを取った際のソフトと一緒にリストアのソフトも入れてあります。
DM200 eMMC NAND バックアップ/リストア ツール
readme.txt を見てください。
#リストア中画面が壊れているのと完了後にkernel panicでrebootするのは見た目がよろしくないのでそのうち修正します。
TODO
・電池残量低下時の通知/シャットダウン処理追加
・キー配列の変更 (多用するHOME,End,PageUp,PageDownをどこかのキーコンビネーションで使えるようにする)
・Bluetoothの動作確認
・BluetoothとWiFiを同時に有効にするとWiFiが切れる問題の調査
・リストア処理の修正
・USBがデバイスモードのときに別のデバイスとつないだ際にVFAT領域を見えるようにするための処理追加
・まれに起動に失敗する場合がある件について調査
聞かれそうな質問と回答
Q. SDカード無しで動かすことはできないか
A. rootfsを内蔵eMMCに置くことは可能ですが、以下の理由で現時点ではSDカードに置くことにしています。
・なるべく本体のソフトを変更しない方向で対応する。
・内蔵eMMCの寿命がどの程度かわからないのでなるべく書き込みはしたくない。(もとのROMでは寿命を考慮してか結構な空き領域があります。)
Q. 内蔵のATOKは使えるのか
A. DM200標準のソフトは、よく使われるコマンド以外は画面描画処理も含めて基本的に1つのプロセスで動作しているようです。ATOKもそのプロセス内部で動いている(個別のプロセスとして存在しない)ようなので外から使うのは難しそうです。日本語を書くためのワープロ機として使うのであれば、ATOKも使える素のままで使う方が良いと思います。
Q. USBを外部からの電源供給無しで動作できないか
A. USB-OTGのドライバでVBUS出力を有効に設定すると画面が白くなって固まるので、ハード的にVBUS電源を内部から出力することが難しいのではないかと考えています。(回路は追っていないので本当にハードの問題かは未確認ですが)
この件についてはもう少し調べてみたいので、不動ジャンクなどをお持ちの方は提供していただけるとうれしいです。もしくは誰かUSB周りの回路を追いませんか。
Q. 説明が文字ばかりでわかりにくい
A. 人柱版向けの急ごしらえなので… 後でもう少しわかりやすくしたいです
Q. リカバリが実行できない
A. 置いてあるスクリプトの実行だけでは文鎮になることはないはずです。(標準ROMは動くはず)
initramfsからSDカード上のスクリプトを呼び出すための経路は2つあるのですが、一つはタイミングがわかりにくいので後ほど記載するつもりです。説明を書くまでは標準ROM機として使用してください。
Q. youtubeの動画でX上のポインタはどうやって動かしているのか。
A. USB端子をHOSTモードに切り替えてUSBハブ経由でUSB接続のマウスをつないでいました。接続には以下のmicroUSB二股ケーブルを使用して、USB-AコネクタにUSBハブを接続、microUSBにポータブルバッテリを接続していました。手持ちのケーブルは既に販売終了しているようなので同等と思われるケーブルのリンクを貼っておきます。
なおこのケーブルを使うとDM200のUSBをHOSTモードにしていても電源を外から供給するとついでに本体が充電されました。
二股で充電可能をうたっているケーブルはいくつか売られていますが、通常の機器であればHOSTモードの場合は本体からVBUS出力するでしょうからそれとかち合ってしまうため使用するのはよろしくないと思われます。
ただ、ここのソフトではDM200からはVBUS出力しないため外部から入ってくる電源とかち合うことはないので、おそらくこの手のケーブルならどのケーブルでも充電しながらUSB機器に電源供給しつつ本体も充電ができると思われます。売られているケーブルが全部使えるかどうかはわかりませんが。
Have you explored getting Linux on the Pomera DM100 or DM30? I uncovered a debug/USB bootloader mode on the DM30 that I’m hoping might allow for running Linux off LR6/AA batteries which would be amazing.
Google Translate conversion to Japanese below in case it makes things easier to read.
Pomera DM100またはDM30でLinuxを入手することを検討しましたか? DM30でデバッグ/ USBブートローダーモードを発見しました。これにより、LR6 / AAバッテリーでLinuxを実行できるようになると期待しています。
私はDM30は持っていないのですが、こちらによると
https://pc.watch.impress.co.jp/docs/news/1121919.html
CPUはi.MX23でRAMが64MBのためコンソールだけなら動くかもしれません。
Have you explored postmarketOS or AlpineOS for the DM200/DM250?
It might be possible to get mainline kernel support with some suggestions from their community, and their pmbootstrap tool makes it incredibly easy for end users to build an SD card image to boot from.
They also maintain u-boot packages for systems that aren’t yet supported in mainline u-boot, but I just saw recently that the rk3128 is supported by mainline u-boot now.