Zmk v0.3.0 - #3
Merged
Merged
Conversation
CURRENT.UF2 readbacks from both halves, captured 2026-08-09 before flashing the v0.3.0 migration. These are the exact bytes both halves ran since 2022-03 (zmk f1b5dc4 era), including the NVS storage region. Verified: all 3728 blocks valid, contiguous 0x1000..0xEA000, sane vector tables. Family ID 0x239A0029 (board-specific) is accepted by the write path of bootloader 0.6.2 alongside 0xADA52840. Restore: double-tap reset, drag the matching half's file. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Last touched 2022-03 against zmk main (Zephyr 2.5, LVGL 7.6.1); this brings both board definitions to the v0.3.0 release. Both halves build clean in zmk-build-arm:stable (left 33.7% flash / 24.8% RAM, right 28.6% / 18.2%). Full excavation and rationale: zmk-portability-report.md. Build system: - Pin west.yml to v0.3.0; add build.yaml + CI via shared workflow - Native CONFIG_BUILD_OUTPUT_UF2 replaces the uf2conv.py post-build hook Devicetree: - SPI pins to pinctrl (sck/mosi-pin removed in Zephyr 3.0); MISO freed - zephyr,display chosen node (panel no longer found by device name) - wakeup-source on kscan; deprecated label properties dropped Kconfig: - LVGL_* -> LV_*/LV_Z_* namespace; UNSCII-8 pinned as default + theme small font (resolution now comes from DT width/height) - board.c deleted: VDDH DC/DC now via BOARD_ENABLE_DCDC_HV=y; broken BOARD_ENABLE_DCDC dependency fixed but kept off (deliberate, see report) - BT_MAX_CONN/BT_PERIPHERAL_PREF_* dropped: role-aware defaults give 6/12/30/400 - same interval as the old hand-tune plus slave latency 30 - ZMK_USB central-only per upstream; right keeps bare USB stack so the CHG indicator still works - Display stack 2048->4096, LV_Z_MEM_POOL_SIZE=8192 (crash hypothesis) - RC oscillator and 2/10 debounce preserved with rationale comments Widgets (LVGL 7 -> 8): - battery: zmk_battery_state_of_charge() replaces bt_bas polling - output: endpoint-instance API on central (profile nicknames kept); new peripheral branch on zmk_split_bt_peripheral_is_connected() - v0.3.0 no longer compiles endpoint/profile APIs on peripherals - layer: zmk_keymap_layer_name() + index-to-id hop; keymap layers renamed label -> display-name - WPM widget retired (unused) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three issues from the first on-hardware test of the v0.3.0 migration, all display-only (matrix/BLE/combos/layers verified working): - ZMK_DISPLAY_INVERT=y on both halves: LVGL 8's mono theme defaults to the light variant, LVGL 7 defaulted dark - restores white-on-black. - Layer label row 41 -> 39: lv_font_unscii_8 declares line_height 9 in LVGL 8 (was 8 in LVGL 7), so 41+9 overran the 48-row panel. - SSD1306 width 96 -> 128 (full controller RAM): the glass shows a 64-column window whose edge includes ~4 RAM columns a 96-wide framebuffer never writes. Their power-on garbage was invisible for four years under the dark theme (unwritten = off = black-on-black) and surfaced as a lit 4px bar after the theme migration. Rendering all 128 columns keeps every reachable column painted; content position on glass is unchanged (widgets stay anchored at x=32). Both halves rebuilt and verified on hardware. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.