日本語データの転送

RxJa のファーム(f4hwn.rxja.bin)には日本語のフォントが入っていません。フォントと訳は ja_res.bin(約 140KB)という別のデータになっていて、これを本体の中の「外付け SPI フラッシュ」に書き込むと日本語表示になります。

注意

このページの手順は、ソースコードと RxJa Tools のプログラムを読んで確かめたものです。RxJa Tools の一覧から RxJa を書き込んだあとの、日本語データの自動の書き込みは、作者の UV-K1 で確かめています。

このページを使うとき

ふつうは、このページの作業はいりません。ファームの書き込み で RxJa Tools の一覧から RxJa を選んで書き込むと、ファームのあとに日本語データも自動で書き込まれるからです。

このページを使うのは、次のようなときです。

書き込みには、ふつうは RxJa Tools の「日本語データ」の画面を使います。Python のスクリプト upload.py で書き込むこともできます(このページの後半の「別の方法: upload.py(Python)」)。

補足

本家の UV Studio(UV-Studio)には、日本語データを書き込む機能はありません。ここで使う「RxJa Tools」は、UV Studio を RxJa 用に作り変えた別のツールです。

RxJa Tools で書き込む(おすすめ)

用意するもの

もの 備考
パソコンのブラウザ Chrome / Edge / Opera(または Firefox 151 以降)。Safari やスマホではできません(Web Serial という機能を使うため)
USB ケーブル ファームの書き込みに使ったのと同じ、データ通信できる USB-C ケーブル
ja_res.bin ダウンロードはいりません。 RxJa Tools に同梱されているデータを使えます。自分で作ったデータを書くときだけ、そのファイルを用意します

手順

  1. 無線機を普通に起動します。 PTT を押さずに電源を入れ、RxJa の待ち受け画面になった状態にします。
    • RxJa のファームが動いている必要があります。元の F4HWN や純正ファームでは書き込めません。まだなら先に ファームの書き込み をしてください。
    • DFU モード(RxJa Tools の画面では「書き込みモード」。PTT を押しながら電源を入れた、書き込み待ちの状態)では書き込めません。
  2. 無線機を USB-C ケーブルでパソコンにつなぎます。
  3. ブラウザで RxJa Tools の「日本語データ」の画面を開きます。
  4. 「書き込むデータ」で、書き込むものを選びます。
    • 同梱データ:v1.2.0 · 同梱データ のように版ごとに並んでいます。本体のファームと同じ版を選んでください(v1.2.0 のファームで日本語のチャンネル名を表示するには、v1.2.0 の日本語データが必要です)。同梱データは、読み込んだときに SHA-256(ファイルの指紋のようなもの)で壊れていないか自動で確かめます。
    • ファイルを選ぶ:自分で作った ja_res.bin などを書くときに選び、パソコンの中のファイルを指定します。
    • 選ぶと、その下にデータの大きさ(バイト数)と SHA-256 の先頭が表示されます。
  5. 「書き込み後に読み戻して照合する(おすすめ)」は、チェックを入れたままにしておきます。書いた内容を読み戻して、正しく書けたかを確かめます。
  6. 「ポートを選んで書き込む」を押します。シリアルポートを選ぶ画面が出るので、無線機のポートを選んで「接続」を押します。
  7. 書き込みが始まります。「書き込み中… N%」、続いて「照合中… N%」と進み具合が出ます。
    • 合わせて 1〜2 分ほどかかる見込みです。途中でケーブルを抜いたり、無線機の電源を切ったりしないでください。
    • 接続したときに出る版の文字は、パソコンのツールとの互換のため F4HWN のままです。RxJa でも正常です。
  8. 終わると、次のように出ます。
    • 照合ありのとき:「書き込み・照合とも完了 👍🏼 本体が英語表示のままなら、電源を入れ直してください。」
    • 照合なしのとき:「書き込み完了 👍🏼 本体の電源を入れ直すと日本語表示になります。」
  9. 表示が英語のままなら、無線機の電源を一度切って、普通に入れ直します。そのあと 表示が日本語になったか確かめます。

途中で中止したとき

書き込み中は「中止」ボタンで止められます。

ケーブルが抜けたなどで途中で切れたときも、同じように英語表示に戻るだけです。もう一度書き込めば直ります。

RxJa Tools でうまくいかないとき

