解析日: 2026-08-07
CodexアプリはVendor JSON-RPCでFirmware、Profile、Layer、バッテリーをまとめて取得する。
リクエスト:
{"method":"device.status","params":null,"id":123}応答:
{
"result": {
"version": "v0.6.1",
"profile_index": 0,
"layer_index": 1,
"battery": 100,
"is_charging": false
},
"id": 123,
"method": "device.status"
}| フィールド | 型 | 意味 |
|---|---|---|
version |
string | Firmware version |
profile_index |
number | 選択Profile、0始まり |
layer_index |
number | 選択Layer、0始まり |
battery |
number | 0...100 |
is_charging |
boolean | 充電中ならtrue |
Codexアプリは接続時に取得し、接続中はおよそ60秒間隔で更新する。入力直後はHID処理を優先するため、Status更新を短時間延期する。
リクエスト:
{"method":"sys.version","params":null,"id":124}応答:
{"result":{"version":"v0.6.1"},"id":124,"method":"sys.version"}標準BLE Battery Service:
| Service | Characteristic | 値 |
|---|---|---|
0x180F |
Battery Level 0x2A19 |
1 byte、0...100 |
Codexアプリとの互換性ではdevice.status.result.batteryが重要。OSのBluetooth画面にも残量を出したい場合は0x2A19も実装する。
batteryを文字列で返す: 型検証で失敗するis_chargingを0/1で返す: booleanではないため失敗する- 応答に元の
idがない: Timeoutする - 改行なしでInput Reportを返す: HID受信バッファが完了しない場合がある
device.statusへ応答しない: Codex上で未検出または接続エラーになりやすい