WSL2 から Xteink X4 に Papyrix ファームウェアを書き込む
papyrix-flasher を使って Xteink X4 電子ペーパーリーダーに Papyrix ファームウェアを書き込む手順
はじめに・概要
少し前にポチっていた巷で話題?の電子書籍リーダー Xteink X4 が届きホクホクな今日この頃です。
事前情報でどうやら公式のファームウェアに加え、オープンソースのファームウェア・アプリもインストールできるということで気になっていました。
というのも、オープンソースのファームウェアは公式のファームウェアと比べ書籍のレイアウトが最適化されていたり、機能の改善が進んでいるようです。
今回は Papyrix というオープンソースのファームウェア・アプリをインストールしてみましたので、作業記録として手順をまとめます。
Xteink X4 は ESP32-C3 ベースの電子書籍リーダーです。デフォルトのファームウェアに加え、オープンソースの対応した電子書籍リーダーアプリをインストールすることができます。
本記事では WSL2 (Ubuntu 24.04) 環境から、書き込みツール papyrix-flasher を使って Xteink X4 に Papyrix をインストールする手順をまとめます。
環境情報
| 項目 | バージョン |
|---|---|
| OS | Linux (WSL2 / Ubuntu 24.04 / amd64) |
| Go | 1.26.1(手動インストール) |
| papyrix-flasher | v0.4.0(ソースビルド) |
| ファームウェア | Papyrix v1.19.0(3.97 MB) |
手順
Step 1: Go をインストールする
papyrix-flasher のビルドには Go が必要です。公式サイトから最新の tarball を取得してインストールします。
# ダウンロード
wget https://go.dev/dl/go1.26.1.linux-amd64.tar.gz
# 既存の Go を削除して展開
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.26.1.linux-amd64.tar.gz
# PATH に追加
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# バージョン確認
go version
# go version go1.26.1 linux/amd64
Step 2: papyrix-flasher をビルドする
git clone https://github.com/bigbag/papyrix-flasher
cd papyrix-flasher
make build
ビルドが成功すると bin/papyrix-flasher が生成されます。コマンドとして使えるよう PATH に追加します。
echo 'export PATH=$PATH:/home/<ユーザー名>/_work/papyrix-flasher/bin' >> ~/.bashrc
source ~/.bashrc
Step 3: ファームウェアをダウンロードする
make build で生成されるのは書き込み ツール (papyrix-flasher) であり、書き込む ファームウェア (firmware.bin) は別途入手が必要です。
Papyrix リリースページ から目的のバージョンをダウンロードします。
cd /path/to/papyrix-flasher
wget https://github.com/bigbag/papyrix-reader/releases/download/v1.19.0/firmware.bin
Tips: リリースタグは
v1.19.0の形式(c1.19.0ではない)。
Step 4: usbipd で USB デバイスを WSL にアタッチする
あらかじめ Xteink X4 を USB ケーブルで PC に接続しておきます。
WSL2 はデフォルトで USB デバイスを認識しません。Windows 側で usbipd を使い WSL にアタッチする必要があります。
Windows PowerShell(管理者) で実施します。
# usbipd のインストール(未インストールの場合)
winget install --interactive --exact dorssel.usbipd-win
# デバイスの一覧確認
usbipd list
usbipd list の出力例は次のようになります。Shared または Not shared の状態で Xteink X4 が表示されます。
BUSID VID:PID DEVICE STATE
1-4 0403:6010 USB Serial Converter A, USB Serial Converter B Not shared
1-12 303a:1001 USB JTAG/serial debug unit Not shared
BUSID の値(この例では 1-12)を以降のコマンドで使用します。
Tips: DEVICE 欄には「Xteink」とは表示されません。ESP32-C3 の USB チップが
USB JTAG/serial debug unitなどと表示されます。Xteink X4 を接続する前後でusbipd listを実行し、新たに現れたデバイスを確認するとよいでしょう。
確認できたら、bind してから attach します。
# bind してから attach する
usbipd bind --busid 1-12
usbipd attach --wsl --busid 1-12
Tips:
bindの前にattachを行うと次のエラーが出ます。必ずbind→attachの順で実行してください。usbipd: error: Device is not shared; run 'usbipd bind --busid 1-12' as administrator first.
アタッチ後、WSL 側でデバイスが認識されていることを確認します。
ls /dev/ttyUSB* /dev/ttyACM*
# /dev/ttyACM0 などが表示されれば OK
Step 5: シリアルポートの権限を設定する
デフォルトでは一般ユーザーにシリアルポートへのアクセス権がありません。dialout グループに追加します。
sudo usermod -aG dialout $USER
追加後は WSL を再起動して変更を反映します。
# Windows PowerShell で実行
wsl --shutdown
Step 6: フラッシュを実行する
WSL 再起動後、以下のコマンドでファームウェアを書き込みます。
papyrix-flasher flash -p /dev/ttyACM0 firmware.bin
成功すると次のようなログが出力されます。
Firmware: firmware.bin (4165616 bytes)
Port: /dev/ttyACM0 @ 921600 baud
Connecting to bootloader...
Uploading stub flasher...
Running stub flasher...
Stub running!
Connected!
Flashing bootloader at 0x0 (12464 bytes)...
[==============================] 100% (9/9 KB) 455 KB/s
Flashing partitions at 0x8000 (3072 bytes)...
[==============================] 100% (0/0 KB) 195 KB/s
Flashing otadata at 0xE000 (8192 bytes)...
[==============================] 100% (0/0 KB) 54 KB/s
Flashing firmware at 0x10000 (4165616 bytes)...
[==============================] 100% (1969/1969 KB) 98 KB/s
Flash complete!
Rebooting device...
Done!
exit code 0 でフラッシュ完了です。
フラッシュ完了後、端末が自動的に再起動し、Xteink X4 の画面が更新されます。Papyrix の画面が表示されればインストール成功です。
まとめ
WSL2 から papyrix-flasher で Papyrix ファームウェアを書き込む際のポイントをまとめます。
| 手順 | 要点 |
|---|---|
| ファームウェア入手 | make build はツールのビルドのみ。firmware.bin は別途ダウンロードが必要 |
| USB アタッチ | usbipd bind → usbipd attach の順で実行する |
| 権限設定 | dialout グループへの追加後は WSL の再起動が必要 |