build(solo): the 4.26" panel as a fourth L1 e-ink env

WioTrackerL1Eink426_solo_dual extends eink_solo like the 4.2" build and
sets only what differs: the panel, rotation, the 9x15 at 2x with Text and
Icon size, bulk writes at 8 MHz, 250 contacts and a 32-message queue.
Replaces the full copy of the flags in solo/wio-tracker-l1-gdeq0426/.
Docs: advert precision, text and icon size, the 4.26" in the feature matrix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-11 10:52:17 +02:00
co-authored by Claude Opus 5.5
parent 1b318af15b
commit a5423d42c1
4 changed files with 29 additions and 74 deletions
+1
View File
@@ -18,6 +18,7 @@ to some screens, adds or corrects its row here in the same commit.
| **E-ink L** | Wio Tracker L1 e-ink, landscape | 250 × 122, 8 × 13 | Larger icons | | **E-ink L** | Wio Tracker L1 e-ink, landscape | 250 × 122, 8 × 13 | Larger icons |
| **E-ink P** | Wio Tracker L1 e-ink, portrait | 122 × 250, 6 × 9 | | | **E-ink P** | Wio Tracker L1 e-ink, portrait | 122 × 250, 6 × 9 | |
| **E-ink 4.2"** | Wio Tracker L1 with the 4.2" panel (parked) | 400 × 300, 9 × 15 | Its own icon set | | **E-ink 4.2"** | Wio Tracker L1 with the 4.2" panel (parked) | 400 × 300, 9 × 15 | Its own icon set |
| **E-ink 4.26"** | Wio Tracker L1 with the 4.26" 800 × 480 panel (`WioTrackerL1Eink426_solo_dual`) | 400 × 240 at 2x, 9 × 15 | Text and icon size settings; "wide" like the 4.2", 16 lines |
| **L2** | Wio Tracker L2 | 320 × 240 touch, ui-lvgl | | | **L2** | Wio Tracker L2 | 320 × 240 touch, ui-lvgl | |
What decides it in ui-new (look for these when adding a screen): What decides it in ui-new (look for these when adding a screen):
+5 -1
View File
@@ -7,7 +7,7 @@ board supports are shown.
| Section | What's there | | Section | What's there |
| ------- | ------------ | | ------- | ------------ |
| **Display** | Brightness, auto-off, wake on message, the message alert (banner, corner envelope or off), lock screen, the lock clock's look and the [PIN](./lock.md), battery as icon / % / volts, time zone, clock format and seconds; on e-ink also rotation and full refresh | | **Display** | Brightness, auto-off, wake on message, the message alert (banner, corner envelope or off), lock screen, the lock clock's look and the [PIN](./lock.md), battery as icon / % / volts, time zone, clock format and seconds; on e-ink also rotation and full refresh, and on a 4.26" panel the text and icon size |
| **Sound** | Buzzer on / off / auto (quiet while the app is connected), volume, quiet hours, the melody for messages, channels and adverts | | **Sound** | Buzzer on / off / auto (quiet while the app is connected), volume, quiet hours, the melody for messages, channels and adverts |
| **Home Pages** | Order of the home pages, and which are shown | | **Home Pages** | Order of the home pages, and which are shown |
| **Radio** | TX power, preset, frequency, SF / BW / CR, saved presets, Auto pwr, the scope list, then the advanced options (below) | | **Radio** | TX power, preset, frequency, SF / BW / CR, saved presets, Auto pwr, the scope list, then the advanced options (below) |
@@ -56,6 +56,10 @@ nodes aren't added until you make room.
including the automatic ones. Off, nodes see your name but not where you including the automatic ones. Off, nodes see your name but not where you
are. Live sharing and `{loc}` in a message still send it, because you send are. Live sharing and `{loc}` in a message still send it, because you send
those on purpose. those on purpose.
- **Precision**: how exactly adverts give your position: **Exact**, or
rounded to a grid of about **100 m**, **500 m** or **1 km**. A fixed grid,
not random noise, so many adverts from one place can't be averaged back
to the exact spot.
- **Position**: where your adverts say you are while the GPS is off. **Enter** - **Position**: where your adverts say you are while the GPS is off. **Enter**
to type it in (`50.06143, 19.93658`), take it from a waypoint, or clear it. to type it in (`50.06143, 19.93658`), take it from a waypoint, or clear it.
With the GPS on, the row shows **GPS** and each fix replaces it; turning the With the GPS on, the row shows **GPS** and each fix replaces it; turning the
+23 -1
View File
@@ -10,7 +10,7 @@
; portrait keeps the 6x9, whose narrow width wants the smaller cell. The ; portrait keeps the 6x9, whose narrow width wants the smaller cell. The
; joystick reads upright with the panel at rotation 1 (landscape) and turns ; joystick reads upright with the panel at rotation 1 (landscape) and turns
; with it (JOYSTICK_UPRIGHT_ROTATION). A third for a 4.2" 400x300 panel on the ; with it (JOYSTICK_UPRIGHT_ROTATION). A third for a 4.2" 400x300 panel on the
; same wiring, in the 9x15. ; same wiring, in the 9x15, and a fourth for a 4.26" 800x480 one.
; ;
; All: Dual BLE+USB with added Solo. ; All: Dual BLE+USB with added Solo.
[eink_solo] [eink_solo]
@@ -58,3 +58,25 @@ build_flags = ${eink_solo.build_flags}
-D DISPLAY_ROTATION=0 -D DISPLAY_ROTATION=0
-D JOYSTICK_UPRIGHT_ROTATION=0 -D JOYSTICK_UPRIGHT_ROTATION=0
-D EINK_LARGE_FONT=2 -D EINK_LARGE_FONT=2
; A 4.26" 800x480 panel (Good Display GDEQ0426T82) on the same 24-pin FPC.
; Native landscape; the 9x15 font at 2x (~44 characters x 16 lines), with
; Settings > Display > Text size and Icon size (EINK_FONT_SCALE,
; STATUS_ICON_SCALE). Rows sent to the panel in bulk at 8 MHz
; (EINK_FAST_WRITES, GxEPD2_FastWrite.h). Its 48 KB framebuffer leaves the
; heap short at boot, so fewer contacts and a smaller offline queue.
[env:WioTrackerL1Eink426_solo_dual]
extends = eink_solo
build_unflags = ${eink_solo.build_unflags} -D EINK_DISPLAY_MODEL=GxEPD2_213_B74 -D DISPLAY_ROTATION=1
-D JOYSTICK_UPRIGHT_ROTATION=1 -D MAX_CONTACTS=350 -D OFFLINE_QUEUE_SIZE=128
build_flags = ${eink_solo.build_flags}
-D EINK_DISPLAY_MODEL=GxEPD2_426_GDEQ0426T82
-D DISPLAY_ROTATION=0
-D JOYSTICK_UPRIGHT_ROTATION=0
-D EINK_LARGE_FONT=2
-D EINK_FONT_SCALE=2
-D STATUS_ICON_SCALE=0
-D EINK_FAST_WRITES=1
-D EINK_SPI_HZ=8000000
-D MAX_CONTACTS=250
-D OFFLINE_QUEUE_SIZE=32
@@ -1,72 +0,0 @@
; Solo build for Seeed Wio Tracker L1 (Lite) + Good Display GDEQ0426T82
; 4.26" 800x480 e-ink, plugged into the board's 24-pin e-ink FPC connector.
; Build config only -- no source changes. Extends WioTrackerL1Eink
; (variants/wio-tracker-l1-eink/platformio.ini) for its source files and
; libraries, but carries its own full build_flags list, so the stock panel's
; -D EINK_DISPLAY_MODEL / DISPLAY_ROTATION never reach the compiler too.
;
; - EINK_DISPLAY_MODEL GxEPD2 driver for this panel (GxEPD2 1.6.2+)
; - DISPLAY_ROTATION 0: the panel's native landscape
; - RAM: the 800x480 framebuffer is 48 KB (the stock 2.13" needs ~4 KB),
; and UiCore plus every screen is allocated from the heap at startup --
; a failed allocation there crashes into a boot loop. So:
; OFFLINE_QUEUE_SIZE 32 (stock e-ink: 128) frees ~17 KB
; MAX_CONTACTS 250 (stock: 350) frees ~18 KB
; - EINK_LARGE_FONT 2: the 4.2" build's 9x15 font (and its 9 px icons) --
; on hardware it reads much better here than the 6x9 scaled up, which goes
; blocky at 4x.
; - EINK_FONT_SCALE 2: that font at 2x (18x30 cells, ~44 characters x 16
; lines). Also adds Settings > Display > Text size (1x-5x), which starts here.
; - STATUS_ICON_SCALE turns on scalable Home status/page icons and adds
; Settings > Display > Icon size (Auto = 1.5x the text: 3x at 2x text, 1x-8x).
;
; Build: pio run -e WioTrackerL1_GDEQ0426T82_companion_solo_dual
[env:WioTrackerL1_GDEQ0426T82_companion_solo_dual]
extends = WioTrackerL1Eink
build_unflags = -Ofast
build_flags = ${nrf52_base.build_flags}
${sensor_base.build_flags}
-I lib/nrf52/s140_nrf52_7.3.0_API/include
-I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52
-I variants/wio-tracker-l1
-I examples/companion_radio/ui-new
-I lib/GxEPD2-patch/src
-D WIO_TRACKER_L1
-D WIO_TRACKER_L1_EINK
-D USE_SX1262
-D RADIO_CLASS=CustomSX1262
-D WRAPPER_CLASS=CustomSX1262Wrapper
-D LORA_TX_POWER=22
-D SX126X_CURRENT_LIMIT=140
-D SX126X_RX_BOOSTED_GAIN=1
-D EINK_DISPLAY_MODEL=GxEPD2_426_GDEQ0426T82
-D DISPLAY_ROTATION=0
-D JOYSTICK_UPRIGHT_ROTATION=0
-D EINK_LARGE_FONT=2
-D EINK_FONT_SCALE=2
-D STATUS_ICON_SCALE=0
-D GPS_BAUD_RATE=9600
-D ENV_PIN_SDA=PIN_WIRE1_SDA
-D ENV_PIN_SCL=PIN_WIRE1_SCL
-D DISABLE_DIAGNOSTIC_OUTPUT
-D AUTO_OFF_MILLIS=0
-D MAX_CONTACTS=250
-D MAX_GROUP_CHANNELS=40
-D OFFLINE_QUEUE_SIZE=32
-D DISPLAY_CLASS=GxEPDDisplay
-D BUTTON_USE_INTERRUPTS=1
-D UI_HAS_JOYSTICK=1
-D UI_HAS_JOYSTICK_UPDOWN=1
-D PIN_BUZZER=12
-D QSPIFLASH=1
-D FIRMWARE_SOLO_BUILD=1
-D MESHCORE_VERSION='"1.17.1"'
-D UI_SENSORS_PAGE=1
-D BLE_PIN_CODE=123456
-D DUAL_SERIAL=1
-D ENABLE_SCREENSHOT
-D KEEP_DISPLAY_ON_USB
-D EINK_FAST_WRITES=1
-D EINK_SPI_HZ=8000000
-Os
extra_scripts = post:create-uf2.py