表示・ようす 原因と対処
ポートを選ぶ画面が出ない、ボタンが押せない ブラウザが対応していない。パソコンの Chrome / Edge / Opera(または Firefox 151 以降)で開く
ポートを選んだあと、接続できない ほかのソフトがポートを使っている。UV Studio・CHIRP・upload.py・RxJa Tools のほかのタブを閉じてからやり直す
「エラー: 0x0514 に応答がありません(ケーブル・ポート・本体の電源を確認してください)」 無線機から返事がない。ケーブルが充電専用、無線機が DFU モードのまま、電源が切れている、ポート違い など。電源を入れ直して普通に起動してからやり直す
「エラー: 0x0744 に応答がありません(本体のファームが RxJa ではない可能性があります)」 無線機は応答したが、日本語データの受け取りに対応していない。RxJa ではないファーム(元の F4HWN や純正)が入っている。先に ファームの書き込み をする
「同梱データを読み込めません(…)。ファイルを選んでください。」 同梱データをサイトから読み込めなかった。ページを読み込み直してみる。直らなければ、Releases から同じ版の ja_res.bin をダウンロードし、「ファイルを選ぶ」で書き込む
「同梱データのハッシュが一致しません」 読み込んだ同梱データが、決められた中身と一致しない(途中で壊れたなど)。上と同じように、読み込み直すか、ファイルを選んで書き込む
「エラー: 日本語データ(ja_res.bin)ではありません」 選んだファイルが ja_res.bin ではない、またはダウンロードが壊れている
「エラー: 形式の版が違います(…)」 データの形式の版が、ファームや RxJa Tools と合っていない。ファームと同じ版の ja_res.bin を使う
「エラー: 照合に失敗しました(オフセット 0x…)」 書き込んだ内容が読み戻しと一致しない。もう一度書き込む。繰り返すならケーブルを替えてみる

表示が日本語になったか確かめる


別の方法: upload.py(Python)

RxJa Tools を使わずに、パソコンで Python のスクリプト upload.py を動かして書き込むこともできます(RxJa Tools が使えないブラウザのとき、コマンドで作業したいとき、自分で作ったデータを何度も送るとき など)。同じ ja_res.bin なら、どちらで書いても本体に入るものは同じです。

こちらも、RxJa のファームで普通に起動している状態で行います。DFU モード(書き込み待ちの状態)では転送できません。

必要なもの

もの 入手先・備考
ja_res.bin Releases の最新版から。ファームと同じ版のものを使う(upload.py のときはダウンロードが必要です)
upload.py リポジトリの tools/ja/upload.py。ページ右上の「Download raw file」ボタンで保存
Python 3 3.8 以降なら動くはずです
pyserial Python からシリアルポートを使うためのライブラリ。pip install pyserial で入れる
USB ケーブル ファームの書き込みに使ったのと同じ、データ通信できる USB-C ケーブル

ja_res.bin と upload.py は、同じフォルダ(例: デスクトップの rxja フォルダ)に置いておくと、あとのコマンドが簡単になります。

手順の全体

  1. パソコンに Python と pyserial を入れる(最初の 1 回だけ)
  2. 無線機を RxJa で起動し、USB でパソコンにつなぐ
  3. 無線機がつながったポート名(COM3 や /dev/ttyACM0 など)を調べる
  4. upload.py を実行する
  5. 表示が日本語になったことを確かめる

以下、OS ごとに説明します。


Windows の場合

1. Python と pyserial を入れる

  1. python.org のダウンロードページ から Python 3 のインストーラをダウンロードして実行します。
    • 最初の画面の 「Add python.exe to PATH」にチェックを入れてから「Install Now」を押してください。
    • Microsoft Store 版の Python でもかまいません。
  2. スタートメニューで「cmd」と入力し、「コマンド プロンプト」を開きます。
  3. 次のコマンドで pyserial を入れます。
py -m pip install pyserial

py が見つからないと言われたら python -m pip install pyserial を試してください。

2. 無線機をつなぐ

無線機の電源を普通に入れ(RxJa の起動画面が出て、待ち受け画面になる状態)、USB-C ケーブルでパソコンにつなぎます。

3. ポート名を調べる

  1. スタートボタンを右クリック →「デバイス マネージャー」を開きます。
  2. 「ポート (COM と LPT)」を開くと、無線機が 「USB シリアル デバイス (COM3)」 のような名前で出ています(番号はパソコンによって違います)。
    • わからないときは、ケーブルを抜き差しして、出たり消えたりする項目を探してください。
    • Windows 10 / 11 では専用のドライバは要りません(標準の USB シリアルドライバで動きます)。

4. 転送する

コマンドプロンプトで、ja_res.bin と upload.py を置いたフォルダに移動してから実行します。COM3 は手順 3 で調べた名前に置き換えてください。

cd %USERPROFILE%\Desktop\rxja
py upload.py COM3 ja_res.bin

Mac の場合

1. Python と pyserial を入れる

「ターミナル」(アプリケーション → ユーティリティ)を開いて、次を実行します。

python3 --version

続けて pyserial を入れます。

python3 -m pip install --user pyserial

「externally-managed-environment」というエラーが出る場合は、仮想環境を作って入れます。

cd ~/Desktop/rxja
python3 -m venv .venv
.venv/bin/pip install pyserial

(この場合、あとの手順では python3 の代わりに .venv/bin/python を使います。)

2〜3. 無線機をつなぎ、ポート名を調べる

無線機を RxJa で起動して USB でつなぎ、ターミナルで次を実行します。

ls /dev/cu.usbmodem*

/dev/cu.usbmodem1101 のような名前が出れば、それが無線機です。

4. 転送する

cd ~/Desktop/rxja
python3 upload.py /dev/cu.usbmodem1101 ja_res.bin

