Pomera DM250の本体eMMCを手軽にバックアップ・復元するツールを作った

「pomera-dm250-backup-restore-tool」の概要
KING JIMのテキスト入力専用端末「Pomera DM250」向けに、本体を分解せず、本体内蔵eMMCの丸ごとバックアップおよびリストアが行えるツール pomera-dm250-backup-restore-tool を作成し、GitHubで公開しました。
Linux化やOpenBSD化などのOS入れ替えハックを試す前の安全な退避用として、また万が一の文鎮化からの復旧用として活用できます。
特徴
Pomera DM250のSocであるRockchip RK3128のハードウェア仕様 (SDカード優先ブート) と、U-BootのUMS (USB Mass Storage) 機能を活用し、PomeraをPCから「外付けUSBストレージ (約7.3GB)」として認識させて直接読み書きを行います。
- 非破壊・分解不要: SDカードを挿して普通に電源を入れるだけでUMSモードで起動。本体の分解やテストポイント短絡は不要です。
- 安全第一 (デフォルトRead-Only): バックアップ用SDカードで起動したPomeraは書き込み禁止 (Read-Only UMS) として作成されるため、PC側から誤ってeMMCに書き込んでしまう心配がありません。
- 完全バックアップ: 全27個の個別パーティションイメージ (
mmcblk0p1.img〜p27.img) に加え、ブートローダー領域のIDBイメージ (dm250-idb.img)、そしてRAWディスク全体のダンプ (emmc.img) をPC側に保存します。 - 確実なリストア: 書き込みモード (
--readwrite) でSDカードを用意すれば、保存したイメージからeMMCへの書き戻しが可能。書き込み直後にリアルタイムでSHA256を読み戻してベリファイ (整合性検証) を行います。 - クロスプラットフォーム対応: 母艦PCとして Linux (Ubuntu / Debian / Fedora / Arch等) および macOS に対応しています。
簡単な使い方
作業の流れは大きく3ステップです。
Step-1. メンテナンス用SDカードの作成
母艦PCにSDカード (1GB〜32GB) を接続し、U-Boot UMSブートローダーを書き込みます。引数なしで実行すると接続されている外部ディスクを自動検出し、対話形式で安全に書き込み先を選択できます (※事前にデバイス名が分かっている場合は引数に指定も可能です)。
# 【通常】バックアップをする場合 (安全なRead-Onlyモード)
./prepare_sdcard.sh
# (引数で直接指定する場合: ./prepare_sdcard.sh <SDカードのデバイス名>)
# 【復元時のみ】リストアをする場合 (書き込み許可モード)
./prepare_sdcard.sh --readwrite
# (引数で直接指定する場合: ./prepare_sdcard.sh --readwrite <SDカードのデバイス名>)Step-2. PomeraをUMSモードで起動してPC接続
- 作成したSDカードをPomera DM250に挿入します (※USBケーブルは抜いた状態にしておきます)。
- 電源ボタンを約3〜4秒間長押しして電源を入れます (他のキー操作は不要です)。
- 画面バックライトが点灯し、「[Pomera DM250 PC Storage Mount]」等のバナーが表示されたら、USB Type-Cケーブルで母艦PCと接続します。
- 以降の作業中、Pomeraの電源を完全に切りたい・強制オフにしたい場合は、電源ボタンを10〜11秒間長押ししてください。
Step-3. バックアップまたはリストアを実行
PC側でスクリプトを実行します。<Pomeraのデバイス名> = Linux: /dev/sdX, macOS: /dev/rdiskN です。
# バックアップ実行 (デフォルト: PC内の ./backup_file/ ディレクトリへ保存)
sudo ./backup_emmc.sh <Pomeraのデバイス名>
# バックアップ実行の一例 (保存先ディレクトリを指定する場合)
sudo ./backup_emmc.sh <Pomeraのデバイス名> ./factory_backup
# リストア実行 (デフォルト: ./restore_file/ 内のイメージをeMMCへ書き戻し・検証)
sudo ./restore_emmc.sh <Pomeraのデバイス名>
# リストア実行の一例 (バックアップフォルダを指定して直接復元する場合)
sudo ./restore_emmc.sh <Pomeraのデバイス名> ./factory_backup💡 リストア時の自動判定仕様
- 指定フォルダ内に
emmc.imgが存在する場合は、ディスク丸ごと復元が最優先されます。emmc.imgがなく個別イメージが存在する場合は、dm250-idb.img(セクタ0〜4MBのブートローダー領域) および存在するmmcblk0p*.imgが各パーティションの正確なオフセット位置へ順番に書き戻されます (特定パーティションのみの部分復元も可能です)。
macOS利用時のポイント
- PC接続時に「読み取れないディスク」ダイアログが表示された場合は、必ず 「無視」 を選択してください (「初期化」や「取り出し」は押さないでください)。
- 未アクセスのまま放置するとmacOSのUSB省電力機能により切断されるため、USB接続後は速やかにスクリプトを実行してください。
実行例
1. prepare_sdcard.sh
macOSでのprepare_sdcard.sh実行例を示します。
$ ./prepare_sdcard.sh ========================================================== Pomera DM250 Backup & Restore Tool - SD Card UMS Builder Host OS: Darwin (arm64) | Parallel jobs: 10 ========================================================== === Step 1: Checking build dependencies and cross-compiler === ✅ Using GNU Make: gmake (v4.4) ✅ Using ARM Cross-Compiler: arm-none-eabi-gcc === Step 2: Downloading U-Boot source archive (pomera-dm250 branch) === 🔒 Target Mode: READ-ONLY (Safe mode, write-protected against accidental overwrites) Downloading and extracting U-Boot source archive (~25MB)... === Step 3: Downloading DTS sources and Compiling Device Tree Blob === Fetching Pomera DM250 device tree source files (~56KB)... Compiling Device Tree Blob (pomera-dm250.dtb) using local dtc... Applying U-Boot Read-Only UMS patch (Hardware Write-Protect)... patching file 'drivers/usb/gadget/f_mass_storage.c' (途中省略) 🔍 Scanning for SD Card / External Disks... Available External Disks (macOS): /dev/disk4 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *3.9 GB disk4 1: DOS_FAT_32 NO NAME 3.9 GB disk4s1 Enter target SD card device (e.g. /dev/rdiskN or diskN) or press Enter to skip: /dev/rdisk4 Unmounting /dev/disk4... Unmount of all volumes on disk4 was successful Writing directly to SD card device: /dev/rdisk4 Are you sure you want to write to /dev/rdisk4? (yes/N): yes Unmount of all volumes on disk4 was successful Password: 216+0 records in 216+0 records out 110592 bytes transferred in 0.059545 secs (1857284 bytes/sec) Unmount of all volumes on disk4 was successful 8192+0 records in 8192+0 records out 4194304 bytes transferred in 2.229877 secs (1880958 bytes/sec) ✅ Flashed successfully to /dev/rdisk4! ==========================================================
Pomera DM250の画面
Pomeraを上記Step-2の手順で起動し、USBケーブルでPCと接続した時のPomeraの画面です。
2. backup_emmc.sh
macOSでのbackup_emmc.sh実行例を示します。
$ sudo ./backup_emmc.sh /dev/rdisk5 /Users/hoge/tmp/backup_file/ parts ========================================================== Pomera DM250 eMMC Direct Dump / Backup Tool Host Platform: Darwin (arm64) ========================================================== Destination Directory: /Users/hoge/tmp/backup_file Dump Mode: parts ℹ️ Mode 'parts': Extracting separate factory partitions + IDB only. Target Device: /dev/rdisk5 (Size: approx 7.28 GB / 7818182656 bytes) Available Disk Space on PC: 469.26 GB ========================================================== Ready to dump data from /dev/rdisk5 to /Users/hoge/tmp/backup_file ========================================================== Start backup now? (Y/n): Y ➡️ [Step 2] Extracting IDB and separate partition images (mmcblk0p1 ~ mmcblk0p27)... Reading partitions directly from device /dev/rdisk5... [IDB] Extracting dm250-idb.img (4MB)... ✅ Done [1/27] Extracting mmcblk0p1.img (8MB at offset 8MB)... ✅ Done [2/27] Extracting mmcblk0p2.img (12MB at offset 16MB)... ✅ Done [3/27] Extracting mmcblk0p3.img (6MB at offset 28MB)... ✅ Done [4/27] Extracting mmcblk0p4.img (64MB at offset 34MB)... Progress: [ 64 / 64 MB ] (100%) | Speed: ~4 MB/s | Elapsed: 00:15 | ✅ Done [5/27] Extracting mmcblk0p5.img (512MB at offset 98MB)... Progress: [ 39 / 512 MB ] (7%) | Speed: ~4 MB/s | Elapsed: 00:09 | ETA: ~01:58 (以下省略)
3. restore_emmc.sh
macOSでのrestore_emmc.sh実行例を示します。
$ sudo ./restore_emmc.sh /dev/rdisk5 /Users/hoge/tmp/restore_file/ ========================================================== Pomera DM250 eMMC Direct Restore Tool (with Verify) Host Platform: Darwin (arm64) ========================================================== Source Image Directory: /Users/hoge/tmp/restore_file/ Target Device: /dev/rdisk5 (Size: approx 7.28 GB / 7818182656 bytes) ========================================================== ⚠️ WARNING: You are about to OVERWRITE all data on /dev/rdisk5 Make sure this is the Pomera DM250 eMMC disk! ========================================================== Are you absolutely sure you want to proceed? (yes/N): yes ➡️ Found full raw eMMC image: /Users/hoge/tmp/restore_file//emmc.img Writing full image to /dev/rdisk5 (7456 MB)... Progress: [ 256 / 7456 MB ] (3%) | Speed: ~3 MB/s | Elapsed: 01:16 | ETA: ~40:00 (以下省略)
余談: このツールを作った経緯
1. 入手後さっそくLinux化
KING JIMのPomera DM250は、公式にはテキスト入力に特化した、文房具のようなデジタルメモ機器です。しかし、実用的なキーボードを搭載した片手で掴めるサイズのLinux端末にも化けます。以前から気になっていたところ、私は運良く限定モデルの DM250XYZ Midnight Purple を入手できました。
目論み通り、まずはDebian GNU/Linux端末に切り替えて遊ぼうとしていたのですが……。
一夜にして、ポメラを Debian GNU/Linux 色にも染めました。#pomera DM250XYZ Midnight Purplehttps://t.co/S7sPgSar1x
— Masahiko OHKUBO (@mah_jp) May 26, 2026
2. 本体eMMCのデータ破壊?で3キー起動不能
公開されているDebian/GNU Linux 11は2022年頃のものなので、AIの力を投入して、OS環境を最新化しようと新しいkernelやらをPomeraに導入しようとした際、何らかのトラブルが発生。本体のeMMC領域の一部を誤って書き換えてしまったようで、Pomeraのハックで基本となる「右Shift + 左Alt + 電源」 (3キー起動) でのSDカード起動が一切作動しない、絶望的な状態に陥ってしまいました。
この状態でもPomeraの純正OS自体は普通に立ち上がるものの、リストアツールが起動できず、純正「FACTORY MODE」にも入れません。SDカード経由で別のOSを読み込ませる手段が完全に塞がれてしまいました。
Pomera DM250 (DM250XYZ) やっちまったぜ。左Alt+右Shift+PowerからのSDカード起動ができない。ここに書いてあるRecoveryをせんばいかん気がする。
— Masahiko OHKUBO (@mah_jp) July 14, 2026
Installing OpenBSD on the Pomera DM250 - joshua stein https://t.co/rLrn1UjDLi
3. SoC仕様×U-Bootで復活成功→ツール化しよう
幸い、Linux化を試す前に本体eMMCの初期バックアップは取得していたため、これさえ書き戻せれば正常化できるはずです。しかし、前述の通り、既存のリストア手順は「3キー同時押しでの起動」を前提としているため使えません。
となると、「Midnight Purple筐体のPomeraを破損せずにうまく分解するしかないのか…… (TP501 test pointを短絡させる必要がある)」と頭を抱えつつ調査を重ねた末に、Rockchip RK3128のハードウェア特性である「電源投入時にSDカードの先頭を最優先でチェックする」仕様と、U-BootのUMS機能を組み合わせる活路を見出しました。
この活路を押し広げる試行錯誤の結果、3キー起動に頼ることなく無事にeMMCを完全リストアし、Pomeraを工場出荷状態で復活することに成功しました。この時に確立した「3キー起動の動作が壊れていても安全に復旧できる手法」を、誰でも再現性高く使えるように整理・自動化したものが、今回のツール pomera-dm250-backup-restore-tool です。
左Alt + 右Shift + 電源の起動が使えなくなった Pomera DM250 (DM250XYZ) を、筐体を分解せず、非破壊で復活できました! やったまじうれしい!
— Masahiko OHKUBO (@mah_jp) July 15, 2026
この紫色筐体は、材質的にしならず割れそうで、分解したくなかったのだ。https://t.co/uErac0Rp3I
関連リンク
- Debian on Pomera DM200/DM250 – 記録
- Installing OpenBSD on the Pomera DM250 - joshua stein
- 4noha/openbsd-pomera-dm250: OpenBSD on KING JIM pomera DM250: install guide, kernel patches (bcmbt/dwmmc/bwfm + suspend/resume fixes), BT-tether (panctl/BTstack), suspend debug harness, boot logo, battery sensors, optional Tailscale thin-client setup.
おすすめセット
画面保護フィルムとケースは、実際に下記のものを使っています。
キングジム(Kingjim)





