Notes and tools for the Jolla Phone (2026) "The Other Half" (TOH) interface and its LED — measured on real hardware, not derived from marketing material.
Everything here was verified on a Jolla Phone (2026) (jp2601, batch 1) with
Sailfish OS 5.2.0.17 (Finlayson) and the Inari Blue special cover.
The interesting part: the cover's LED is not limited to on/off. The cover contains an Awinic AW2023 three-channel LED driver on the pogo-pin I²C bus, and it can be driven directly — fades, brightness and blink patterns included.
| Path | Content |
|---|---|
tools/toh-led.py |
Drive the cover LED: register dump, backup, patterns, restore |
tools/toh-led-signal.sh |
On/off through the service the OS toggle uses (no root) |
tools/toh-info.sh |
Read-only status: cover attached? detector running? bus alive? |
docs/toh-hardware.md |
Pogo pins, detection, ID resistor, EEPROM, TOH daemon |
docs/aw2023-led.md |
The LED chip: bus, address, register map, timings, pitfalls |
docs/jp2601-notes.md |
Operational notes for the device (root, storage, ssu, USB) |
The LED chip is on /dev/i2c-0; raw access needs root.
# what is attached / is the detector running
./tools/toh-info.sh
# save the factory configuration before touching anything
sudo python3 tools/toh-led.py --backup
# a slow pulse
sudo python3 tools/toh-led.py --rise 0.5 --hold 0.2 --decay 0.5 --off 0.5 --brightness 120
# back to the factory breathing light
sudo python3 tools/toh-led.py --restoreOn the phone sudo does not exist — use the developer mode shell:
devel-su python3 /tmp/toh-led.py --rise 0.5 --decay 0.5Simple on/off, no root, exactly what the "Inari Blue" top menu toggle does:
./tools/toh-led-signal.sh on
./tools/toh-led-signal.sh off- The pogo-pin I²C bus is
11d00000.i2c, which comes up as/dev/i2c-0. - An AW2023 answers at 0x45 on that bus whenever the cover is attached (all 64 registers readable). It is the cover's LED controller.
- The phone's own status LED is a second, unrelated AW2023 on
11285000.i2c=i2c-12, driven by the kernel'saw2023_ledmodule, exported as/sys/class/leds/{red,green,blue}and owned bymce. Don't mix the two buses up. - Cover presence is reported by
/sys/class/yft_pogo_pin/:yft_pogo_pin_int_state,yft_pogo_pin_adc_value,yft_pogo_pin_5v_out_state. - The
symbiosisdaemon described in Jolla's TOH documentation is not installed on 5.2.0.17. What ships iscsd-toh, whosejolla-csd-tohd.serviceruns/usr/libexec/csd/toh-memory --track. - That process catches SIGUSR1/SIGUSR2 (
SigCgt=0x4a02), which is how the top menu toggle switches the LED — the signal API is usable from a shell. - Writes to the AW2023 are not reliable when issued back to back: a
restore of 64 registers lost
0x34and0x37until writes were spaced out and verified by read-back. Always verify, never trust the write's return code. This was the single most misleading behaviour we hit. - Timing values are quantised as
t = 31.25 ms · v²withvin 0..15, so the longest single phase is ~7.03 s and requests get rounded (0.2 s → 0.281 s).
- Verified: bus, address, register dump, pattern writes, restore, signal API, cover detection, the write-drop pitfall.
- Not verified / open: which of the three PWM channels physically lights the
logo (only channel 0 was used), whether the cover EEPROM can be read without
disturbing the detector, and whether the
--brightnessscale is linear. - The official TOH specification deliberately defines no LED protocol ("It does not implement features provided by specific TOHs"), so this register-level access is what there is for now.
- Official spec: https://docs.sailfishos.org/Develop/Hardware/JP2601-TOH
- Official TOH covers: https://docs.sailfishos.org/Develop/Hardware/JP2601-TOH (see "Official Jolla TOHs")
- Forum, signal API and notification script: https://forum.sailfishos.org/t/proposal-inari-blue-toh-led-for-notifications/31265
- Release notes 5.2.0.15 (mentions the Inari Blue toggle): https://forum.sailfishos.org/t/release-notes-finlayson-5-2-0-15-jolla-phone-only/30793
Unofficial. Not affiliated with Jolla. Talking to the LED controller is
harmless as long as you keep a baseline, but you are writing to hardware
registers on your own device — use at your own risk, and read
docs/aw2023-led.md before experimenting.
MIT, see LICENSE.