見出し画像

ZMK【Prospector Scanner】対応方法

はじめに

自作キーボードを運用している方々で Prospector Scanner を利用している方はいると思います。
これから対応させたいと思う方々に助けとなればいいと思い記事を書いていきたいと思います。


対応方法

基本的には作者である おぐさんの情報を参照していただければと思いますが、簡単に私が対応したキーボードを中心に変更方法をお知らせできればいいと思います。
基本的には以下の2つのファイルを更新することにより対応が可能と思います。

  • central側となるxxxxx.confファイル

  • west.yml

私が対応したキーボード

最近キーボードを買いすぎており妻には内緒ですがかなりの散財をかましております。wwwww(バレてるみたいだけど・・・w)
それらの対応状況を記述していきます。

  • 小人キー

  • MeKaBu

  • LoTom

  • roBa

  • 自身で作成したキーボード(hmkb44)

小人キー

west.yml

他のキーボードもwest.yml の変更は同様です。
remotes: と projects:  にProspector Scanner のリポジトリを追加します。

追加箇所

remotes:

    :

  - name: prospector
      url-base: https://github.com/t-ogura

projects:

    :

    # Add this:
    - name: prospector-zmk-module
      remote: prospector
      revision: v2.0.0  # Use specific version tag
      path: modules/prospector-zmk-module

KobitoKey_left.conf

追加箇所

# Enable status advertisement
CONFIG_ZMK_STATUS_ADVERTISEMENT=y
# Shown on scanner
CONFIG_ZMK_STATUS_ADV_KEYBOARD_NAME="KobitoKey"

# Activity-based intervals (battery optimization)
CONFIG_ZMK_STATUS_ADV_ACTIVITY_BASED=y
# 10Hz when typing
CONFIG_ZMK_STATUS_ADV_ACTIVE_INTERVAL_MS=100
# 0.03Hz when idle
CONFIG_ZMK_STATUS_ADV_IDLE_INTERVAL_MS=30000

# Split keyboard battery monitoring (if applicable)
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y

# (Optional) Central side selection for split keyboards
# CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"  # or "RIGHT" (default)
CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"

MeKaBu

west.yml
上記KobitoKeyと同様な修正を行います。

MKB_L_Base.conf

追加箇所 

# Prospector Scanner Setting
# Enable status advertisement
CONFIG_ZMK_STATUS_ADVERTISEMENT=y
# Shown on scanner
CONFIG_ZMK_STATUS_ADV_KEYBOARD_NAME="MeKaBu" 
# Activity-based intervals (battery optimization)
CONFIG_ZMK_STATUS_ADV_ACTIVITY_BASED=y
# 10Hz when typing
CONFIG_ZMK_STATUS_ADV_ACTIVE_INTERVAL_MS=100
# 0.03Hz when idle
CONFIG_ZMK_STATUS_ADV_IDLE_INTERVAL_MS=30000
# Split keyboard battery monitoring (if applicable)
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y 
# (Optional) Central side selection for split keyboards #
CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"
# or "RIGHT" (default) CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"

MKB_L_Base.overlay
一部のキーボードではSPIとI2C等の定義アドレスが重複してしまうため使わないポートを無効化する必要があります。
以下のようにして定義を無効化しましょう。

追加箇所

&i2c0 { status = "disabled"; };

これは、以下のようなエラーでコンパイルが停止するためです。

/tmp/zmk-config/zephyr/include/zephyr/toolchain/gcc.h:87:36: error: static assertion failed: "Only one of the following peripherals can be enabled: SPI0, SPIM0, SPIS0, TWI0, TWIM0, TWIS0. Check nodes with status \"okay\" in zephyr.dts."

コンパイルエラー出力より

Geminiさん曰く、以下のような理由だそうです。

このエラーは、Nordic製チップ(nRF52840等)のハードウェア的な制約により、同じID(この場合は「0」)を共有する周辺機能(SPI, I2C/TWI, UART)を同時に有効化できないために発生しています。

ハードウェア内部で同一のレジスタアドレスや割り込みを共有しているため、zephyr.dts 内で複数の機能が status = "okay" になっているとビルドが通りません。

Geminiより

LoTom

west.yml

上記KobitoKeyと同様な修正を行います。

lotom_L.conf

追加箇所

# Prospector Scanner Setting
# Enable status advertisement
CONFIG_ZMK_STATUS_ADVERTISEMENT=y
# Shown on scanner
CONFIG_ZMK_STATUS_ADV_KEYBOARD_NAME="lotom"

# Activity-based intervals (battery optimization)
CONFIG_ZMK_STATUS_ADV_ACTIVITY_BASED=y
# 10Hz when typing
CONFIG_ZMK_STATUS_ADV_ACTIVE_INTERVAL_MS=100
# 0.03Hz when idle
CONFIG_ZMK_STATUS_ADV_IDLE_INTERVAL_MS=30000

# Split keyboard battery monitoring (if applicable)
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y

# (Optional) Central side selection for split keyboards
# CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"  # or "RIGHT" (default)
CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"

lotom_L.overlay
MeKaBuと同様、未使用のポートを無効化します。

&i2c0 { status = "disabled"; };

roBa

west.yml
上記KobitoKeyと同様な修正を行います。

roBa_R.conf
roBaは右側がセントラルなので、こちら側を変更します。

変更箇所

# Prospector Scanner Setting
# Enable status advertisement
CONFIG_ZMK_STATUS_ADVERTISEMENT=y
# Shown on scanner
CONFIG_ZMK_STATUS_ADV_KEYBOARD_NAME="roBa"

# Activity-based intervals (battery optimization)
CONFIG_ZMK_STATUS_ADV_ACTIVITY_BASED=y
# 10Hz when typing
CONFIG_ZMK_STATUS_ADV_ACTIVE_INTERVAL_MS=100
# 0.03Hz when idle
CONFIG_ZMK_STATUS_ADV_IDLE_INTERVAL_MS=30000

# Split keyboard battery monitoring (if applicable)
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y

# (Optional) Central side selection for split keyboards
# CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="LEFT"  # or "RIGHT" (default)
CONFIG_ZMK_STATUS_ADV_CENTRAL_SIDE="RIGHT"

自作キーボード(hmkb44)

自身で作成したキーボードは検証も兼ねて最新のファームウェアを採用して実験も兼ねて作成しています。
zmk-4に対応しているので他のキーボードと修正方法が少し違います。

west.yml

zmk-4対応なのでリポジトリ指定の revision: 指定が違います。

変更箇所

  remotes:


    - name: prospector
      url-base: https://github.com/t-ogura


  projects:


      # Add this:
    - name: prospector-zmk-module
      remote: prospector
      revision: v2.1.0  # Use v2.0.0 for ZMK ≤0.3 (Zephyr 3.x)
      path: modules/prospector-zmk-module

hmkb44.conf
hmkb44は一体型キーボードので、こちらを変更します。
また、zmk-4対応なので修正項目は少ないです。

# Enable status advertisement
CONFIG_ZMK_STATUS_ADVERTISEMENT=y
CONFIG_ZMK_STATUS_ADV_KEYBOARD_NAME="hmkb44"

# Split keyboard only: enable peripheral battery fetching
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y

このようにして変更して実機に書き込むことにより Prospector Scannerに対応することが可能です。

Prospector Scannerを使いたいが対応方法がわからない場合の参考になれば幸いです。

この記事はroBaで書きました。


いいなと思ったら応援しよう!

momohiro コーヒー代にさせていただきます あなたに喜ばれる記事を書けるよう頑張ります。