Linux の場合

1. pyserial を入れる

多くのディストリビューションには Python 3 が最初から入っています。pyserial はパッケージか、仮想環境で入れます。

# Debian / Ubuntu
sudo apt install python3-serial
# または仮想環境
python3 -m venv .venv && .venv/bin/pip install pyserial

2〜3. 無線機をつなぎ、ポート名を調べる

UV-K1 を USB-C でつないだ場合は /dev/ttyACM0(USB CDC)になります。K プラグの USB シリアルケーブルでつないだ場合は /dev/ttyUSB0 などです。

ls /dev/ttyACM* /dev/ttyUSB*

「Permission denied」になる場合は、自分を dialout グループに入れてログインし直します(sudo usermod -aG dialout $USER)。

4. 転送する

python3 upload.py /dev/ttyACM0 ja_res.bin

転送中の表示

うまく動くと、次のように表示されます(数字は例です)。

radio: UV-K5 Firmware, EGZUMER+F4HWN v6.1.0
write  141512 / 141512 bytes    2.9 KB/s
verify 141512 / 141512 bytes    3.2 KB/s
done: 141512 bytes at SPI 0x122000
行 意味
radio: … 無線機と通信できた。版の文字列は、パソコンのツールとの互換のため F4HWN のままです(RxJa でも正常)
write 書き込みの進み具合
verify 書いた内容を読み戻して照合している
done: … 完了

途中で止まってしまったら

データの先頭にある「目印」(4 バイトの識別子)はいちばん最後に書き込むようになっています。途中で切れた場合、目印がないので、ファームはそのデータを使わず英語表示に戻るだけです。変な文字が出たり、無線機が壊れたりはしません。もう一度同じコマンドを実行してください。

エラーが出たとき

表示 原因と対処
could not open port … / FileNotFoundError ポート名が違う、またはほかのソフトがポートを使っている。RxJa Tools・UV Studio・CHIRP のタブ・ウィンドウを閉じてからやり直す。ポート名を調べ直す
PermissionError / Permission denied Linux ではグループ設定(上記)、Windows ではほかのソフトがポートを使っている
no reply to 0x0514 無線機から返事がない。ケーブルが充電専用、無線機が DFU モードのまま、電源が切れている、ポート違い など。電源を入れ直して普通に起動してからやり直す
no reply to 0x0744 (not RxJa firmware, …) 無線機は応答したが、日本語データの受け取りに対応していない。RxJa ではないファーム(元の F4HWN や純正)が入っている。先に ファームの書き込み をする
… is not a resource image 指定したファイルが ja_res.bin ではない、またはダウンロードが壊れている
format version N, this tool and the firmware need 3 ja_res.bin と upload.py の版が合っていない。同じリリースのものを使う
write 0x…: bad timestamp (no hello?) 通信の途中で無線機がリセットされたなど。やり直す
verify failed at offset 0x… 書き込んだ内容が読み戻しと一致しない。もう一度実行する。繰り返すならケーブルを替えてみる
ModuleNotFoundError: No module named 'serial' pyserial が入っていない(上記の手順 1)

よくある質問

Q. RxJa Tools・UV Studio・CHIRP でファームやチャンネルを書き込むと、日本語データは消えますか? A. 消えません。日本語データは外付け SPI フラッシュの 0x122000〜0x14BFFF に置いていて、ファーム本体・チャンネル・設定・マルチブートの領域とは重なりません。RxJa Tools でも本家の UV Studio でも同じです(RxJa Tools で RxJa のファームを一覧から書いたときは、続けて日本語データを書き直すだけです)。

Q. 新しい版の RxJa が出たら? A. ファームと ja_res.bin を両方とも同じ版に入れ替えてください。RxJa Tools の ファームの書き込み で一覧から新しい版を選べば、両方まとめて入れ替わります。日本語データだけを入れ替えるときは、このページの手順でファームと同じ版を選んでください。同じデータをもう一度送っても問題ありません(変わっていない部分はフラッシュへの書き込みを省きます)。

Q. 日本語をやめて英語に戻したい A. 今の版には「日本語データを消す」機能はありません。元の F4HWN のファームを書き込めば英語表示になります(日本語データは使われないまま残るだけで、害はありません)。

Q. 純正ファームに戻したら、日本語データはどうなりますか? A. 純正ファームに書き込んだだけでは消えません。ただし、純正ファームを使っているあいだに、この領域が書き換えられる可能性があります(純正ファームの中身にこの領域の番地がふくまれていました。実際に書き換えるかは未確認)。RxJa に戻して英語表示や文字化けになったら、このページの手順で日本語データを書き直してください。詳しくは 純正ファームに戻す#戻したあとに残るもの。

Q. 訳を直したい A. 訳語の変更とビルド を見てください。ファームを書き直さずに、日本語データを作り直して送るだけで変えられます。作った ja_res.bin は、RxJa Tools の「日本語データ」の画面で「ファイルを選ぶ」を選べば書き込めます(upload.py でもかまいません)。