Skip to content

feat: consolidate validated Solstice ZMK 0.4 support - #4

Merged
te9no merged 19 commits into
zmk-0.4from
zmk-0.4_validation_oled-custom-stack
Aug 23, 2026
Merged

feat: consolidate validated Solstice ZMK 0.4 support#4
te9no merged 19 commits into
zmk-0.4from
zmk-0.4_validation_oled-custom-stack

Conversation

@te9no

@te9no te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • consolidate the staged ZMK 0.4 baseline, cormoran PMW3610 split RPC, and CDC Debug/boot support
  • use the compact ZMK 0.4 dongle OLED layout with verified polarity and right-hand offset
  • preserve Studio RPC by disabling the unused third board CDC function
  • add runtime macro and runtime combo Studio RPC support

Hardware validation

  • US firmware flashed to both halves
  • right input mapping and OLED display verified
  • DYA Studio connects through COM74
  • runtime macro/combo UI verified
  • peripheral PMW3610 source 1 verified in DYA Studio

Build validation

  • ./just.sh build-fast Solstice_ --pristine=always: US/JIS left/right 4/4 passed
  • GitHub Actions build matrix passed

Stable main is intentionally unchanged; this PR targets zmk-0.4.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Hardware update (2026-08-23): flashed Solstice_L_US to the left XIAO. The central booted successfully with the custom dongle display and 6144-byte display thread stack. USB CDC/RPC ports enumerated, and COM74 emitted the Zephyr 10ba6d0cb38b boot log plus analog input and CDC trigger initialization. Visual confirmation of the peripheral battery value is still pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Added two hardware findings: remove the SSD1306 inversion-on flag to correct the custom-screen background polarity, and restore the dedicated Solstice_R_Offset snippet (col-offset 8) because the former CONFIG_SHIELD_SOLSTICE_R overlay conditional does not apply reliably on the ZMK 0.4 build. ./just.sh build-fast Solstice_ --pristine=always passed 4/4 US/JIS targets. Hardware reflash pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Reflash update: wrote the 87dbabb US artifacts to both halves. Left central returned with CDC/RPC ports after the OLED polarity fix. Right peripheral returned with COM50/COM49 after applying the dedicated col-offset 8 snippet. Visual OLED polarity, peripheral battery display, and right-hand key-position confirmation are pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Right-hand key offset is hardware-verified OK. The OLED remains white-background, so the root cause is the LVGL 9 custom screen style rather than the SSD1306 inversion flag. Pinned zmk-dongle-display@f706f291cf440c6e95f9a7c59cf65ae59b9fd8be (module PR #4), which explicitly sets a black screen, white text, and transparent widget containers. ./just.sh build-fast Solstice_L_US --pristine=always passed; hardware reflash pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Second OLED color iteration: the prior explicit styles did not change the hardware display because the custom-screen build had CONFIG_LV_USE_THEME_MONO disabled. zmk-dongle-display@1055be9 now selects the mono theme and defaults ZMK_DISPLAY_INVERT=y, while also applying local black/white styles. The built Solstice_L_US .config confirms both options enabled. just.sh pristine build passed and the firmware was flashed via COM74/H:. Visual confirmation pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Third OLED polarity iteration: verified the previous artifact already had LV_USE_THEME_MONO=y and ZMK_DISPLAY_INVERT=y, but hardware remained white. Re-enabled the SSD1306 inversion-on command while retaining the dark mono theme; this is the first build testing both together. The pristine just.sh build confirms both Kconfig options plus inversion-on in the final DTS, and b373ba2 was flashed via COM74/H:. Visual confirmation pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Switched from the te9no LVGL migration fork to upstream englmaxi/zmk-dongle-display@2bb333f. Upstream explicitly renders a white logical background with black text; Solstice retains SSD1306 inversion-on to produce the intended physical black background. The current upstream also includes display-event throttling and ZMK API fixes. just.sh pristine Solstice_L_US build passed and e5911bd was flashed via COM74/H:. Visual confirmation pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

The upstream Bongo Cat is 50x26 and aligned bottom-right, which overlaps battery/layer text on the Solstice 128x32 panel. Added an opt-in compact 32px layout proposal at englmaxi/zmk-dongle-display#37, pinned its upstream-based commit b724f0a, centered the cat, and disabled the conflicting layer widget on Solstice while retaining peripheral battery display. just.sh pristine Solstice_L_US build passed; hardware reflash pending.

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

128x32 OLEDでBongo Cat(50x26)が右端の文字と重なる実機報告に対応。上流ベースのcompact 32px中央配置(englmaxi/zmk-dongle-display#37 / b724f0a)を有効化し、レイヤーwidgetを無効化した 8738367 を追加。./just.sh build-fast Solstice_L_US --pristine=always は成功。現在DYA StudioがCOM74を占有しており、CDC書き込みと実機目視確認は保留。

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

DYA Studio終了後、COM73/74/443の解放を確認。8738367のSolstice_L_US compact版をCOM74 CDC boot経由で左Centralへ書き込み、再起動後に3ポート復帰と通常debugログを確認。DYA Studio再接続とcompact表示の目視確認待ち。

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

実機確認: DYA Studio再接続、compact 32px OLED配置、背景極性はいずれも合格。Peripheral電池残量表示のみ別確認として継続。

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

訂正: 直前の実機OKはOLEDのみ。DYA Studio再接続は未合格。USB複合デバイスの対応はCOM73=board CDC、COM74=debug、COM443=Studio RPCのため、DYA StudioではSolstice COM443を明示選択して再検証する。

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

DYA Studio USB timeoutの原因を切り分け、修正を追加しました(676e7a9)。Solsticeだけ board CDC + CDC Debug + Studio RPC の3 CDC構成になっており、Studio COM443は列挙/openできてもRPC OUTを受信しませんでした。未使用board CDCを無効化して2 CDC構成へ揃えた後、左US実機で COM73=CDC Debug/CDC Boot、COM74=Studio RPC として再列挙し、COM74へのGetDeviceInfoが30-byte応答(name=Solstice)を返すことを確認しています。just.sh build-fast Solstice_ --pristine=always はUS/JIS左右4/4成功。DYA Studio UIではSolstice (COM74)を選択して最終確認待ちです。PRは実機確認完了までDraftのまま維持します。

@te9no

te9no commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Runtime Macro/ComboとPMW3610 split RPCの追試を追加しました(12d870e)。MKB基準のruntime-combo@d9490e7 / runtime-macro@3853096を固定して有効化し、just.sh pristineでUS/JIS左右4/4成功。左右USへ書き込み後、COM74のcustom subsystem一覧でruntime_combo=index 2、runtime_macro=index 3を確認しました。PMW3610 GetInfo(source=ALL)も直接検証し、右Peripheral source=1からready=true、PID=0x3e、rev=0x01、CPI=800、settings-id=solsticeの応答を取得しています。localhost:5173はPR #168対応DYA Studio branchで稼働しているため、UI再接続後の最終確認待ちです。

@te9no te9no changed the title fix: retain peripheral battery display with a larger OLED stack feat: consolidate validated Solstice ZMK 0.4 support Aug 23, 2026
@te9no
te9no changed the base branch from zmk-0.4_validation_oled-default to zmk-0.4 August 23, 2026 05:06
@te9no
te9no marked this pull request as ready for review August 23, 2026 05:06
@te9no
te9no merged commit 5f57607 into zmk-0.4 Aug 23, 2026
8 checks passed
@te9no
te9no deleted the zmk-0.4_validation_oled-custom-stack branch August 23, 2026 05:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant