First Notes on Reverse Engineering Kenwood TH-D74 Firmware
These are my notes loading and decompiling the Kenwood TH-D74 firmware, which Hash (@BitBangingBytes) managed to dump the BGA Flash ROM of a damaged radio. With a little luck and some other volunteers, this might lead to something like md380tools or OpenGD77, allowing custom software to run within the TH-D74 for decoding new digital protocols, storing a repeater database on the SD Card, or other fancy things.
Let’s begin by exploring how the firmware needs to be loaded into memory, then cover a few handy tables in memory that can be used to identify which functions of code are responsible for implementing a feature.
I’ll keep things are agnostic of version number as possible, but all explicit pointer addresses refer to Version 1.10 of the firmware.
73 from Knoxville,
–Travis Goodspeed, KK4VCZ
UPDATE: If you’d like to play along, DD4CR has broken the firmware decryption, allowing you to extract the firmware yourself from an update rather than desolder the Flash chip.
Linking and Loading
The Flash memory dump is a single file, 32MB in size, with no formatting or wrapping beyond what the radio itself uses internally. This holds not just software, but also the user’s memory settings and the list of DSTAR repeaters.
Applications helpfully have ASCII labels, and the first program is the EX-4409 Boot Program V1.01.00.
dell% hd raw.bin | head -n 30
00000000 11 00 00 00 04 f0 1f e5 00 01 00 60 01 00 a0 e3 |...........`....|
00000010 1e ff 2f e1 1e ff 2f e1 ff ff ff ff ff ff ff ff |../.../.........|
00000020 45 58 2d 34 34 30 39 20 42 6f 6f 74 20 50 72 6f |EX-4409 Boot Pro|
00000030 67 72 61 6d 00 ff ff ff ff ff ff ff ff ff ff ff |gram............|
00000040 56 31 2e 30 31 2e 30 30 20 20 20 20 20 20 20 00 |V1.01.00 .|
00000050 f8 40 2d e9 00 60 a0 e1 03 00 a0 e3 a6 30 00 eb |.@-..`.......0..|
00000060 00 40 a0 e1 01 50 a0 e1 03 00 a0 e3 a2 30 00 eb |.@...P.......0..|
00000070 00 70 a0 e3 01 00 00 ea 03 00 a0 e3 9e 30 00 eb |.p...........0..|
00000080 04 00 50 e0 05 10 c1 e0 07 00 51 e1 f9 ff ff 3a |..P.......Q....:|
00000090 01 00 00 8a 06 00 50 e1 f6 ff ff 3a f1 80 bd e8 |......P....:....|
000000a0 10 b5 07 49 79 44 18 31 06 4c 7c 44 16 34 04 e0 |...IyD.1.L|D.4..|
000000b0 0a 68 08 1d 89 18 88 47 01 00 a1 42 f8 d1 10 bd |.h.....G...B....|
000000c0 20 e4 00 00 2c e4 00 00 ff ff ff ff ff ff ff ff | ...,...........|
000000d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000100 00 00 0f e1 1f 00 c0 e3 13 00 80 e3 00 f0 21 e1 |..............!.|
00000110 18 d0 9f e5 18 c0 9f e5 ff ff ff eb 1c ff 2f e1 |............../.|
00000120 10 0f 11 ee 04 00 c0 e3 10 0f 01 ee 1e ff 2f e1 |............../.|
A little later, we find the FldmLoader,
00020000 1c f0 9f e5 1c f0 9f e5 1c f0 9f e5 1c f0 9f e5 |................|
00020010 1c f0 9f e5 00 00 00 00 18 f0 9f e5 18 f0 9f e5 |................|
00020020 ff ff ff 00 50 1d 02 c0 5c 1f 02 c0 90 ad 00 c0 |....P...\.......|
00020030 84 1f 02 c0 ac 1f 02 c0 64 ae 00 c0 20 1f 02 c0 |........d... ...|
00020040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00020080 45 58 2d 34 34 32 30 20 46 6c 64 6d 4c 6f 61 64 |EX-4420 FldmLoad|
00020090 65 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |er..............|
000200a0 31 2e 30 30 2e 30 30 2e 32 33 20 20 20 20 20 00 |1.00.00.23 .|
000200b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000200c0 00 00 20 60 00 00 00 61 00 00 00 c0 00 00 30 00 |.. `...a......0.|
000200d0 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 |..0.............|
000200e0 00 00 20 60 00 00 60 60 00 00 00 c0 00 00 30 00 |.. `..``......0.|
000200f0 00 00 30 00 ff ff ff ff ff ff ff ff 00 00 00 00 |..0.............|
00020100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00020200 00 00 00 00 00 00 00 00 00 00 00 70 d8 d8 70 00 |...........p..p.|
00020210 3e 30 30 30 30 30 30 30 30 30 30 00 00 00 00 00 |>0000000000.....|
And what we’re really interested in is the third image, the EX-4409 Firmware V1.10.000 beginning at file address 0x0020.0000.
00200000 1c f0 9f e5 1c f0 9f e5 1c f0 9f e5 1c f0 9f e5 |................|
00200010 1c f0 9f e5 00 00 00 00 18 f0 9f e5 18 f0 9f e5 |................|
00200020 ff ff ff 00 74 39 15 c0 ac 3b 15 c0 68 5a 09 c0 |....t9...;..hZ..|
00200030 d4 3b 15 c0 fc 3b 15 c0 3c 5b 09 c0 70 3b 15 c0 |.;...;..<[..p;..|
00200040 5a 5a 7a 6f 2e 2e 28 2d 5f 2d 20 29 20 45 58 2d |ZZzo..(-_- ) EX-|
00200050 34 34 32 30 20 32 30 31 33 2d 30 34 2d 30 31 00 |4420 2013-04-01.|
00200060 ff ff cd b6 ff ff ff ff ff ff ff ff ff ff ff ff |................|
00200070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
00200080 45 58 2d 34 34 30 39 20 46 69 72 6d 77 61 72 65 |EX-4409 Firmware|
00200090 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
002000a0 56 31 2e 31 30 2e 30 30 30 20 20 20 20 20 20 00 |V1.10.000 .|
002000b0 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
002000c0 00 00 20 60 00 00 00 61 00 00 00 c0 00 00 50 00 |.. `...a......P.|
002000d0 00 00 30 00 ff ff ff ff ff ff ff ff ff ff ff ff |..0.............|
002000e0 00 00 20 60 00 00 60 60 00 00 00 c0 00 00 50 00 |.. `..``......P.|
002000f0 00 00 30 00 ff ff ff ff ff ff ff ff ff ff ff ff |..0.............|
00200100 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00200200 38 b5 04 00 0d 00 0f f0 a7 fd 01 28 01 d1 01 20 |8..........(... |
00200210 00 e0 00 20 14 22 07 49 ab 00 5b 19 db 00 c9 18 |... .".I..[.....|
00200220 83 00 18 18 80 00 09 18 20 00 10 f0 d8 f9 31 bd |........ .....1.|
So now we know the file locations of the three applications, and from AG5OW’s wiki we know that the code will be running in an OMAP L138 chip. In contrast to the ARM Cortex chip used by the MD380, this is a more powerful core that can run both 32-bit ARM instructions and the denser 16-bit Thumb2 instruction set.
While Cortex applications usually begin with an initial stack pointer followed by a list of odd (because Thumb2) interrupt handle addresses, full sized ARM firmware usually begins with executable instructions as interrupt handlers.
So let’s use Radare2 to disassemble these entry points in order to see
where the code might run inside of the device. The instructions I’m
looking for all have an ending byte of e3
or e5
, the appear near
the beginning and the branch to an absolute address by loading a value
from a constant pool into the program counter.
dell% r2 -e asm.arch=arm -e asm.bits=32 raw.bin
-- What about taking a break? Here, have this nice 0xCC.
[0x00000000]> pd 5 @0x0
0x00000000 11000000 andeq r0, r0, r1, lsl r0
0x00000004 04f01fe5 ldr pc, [0x00000008] ; [0x8:4]=0x60000100
0x00000008 00010060 andvs r0, r0, r0, lsl 2
0x0000000c 0100a0e3 mov r0, 1
0x00000010 1eff2fe1 bx lr
[0x00000000]>
Sure enough, the Boot Program branches to 0x600.00100 and from our earlier disassembly, we see that a gap of FF bytes ends at file address 0x100, so this program is probably just copied into memory at 0x6000.0000!
The FldmLoad program and the Firmware program both seem to run from the 0xc000.0000 region.
[0x00000000]> pd 5 @0x00020000
0x00020000 1cf09fe5 ldr pc, [0x00020024] ; [0x20024:4]=0xc0021d50
0x00020004 1cf09fe5 ldr pc, [0x00020028] ; [0x20028:4]=0xc0021f5c
0x00020008 1cf09fe5 ldr pc, [0x0002002c] ; [0x2002c:4]=0xc000ad90
0x0002000c 1cf09fe5 ldr pc, [0x00020030] ; [0x20030:4]=0xc0021f84
0x00020010 1cf09fe5 ldr pc, [0x00020034] ; [0x20034:4]=0xc0021fac
[0x00000000]> pd 5 @0x00200000
0x00200000 1cf09fe5 ldr pc, [0x00200024] ; [0x200024:4]=0xc0153974
0x00200004 1cf09fe5 ldr pc, [0x00200028] ; [0x200028:4]=0xc0153bac
0x00200008 1cf09fe5 ldr pc, [0x0020002c] ; [0x20002c:4]=0xc0095a68
0x0020000c 1cf09fe5 ldr pc, [0x00200030] ; [0x200030:4]=0xc0153bd4
0x00200010 1cf09fe5 ldr pc, [0x00200034] ; [0x200034:4]=0xc0153bfc
At this point, you can dice up the file and load it into Radare2 at the correct address, or into a competing program such as IDA Pro, Ghidra, or Binary Ninja simply by carving out the appropriate section and loading it at 0x6000.0000 or 0xc000.0000 with a bit more space tacked on the end for use as RAM.
When loading the image, you’ll find that although the entry point
begins in 32-bit mode, most functions are written in Thumb2
instructions. Use alt+g
in IDA Pro or ^R
in Ghidra to set the T
register to 1 in order to mark a region as Thumb2 instructions.
Images
The firmware uses LibPNG to parse images contained within Flash, including all the backgrounds and icons. You can carve these out with binwalk, or use Ghidra’s handy feature of displaying images inline in the disassembly listing.
LibPNG functions can be found and labeled, particularly those that
call png_benign_error()
with unique error messages. With a bit of
work, it shouldn’t be too difficult to identify which code loads which
icon.
Strings and Localization
The radio’s interface is available in both English and Japanese, with some form of indirection that chooses the locale from a table of twenty-byte strings in each language, with the English string first. Presumably because there is plenty of space in Flash, this table is not compressed.
The table begins at 0xc000.026c with spaces in each language, followed by TX/RX (送受信), Memory (メモリー), Audio File (オーディオファイル) and dozens of others.
Table lookups are performed by calling void localize_string(char *dst, int entry)
at 0xc000.0238. This function loads an entry from
the table and optionally adds twenty to the address in Japanese mode.
void localize_string(char *dst,int entry) {
int j = localize_isjapanese();
strncpy(dst,
localize_table + (j==1)*0x14 + entry*0x28,
0x14);
return;
}
So whenever the radio wants to display TX/RX or 送受信, it will run something like this, where 1 is the magic constant.
char buf[0x14];
localize_string(buf, 1);
printf("The local word is: %s\n", buf);
Working backward, if we wanted a list of all functions that display
TX/RX, we would want to find all function calls to localize_string()
where the second parameter equals 1. Memory would be 2, and Audio
File would be 3. It gets tedious to do this by hand, so let’s
automate it.
/* This is a janky little C program to dump the string localization
table from Kenwood TH-D74 firmware image. It should self-adjust to
any firmware version.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//Need this table from the real firmware.
char* localize_table=0;;
char fw[33554432];
void localize_string(char *dst,int entry) {
int j = 0; //Not japanese.
strncpy(dst,
localize_table + (j==1)*0x14 + entry*0x28,
0x14);
return;
}
char* findtable(){
char *maybetable;
const char *spaces=" \0 \0";
for(int i=0; i<33554432; i++){
maybetable=fw+i;
if(memcmp(spaces,maybetable,40)==0){
printf("Found table at offset %x\n", i);
return maybetable;
}
}
printf("Error, table not found.\n");
exit(1);
}
void loadfw(char *filename){
FILE *fwfile=fopen(filename, "rb");
size_t readbytes=fread(fw, 33554432, 1, fwfile);
fclose(fwfile);
}
int main(){
char word[20];
loadfw("raw.bin");
localize_table=findtable();
printf("| dec | hex | word |\n");
printf("| --- | ----- | -------------------- |\n");
for(int i=0; i<377; i++){
localize_string(word, i);
printf("| %03d | 0x%03x | %20s | \n", i, i, word);
}
}
This produces the following table, abbreviated here but included in its entire bilingual glory at the end of the article.
dec | hex | word |
---|---|---|
000 | 0x000 | |
001 | 0x001 | TX/RX |
002 | 0x002 | Memory |
003 | 0x003 | Audio File |
004 | 0x004 | GPS |
… | … | … |
Having this table, we can now begin to name all of the functions that
render strings. So when localize_string(foo,0x6b);
, we know that
char foo[]
is being populated with “My Position” or “自局位置”.
CAT Commands
Of particular interest to me is the CAT protocol of the TH-D74, as
I’ve been writing a programming tool for Kenwood radios. There is a
list by LA3QMA describing
all of the standard commands for the radio, but there are extra
commands in the 0G
service mode which might be useful.
At memory address 0xc002.a828, there is a table of all commands in the standard mode, as first a 32-bit handler address and then a 4-byte character array of the name. A second table at 0xc006.4edc lists the service mode commands in the same format.
From LA3QMA’s docs, we know that the 0G
command
is called with the uppercase word KENWOOD as its only parameter to
enter service mode. Now that we have the table, we can hunt its
handler address and decompile the implementation. Sure enough,
there’s a call to strncmp()
to verify the parameter!
Service mode commands include 0E, 0G, 0M, 0R, 0S, 0W, 0Y, 1A, 1D, 1E, 1F, 1G, 1I, 1N, 1U, 1V, 1W, 2V, 9E, and 9R. I had hoped that there was a command for reading and writing memory names, as exists in other Kenwood radios, but I wasn’t able to find one.
What’s next?
As things stand, the TH-D74 firmware can be read and reverse engineered. With this documentation, you should be able to load the image into your favorite toolchain, name functions according to their localized strings, and begin to parse the implementations of any mystery CAT commands.
We’ll also need to understand more of the data structures in memory, such as the channel information and the repeater information. Wouldn’t it be nifty to store a database of all the world’s analog repeaters on the SD Card, to fetch the nearest ones by GPS position, as we can do for DSTAR repeaters in the stock firmware?
If our goal is to eventually patch this firmware with our own changes, we’ll need more than just a lot of symbol names for this image. We’ll need a way to dump memory from a running radio, without desoldering its Flash chip, and also to write changes back to RAM. JTAG debugging isn’t strictly necessary, but it would be nice.
The fun is just beginning.
Appendix: Complete String List
dec | hex | english | japanese |
---|---|---|---|
000 | 0x000 | ||
001 | 0x001 | TX/RX | 送受信 |
002 | 0x002 | Memory | メモリー |
003 | 0x003 | Audio File | オーディオファイル |
004 | 0x004 | GPS | GPS |
005 | 0x005 | APRS | APRS |
006 | 0x006 | Digital | デジタル |
007 | 0x007 | FM Broadcasting | FMラジオ放送 |
008 | 0x008 | SD Card | SDカード |
009 | 0x009 | Configuration | 本体設定 |
010 | 0x00a | RX | 受信 |
011 | 0x00b | TX | 送信 |
012 | 0x00c | RX Filter | 受信フィルター |
013 | 0x00d | Scan | スキャン |
014 | 0x00e | Repeater | レピーター |
015 | 0x00f | VOX | VOX |
016 | 0x010 | DTMF | DTMF |
017 | 0x011 | CW | CW |
018 | 0x012 | Others | その他 |
019 | 0x013 | Memory Channel | メモリーチャンネル |
020 | 0x014 | Repeater List | レピーターリスト |
021 | 0x015 | Callsign List | コールサインリスト |
022 | 0x016 | Recording File | 録音ファイル |
023 | 0x017 | Voice Message | ボイスメッセージ |
024 | 0x018 | Basic Settings | 基本設定 |
025 | 0x019 | Track Log | 軌跡ログ |
026 | 0x01a | Beacon TX Control | ビーコン送信制御 |
027 | 0x01b | QSY Information | QSY情報 |
028 | 0x01c | SmartBeaconing | SmartBeaconing |
029 | 0x01d | Waypoint | ウェイポイント |
030 | 0x01e | Packet Filter | パケットフィルター |
031 | 0x01f | Message | メッセージ |
032 | 0x020 | Notification | 通知 |
033 | 0x021 | RX History | 受信履歴 |
034 | 0x022 | TX/RX | 送受信 |
035 | 0x023 | Digital Squelch | デジタルスケルチ |
036 | 0x024 | GPS Data TX | GPSデータ送信 |
037 | 0x025 | RX Notification | 受信通知 |
038 | 0x026 | Memory | メモリー |
039 | 0x027 | Export | エクスポート |
040 | 0x028 | Import | インポート |
041 | 0x029 | Unmount | アンマウント(取り外し) |
042 | 0x02a | Format | フォーマット(初期化) |
043 | 0x02b | Memory Size | メモリーサイズ |
044 | 0x02c | Display | ディスプレイ |
045 | 0x02d | Audio | オーディオ |
046 | 0x02e | Battery | バッテリー |
047 | 0x02f | Bluetooth | Bluetooth |
048 | 0x030 | Auxiliary | 補助機能 |
049 | 0x031 | Date & Time | 日時 |
050 | 0x032 | Lock | ロック |
051 | 0x033 | Units | 単位 |
052 | 0x034 | Interface | インターフェース |
053 | 0x035 | System | システム |
054 | 0x036 | Programmable VFO | プログラマブルVFO |
055 | 0x037 | Beat Shift | ビートシフト |
056 | 0x038 | TX Inhibit | 送信禁止 |
057 | 0x039 | Detect Out Select | 検波出力選択 |
058 | 0x03a | Time-out Timer | タイムアウトタイマー |
059 | 0x03b | FM Narrow | FMナロー |
060 | 0x03c | MW/SW Antenna | 中波/短波アンテナ種類 |
061 | 0x03d | FM BC Antenna | FM放送アンテナ種類 |
062 | 0x03e | Mic. Sensitivity | マイク感度 |
063 | 0x03f | WX Alert | WXアラート |
064 | 0x040 | SSB High Cut | SSBハイカット |
065 | 0x041 | CW Width | CW通過帯域幅 |
066 | 0x042 | AM High Cut | AMハイカット |
067 | 0x043 | Auto FIL. Expansion | 受信フィルタ自動拡大 |
068 | 0x044 | Resume | 再開条件 |
069 | 0x045 | Resume(Digital) | 再開条件(デジタル) |
070 | 0x046 | Time Restart | タイムオペレート再開 |
071 | 0x047 | Carrier Restart | キャリアオペレート再開 |
072 | 0x048 | Visual Scan Range | ビジュアルスキャン範囲 |
073 | 0x049 | Priority Scan | プライオリティスキャン |
074 | 0x04a | Scan Auto Backlight | スキャンオートバックライト |
075 | 0x04b | Auto Weather Scan | オートウェザースキャン |
076 | 0x04c | Offset Frequency | オフセット周波数 |
077 | 0x04d | Auto Offset | オートオフセット |
078 | 0x04e | CALL Key | CALLキー |
079 | 0x04f | 1750Hz TX Hold | 1750Hz送信保持 |
080 | 0x050 | VOX | VOX |
081 | 0x051 | Gain | ゲイン |
082 | 0x052 | Delay | ディレイ |
083 | 0x053 | TX on Busy | ビジー時送信 |
084 | 0x054 | Encode Speed | 送出スピード |
085 | 0x055 | Pause Time | ポーズ時間 |
086 | 0x056 | TX Hold | 送信保持 |
087 | 0x057 | DTMF Memory | DTMFメモリー |
088 | 0x058 | EchoLink Memory | EchoLinkメモリー |
089 | 0x059 | Break-In | ブレークイン |
090 | 0x05a | Delay Time | ディレイタイム |
091 | 0x05b | Pitch Frequency | ピッチ周波数 |
092 | 0x05c | CW on FM | CW on FM |
093 | 0x05d | Reverse | リバース |
094 | 0x05e | QSO Log | QSOログ |
095 | 0x05f | LED Control | LEDコントロール |
096 | 0x060 | View List | リスト表示 |
097 | 0x061 | Group Name | グループネーム |
098 | 0x062 | Recall Method | 呼び出し方法 |
099 | 0x063 | Group Link | グループリンク |
100 | 0x064 | CALL Ch List | CALLチャンネルリスト |
101 | 0x065 | Lockout | ロックアウト |
102 | 0x066 | Recording | 録音 |
103 | 0x067 | Recording Band | 録音対象バンド |
104 | 0x068 | TX Monitor | 送信モニター |
105 | 0x069 | Digital Auto Reply | デジタル自動応答 |
106 | 0x06a | Built-in GPS | 内蔵GPS |
107 | 0x06b | My Position | 自局位置 |
108 | 0x06c | Position Ambiguity | 自局位置あいまい |
109 | 0x06d | Operating Mode | 動作モード |
110 | 0x06e | Battery Saver | 省電力 |
111 | 0x06f | PC Output | PC出力 |
112 | 0x070 | Sentence | センテンス |
113 | 0x071 | Clear Track Log | 軌跡ログ消去 |
114 | 0x072 | Record Method | 記録方法 |
115 | 0x073 | Interval | インターバル |
116 | 0x074 | Distance | 距離 |
117 | 0x075 | My Callsign | 自局コールサイン |
118 | 0x076 | Icon | アイコン |
119 | 0x077 | Position Comment | ポジションコメント |
120 | 0x078 | Status Text | ステータステキスト |
121 | 0x079 | Packet Path | パケットパス |
122 | 0x07a | Data Speed | データスピード |
123 | 0x07b | Data Band | データバンド |
124 | 0x07c | DCD Sense | DCDセンス |
125 | 0x07d | TX Delay | TXディレイ |
126 | 0x07e | APRS Lock | APRSロック |
127 | 0x07f | Method | 送信方法 |
128 | 0x080 | Initial Interval | 自動送信間隔 |
129 | 0x081 | Decay Algorithm | ディケイアルゴリズム |
130 | 0x082 | Prop. Pathing | プロポーショナルパッシング |
131 | 0x083 | Speed | 速度出力 |
132 | 0x084 | Altitude | 高度出力 |
133 | 0x085 | Object | オブジェクト |
134 | 0x086 | QSY Info. in Status | QSY情報付加 |
135 | 0x087 | Tone/Narrow | トーン/ナロー |
136 | 0x088 | Shift/Offset | シフト/オフセット |
137 | 0x089 | QSY Limit Distance | QSY情報制限距離 |
138 | 0x08a | Low/High Speed | 低速/高速速度 |
139 | 0x08b | Slow Rate | 低速時送信間隔 |
140 | 0x08c | Fast Rate | 高速時送信間隔 |
141 | 0x08d | Turn Angle | 回転角度 |
142 | 0x08e | Turn Slope | 回転傾斜 |
143 | 0x08f | Turn Time | 回転時間 |
144 | 0x090 | Format | フォーマット |
145 | 0x091 | Length | 桁数 |
146 | 0x092 | Output | 出力 |
147 | 0x093 | Position Limit | 受信範囲制限 |
148 | 0x094 | Filter Type | フィルタータイプ |
149 | 0x095 | User Phrases | 定型文の編集 |
150 | 0x096 | Auto Reply | 自動応答 |
151 | 0x097 | Reply To | 自動応答先 |
152 | 0x098 | Reply Delay Time | 自動応答待ち時間 |
153 | 0x099 | Reply Message Text | 自動応答メッセージ |
154 | 0x09a | RX Beep | 受信ビープ |
155 | 0x09b | TX Beep | 送信ビープ |
156 | 0x09c | Special Call | スペシャルコール |
157 | 0x09d | Display Area | 受信通知表示領域 |
158 | 0x09e | Interrupt Time | 受信通知表示時間 |
159 | 0x09f | APRS Voice | APRSボイス |
160 | 0x0a0 | Network | ネットワーク |
161 | 0x0a1 | Voice Alert | ボイスアラート |
162 | 0x0a2 | VA Frequency | ボイスアラート周波数 |
163 | 0x0a3 | Message Group Code | メッセージグループコード |
164 | 0x0a4 | Bulletin Group Code | ブリティングループコード |
165 | 0x0a5 | Beacon Type | ビーコンタイプ |
166 | 0x0a6 | NAVITRA Group Mode | ナビトラグループモード |
167 | 0x0a7 | NAVITRA Group Code | ナビトラグループコード |
168 | 0x0a8 | NAVITRA Message | ナビトラメッセージ |
169 | 0x0a9 | View History | 履歴表示 |
170 | 0x0aa | TX Message | 送信メッセージ |
171 | 0x0ab | Direct Reply | ダイレクトリプライ |
172 | 0x0ac | Auto Reply Timing | 自動応答タイミング |
173 | 0x0ad | Data TX End Timing | データ送信終了タイミング |
174 | 0x0ae | EMR Volume Level | EMR音量 |
175 | 0x0af | RX AFC | 受信AFC |
176 | 0x0b0 | FM Auto Det. on DV | DV時FM自動検出 |
177 | 0x0b1 | Data Frame Output | データフレーム出力 |
178 | 0x0b2 | Break Call | 割り込み通話 |
179 | 0x0b3 | Select Type | タイプ選択 |
180 | 0x0b4 | Digital Code | デジタルコード |
181 | 0x0b5 | GPS Info. in Frame | GPS情報付加 |
182 | 0x0b6 | Auto TX | 自動送信 |
183 | 0x0b7 | Display Method | 表示方法 |
184 | 0x0b8 | Single Display Size | シングル表示サイズ |
185 | 0x0b9 | Dual Display Size | デュアル表示サイズ |
186 | 0x0ba | Display Hold Time | 表示保持時間 |
187 | 0x0bb | Callsign Announce | コールサイン発声 |
188 | 0x0bc | Standby Beep | スタンバイビープ |
189 | 0x0bd | FM Radio Mode | FMラジオモード |
190 | 0x0be | Auto Mute RET. Time | オートミュート復帰時間 |
191 | 0x0bf | FM Radio List | FMラジオメモリーリスト |
192 | 0x0c0 | Config Data | 設定データ |
193 | 0x0c1 | Config Data + V.Msg | 設定データ+ボイスメッセージ |
194 | 0x0c2 | Repeater List Only | レピーターリストのみ |
195 | 0x0c3 | Callsign List Only | コールサインリストのみ |
196 | 0x0c4 | Execute | 実行 |
197 | 0x0c5 | View | 表示 |
198 | 0x0c6 | microSD Card | microSDカード |
199 | 0x0c7 | Backlight Control | バックライトコントロール |
200 | 0x0c8 | Backlight Timer | バックライト点灯時間 |
201 | 0x0c9 | LCD Brightness | LCD輝度 |
202 | 0x0ca | Power-on Message | パワーオンメッセージ |
203 | 0x0cb | Single Band Display | シングルバンド表示 |
204 | 0x0cc | Meter Type | メータータイプ |
205 | 0x0cd | Background Color | 背景色 |
206 | 0x0ce | Balance | バランス |
207 | 0x0cf | TX/RX EQ | 送信/受信イコライザー |
208 | 0x0d0 | TX EQ Level | 送信イコライザーレベル |
209 | 0x0d1 | RX EQ Level | 受信イコライザーレベル |
210 | 0x0d2 | Beep | ビープ |
211 | 0x0d3 | Beep Volume | ビープ音量 |
212 | 0x0d4 | Voice Guidance | ボイスガイダンス |
213 | 0x0d5 | Voice Guidance Vol. | ボイスガイダンス音量 |
214 | 0x0d6 | USB Audio Out. Lvl. | USB オーディオ出力レベル |
215 | 0x0d7 | Battery Saver | バッテリーセーブ |
216 | 0x0d8 | APO: Auto Power Off | APO: オートパワーオフ |
217 | 0x0d9 | Battery Level | バッテリー残量 |
218 | 0x0da | Bluetooth | Bluetooth |
219 | 0x0db | Connect | 接続 |
220 | 0x0dc | Device Search | デバイス検索 |
221 | 0x0dd | Disconnect | 切断 |
222 | 0x0de | Pairing Mode | ペアリング待ち受け |
223 | 0x0df | Device Information | デバイス情報 |
224 | 0x0e0 | Auto Connect | 自動接続 |
225 | 0x0e1 | PF1 Key | PF1 キー |
226 | 0x0e2 | PF2 Key | PF2 キー |
227 | 0x0e3 | PF1 (Mic) | PF1 (マイク) |
228 | 0x0e4 | PF2 (Mic) | PF2 (マイク) |
229 | 0x0e5 | PF3 (Mic) | PF3 (マイク) |
230 | 0x0e6 | Cursor Shift | カーソルシフト |
231 | 0x0e7 | Secret Access Code | アクセス用暗証番号 |
232 | 0x0e8 | Power-on Password | パワーオンパスワード |
233 | 0x0e9 | Setting | 設定 |
234 | 0x0ea | Keys Lock Type | キーロックタイプ |
235 | 0x0eb | DTMF Keys Lock | DTMFキーロック |
236 | 0x0ec | Mic Keys Lock | マイクキーロック |
237 | 0x0ed | Volume Lock | 音量ロック |
238 | 0x0ee | Speed, Distance | 速度, 距離 |
239 | 0x0ef | Altitude, Rain | 高度, 雨量 |
240 | 0x0f0 | Temperature | 気温 |
241 | 0x0f1 | Latitude, Longitude | 緯度, 経度 |
242 | 0x0f2 | Grid Square Format | グリッドスクエアフォーマット |
243 | 0x0f3 | USB Function | USB機能選択 |
244 | 0x0f4 | PC Output(GPS) | PC出力(GPS) |
245 | 0x0f5 | PC Output(APRS) | PC出力(APRS) |
246 | 0x0f6 | KISS | PC入出力(KISS) |
247 | 0x0f7 | DV/DR | PC入出力(DV/DR) |
248 | 0x0f8 | Language | 言語 |
249 | 0x0f9 | Version | バージョン |
250 | 0x0fa | Reset | リセット |
251 | 0x0fb | Date(Y/M/D) | 日付(年/月/日) |
252 | 0x0fc | Date(M/D/Y) | 日付(月/日/年) |
253 | 0x0fd | Date(D/M/Y) | 日付(日/月/年) |
254 | 0x0fe | Time | 時刻 |
255 | 0x0ff | Time Zone | タイムゾーン |
256 | 0x100 | 0.4 kHz | 0.4 kHz |
257 | 0x101 | 0.8 kHz | 0.8 kHz |
258 | 0x102 | 1.6 kHz | 1.6 kHz |
259 | 0x103 | 3.2 kHz | 3.2 kHz |
260 | 0x104 | 6.4 kHz | 6.4 kHz |
261 | 0x105 | Group | グループ |
262 | 0x106 | Memory Group | メモリーグループ |
263 | 0x107 | Name | ネーム |
264 | 0x108 | Repeat | リピート |
265 | 0x109 | Repeat Interval | リピート間隔 |
266 | 0x10a | Callsign | コールサイン |
267 | 0x10b | Memo | メモ |
268 | 0x10c | Sub Name | サブネーム |
269 | 0x10d | Callsign (RPT1) | コールサイン (RPT1) |
270 | 0x10e | Gateway (RPT2) | ゲートウェイ (RPT2) |
271 | 0x10f | Frequency | 周波数 |
272 | 0x110 | Shift | シフト |
273 | 0x111 | Offset | オフセット |
274 | 0x112 | Pos. Accuracy | 位置情報精度 |
275 | 0x113 | Latitude | 緯度 |
276 | 0x114 | Longitude | 経度 |
277 | 0x115 | Time Zone | タイムゾーン |
278 | 0x116 | Set Property | 編集 |
279 | 0x117 | Memory Shift(M>V) | メモリーシフト(M>V) |
280 | 0x118 | Clear Memory | メモリー消去 |
281 | 0x119 | Clear Group | グループ消去 |
282 | 0x11a | Send | 送信 |
283 | 0x11b | Send | 未送信メッセージ送信 |
284 | 0x11c | Reply | 返信文の作成 |
285 | 0x11d | Edit | 編集 |
286 | 0x11e | Edit | 引用返信 |
287 | 0x11f | New | 新規作成 |
288 | 0x120 | Re-TX | メッセージの再送信 |
289 | 0x121 | Position | 位置情報の検索 |
290 | 0x122 | POS Request | ポジションリクエスト |
291 | 0x123 | Unread | 未読に変更する |
292 | 0x124 | Tune | QSYセット |
293 | 0x125 | Sort | ソート |
294 | 0x126 | Filter | フィルター |
295 | 0x127 | Copy to Pos. Memory | ポジションメモリーにコピー |
296 | 0x128 | Clear | 消去 |
297 | 0x129 | Clear All | 全消去 |
298 | 0x12a | <ソート> | |
299 | 0x12b | By Distance | 距離 |
300 | 0x12c | By Callsign | コールサイン |
301 | 0x12d | By Date/Time | 日付/時刻 |
302 | 0x12e | <フィルター> | |
303 | 0x12f | All(Off) | 全て |
304 | 0x130 | Digipeater | デジピーター |
305 | 0x131 | Weather | 気象 |
306 | 0x132 | Mobile | 移動 |
307 | 0x133 | Object | オブジェクト |
308 | 0x134 | KENWOOD | ケンウッド |
309 | 0x135 | NAVITRA | ナビトラ |
310 | 0x136 | QSY(Freq) | QSY |
311 | 0x137 | 1-Way | 1-Way |
312 | 0x138 | Others | その他 |
313 | 0x139 | Play | 再生 |
314 | 0x13a | Record | 録音 |
315 | 0x13b | Memory Name | メモリーネーム |
316 | 0x13c | Add | 追加 |
317 | 0x13d | Move | 移動 |
318 | 0x13e | DV/DR Select | DV/DR切り替え |
319 | 0x13f | TX History | 送信履歴 |
320 | 0x140 | Destination Select | 相手先選択 |
321 | 0x141 | CS Setting | 送信設定確認 |
322 | 0x142 | Route Select | 経路選択 |
323 | 0x143 | Repeater Detail | レピーター詳細 |
324 | 0x144 | Data Mode | データ通信モード |
325 | 0x145 | DR Scan | DRスキャン |
326 | 0x146 | Auto Reply | 自動応答 |
327 | 0x147 | <末尾に移動> | |
328 | 0x148 | UR: | UR: |
329 | 0x149 | MY: | MY: |
330 | 0x14a | R1: | R1: |
331 | 0x14b | R2: | R2: |
332 | 0x14c | Origination: | 送信元: |
333 | 0x14d | Destination: | 送信先: |
334 | 0x14e | Route: | 経路: |
335 | 0x14f | Repeater: | レピーター: |
336 | 0x150 | RX Frequency: | 受信周波数: |
337 | 0x151 | Message: | メッセージ: |
338 | 0x152 | Time stamp: | タイムスタンプ: |
339 | 0x153 | LAT: | LAT: |
340 | 0x154 | LON: | LON: |
341 | 0x155 | ALT: | ALT: |
342 | 0x156 | GL: | GL: |
343 | 0x157 | DIST: | DIST: |
344 | 0x158 | SPEED: | SPEED: |
345 | 0x159 | C: | C: |
346 | 0x15a | Name: | デバイス名: |
347 | 0x15b | BD Address: | BDアドレス: |
348 | 0x15c | Class of Device: | デバイスクラス: |
349 | 0x15d | Free : | 空き領域 : |
350 | 0x15e | (REC : | (録音 : |
351 | 0x15f | Capacity : | 容量 : |
352 | 0x160 | No Data | データなし |
353 | 0x161 | Target Point: | ターゲットポイント: |
354 | 0x162 | Direction: | 方向: |
355 | 0x163 | Distance: | 距離: |
356 | 0x164 | <ソート> | |
357 | 0x165 | by Name | 名前 |
358 | 0x166 | by Date/Time | 日付/時刻 |
359 | 0x167 | Position | 位置 |
360 | 0x168 | Altitude | 高度 |
361 | 0x169 | Copy to My Position | My Positionにコピー |
362 | 0x16a | Copy to APRS Object | APRSオブジェクトにコピー |
363 | 0x16b | To: | 宛先: |
364 | 0x16c | Message text: | メッセージ: |
365 | 0x16d | TX Rate: | 送信頻度: |
366 | 0x16e | Text: | テキスト: |
367 | 0x16f | Type: | タイプ: |
368 | 0x170 | Total Hops: | 中継段数: |
369 | 0x171 | Name: | ネーム : |
370 | 0x172 | Type: | タイプ: |
371 | 0x173 | Method: | 送信方法: |
372 | 0x174 | Comment: | コメント: |
373 | 0x175 | Level: | レベル: |
374 | 0x176 | Market Code | 仕向け |
375 | 0x177 | Serial Number | シリアル番号 |
376 | 0x178 | Main CPU | Main CPU |