日本語データの転送
RxJa のファーム(f4hwn.rxja.bin)には日本語のフォントが入っていません。フォントと訳は ja_res.bin(約 140KB)という別のデータになっていて、これを本体の中の「外付け SPI フラッシュ」に書き込むと日本語表示になります。
- 書き込むまでは英語で表示されます(元の F4HWN とほぼ同じ見た目)。壊れているわけではありません。
- 書き込みは 1 回だけで済みます。電源を切っても消えません。
- ファームを書き直しても(同じ版なら)日本語データは残ります。
注意
このページの手順は、ソースコードと RxJa Tools のプログラムを読んで確かめたものです。RxJa Tools の一覧から RxJa を書き込んだあとの、日本語データの自動の書き込みは、作者の UV-K1 で確かめています。
このページを使うとき
ふつうは、このページの作業はいりません。ファームの書き込み で RxJa Tools の一覧から RxJa を選んで書き込むと、ファームのあとに日本語データも自動で書き込まれるからです。
このページを使うのは、次のようなときです。
- 自動の書き込みをしなかった・うまくいかなかったとき
- ファームの書き込みのあとで「日本語データは後で書く」を押した
- 「本体が見つかりませんでした。…」と出て、自動の書き込みが終わらなかった
- ファームを一覧からではなく「またはパソコン内のファイルを使う」で書き込んだ(このときは日本語データは自動では書き込まれません)
- マルチブート のスロットに 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 に同梱されているデータを使えます。自分で作ったデータを書くときだけ、そのファイルを用意します |
手順
- 無線機を普通に起動します。 PTT を押さずに電源を入れ、RxJa の待ち受け画面になった状態にします。
- RxJa のファームが動いている必要があります。元の F4HWN や純正ファームでは書き込めません。まだなら先に ファームの書き込み をしてください。
- DFU モード(RxJa Tools の画面では「書き込みモード」。PTT を押しながら電源を入れた、書き込み待ちの状態)では書き込めません。
- 無線機を USB-C ケーブルでパソコンにつなぎます。
- ブラウザで RxJa Tools の「日本語データ」の画面を開きます。
- https://dosei.github.io/uvk1-japanese/tools/#ja-data
- RxJa Tools のほかの画面にいるときは、左のメニューの「日本語データ」を押します。
- 「書き込むデータ」で、書き込むものを選びます。
- 同梱データ:
v1.2.0 · 同梱データのように版ごとに並んでいます。本体のファームと同じ版を選んでください(v1.2.0 のファームで日本語のチャンネル名を表示するには、v1.2.0 の日本語データが必要です)。同梱データは、読み込んだときに SHA-256(ファイルの指紋のようなもの)で壊れていないか自動で確かめます。 - ファイルを選ぶ:自分で作った
ja_res.binなどを書くときに選び、パソコンの中のファイルを指定します。 - 選ぶと、その下にデータの大きさ(バイト数)と SHA-256 の先頭が表示されます。
- 同梱データ:
- 「書き込み後に読み戻して照合する(おすすめ)」は、チェックを入れたままにしておきます。書いた内容を読み戻して、正しく書けたかを確かめます。
- 「ポートを選んで書き込む」を押します。シリアルポートを選ぶ画面が出るので、無線機のポートを選んで「接続」を押します。
- 書き込みが始まります。「書き込み中… N%」、続いて「照合中… N%」と進み具合が出ます。
- 合わせて 1〜2 分ほどかかる見込みです。途中でケーブルを抜いたり、無線機の電源を切ったりしないでください。
- 接続したときに出る版の文字は、パソコンのツールとの互換のため F4HWN のままです。RxJa でも正常です。
- 終わると、次のように出ます。
- 照合ありのとき:「書き込み・照合とも完了 👍🏼 本体が英語表示のままなら、電源を入れ直してください。」
- 照合なしのとき:「書き込み完了 👍🏼 本体の電源を入れ直すと日本語表示になります。」
- 表示が英語のままなら、無線機の電源を一度切って、普通に入れ直します。そのあと 表示が日本語になったか確かめます。
途中で中止したとき
書き込み中は「中止」ボタンで止められます。
- 書き込みの途中で中止した:「中止しました。本体は英語表示で起動します(識別子を最後に書くため)。もう一度書き込めば直ります。」と出ます。データの先頭にある「目印」(識別子)はいちばん最後に書き込むので、途中で止めると、ファームはそのデータを使わず英語表示で動くだけです。変な文字が出たり、無線機が壊れたりはしません。もう一度書き込んでください。
- 照合の途中で中止した:「照合の途中で中止しました。書き込み自体は終わっています。」と出ます。
ケーブルが抜けたなどで途中で切れたときも、同じように英語表示に戻るだけです。もう一度書き込めば直ります。
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…)」 | 書き込んだ内容が読み戻しと一致しない。もう一度書き込む。繰り返すならケーブルを替えてみる |
表示が日本語になったか確かめる
- MENU キーを押すと、カテゴリ画面に「チャンネル」「スキャン」「キー」「電源」…と日本語で出ます。
- 電源を入れ直すと、起動画面に「ようこそ」が出ます(メニュー一覧 の「起動表示」が「メッセージ」または「すべて」のとき)。
別の方法: 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 フォルダ)に置いておくと、あとのコマンドが簡単になります。
手順の全体
- パソコンに Python と pyserial を入れる(最初の 1 回だけ)
- 無線機を RxJa で起動し、USB でパソコンにつなぐ
- 無線機がつながったポート名(
COM3や/dev/ttyACM0など)を調べる upload.pyを実行する- 表示が日本語になったことを確かめる
以下、OS ごとに説明します。
Windows の場合
1. Python と pyserial を入れる
- python.org のダウンロードページ から Python 3 のインストーラをダウンロードして実行します。
- 最初の画面の 「Add python.exe to PATH」にチェックを入れてから「Install Now」を押してください。
- Microsoft Store 版の Python でもかまいません。
- スタートメニューで「cmd」と入力し、「コマンド プロンプト」を開きます。
- 次のコマンドで pyserial を入れます。
py -m pip install pyserial
py が見つからないと言われたら python -m pip install pyserial を試してください。
2. 無線機をつなぐ
無線機の電源を普通に入れ(RxJa の起動画面が出て、待ち受け画面になる状態)、USB-C ケーブルでパソコンにつなぎます。
3. ポート名を調べる
- スタートボタンを右クリック →「デバイス マネージャー」を開きます。
- 「ポート (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
- バージョンが表示されれば Python は入っています。
- 「コマンドライン・デベロッパツールをインストールしますか」と聞かれたら「インストール」を押し、終わってからもう一度実行してください。または python.org のインストーラでも入れられます。
続けて 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: … |
完了 |
- 書き込みと照合で、合わせて数分かかります(通信速度 38400bps のため)。途中でケーブルを抜いたり、無線機の電源を切ったりしないでください。
- 最後の
done:が出れば完了です。再起動しなくても、次に画面が描き直されたときから日本語になります。念のため電源を入れ直してもかまいません。 - 照合をとばしたいときは
--no-verifyを付けます(おすすめしません)。
途中で止まってしまったら
データの先頭にある「目印」(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 でもかまいません)。