Smatek S9E
A 10.1 in 1920×1200 RK3566 in-wall panel, the same SoC family as the TPA10, with two on-board mains relays, four LED-backlit buttons, a radar proximity sensor, and Zigbee, Ethernet and RS485.
Also sold as
Section titled “Also sold as”Smatek S9E, Smatek S9, S9PE, S9PE-NZ (PoE variant), Build.MODEL S9, Build.DEVICE rk3566_r, ro.product.version S9_Android_1.0.2 and S9_Android_1.1.0.
| SoC | Rockchip RK3566 (quad Cortex-A55), the same SoC family as the TPA10 |
| RAM and storage | 2 GB RAM, 16 GB eMMC |
| Display | 10.1 in, 1920×1200 multi-touch |
| Android | 11 |
| Connectivity | Wi-Fi, Bluetooth, Zigbee, RJ45 Ethernet, RS485 (a PoE variant, the S9PE, also exists) |
| Sensors | proximity radar, ambient light, temperature and humidity |
| Inputs | 4 physical buttons with individual LEDs |
| Relays | 2 on-board mains relays |
| Root | the vendor app uses execRootCmd, so root is available; some units ship with developer mode unlocked. Whether su is reachable from a normal app sandbox is unconfirmed, and it decides whether the panel app drives the sysfs nodes directly or needs the root helper daemon. |
| Released | Not confidently dated; the RK3566 SoC family did not reach the market until around 2021, the best lower bound found for this panel (RK3566 datasheet coverage, CNX Software, December 2020) |
Firmware versions
Section titled “Firmware versions”Two stock images have been analysed. They are block-based OTA .zip files in AOSP dynamic-partition format: decompress the .new.dat.br with brotli -d, unpack the super image with lpunpack, then search build.prop and the init .rc files with strings. Both report Build.MODEL S9 and Build.DEVICE rk3566_r, Android 11; the vendor build code is in ro.product.version:
| Image | ro.product.version |
Build | Relay class |
|---|---|---|---|
S9_1920x1200_20240712_Android_US |
S9_Android_1.0.2 |
eng.*.20240712 |
/sys/class/st_relay |
S9_1920x1200_20251202_Android_US |
S9_Android_1.1.0 |
eng.xiaolp.20251202.160404 |
/sys/class/strelay |
Both images were shared by the reporter from Smatek: S9_1920x1200_20240712_Android_US (1.0.2) and S9_1920x1200_20251202_Android_US (1.1.0). The original Smatek download links at docs.smatek.store:10001 are no longer reachable; contact Smatek support or the reporter for a copy.
Diffing the two images shows that only ro.product.version and the relay class differ. Every other control path documented below (button keycodes, button LED GPIOs, proximity GPIO, sensor wiring) is identical across both, so detection keyed on ro.product.version starting with S9 covers the whole line.
Relays: strelay or st_relay class (root)
Section titled “Relays: strelay or st_relay class (root)”The panel app exposes the two mains relays as switch.<panel>_relay1 and switch.<panel>_relay2, only on a panel that has the relay sysfs class.
# firmware 1.1.0+ (most panels in the field)echo 1 > /sys/class/strelay/relay1 # onecho 0 > /sys/class/strelay/relay1 # offecho 1 > /sys/class/strelay/relay2
# firmware 1.0.2 (initial release)echo 1 > /sys/class/st_relay/relay1Buttons: F1 to F4 KeyEvents (app-direct)
Section titled “Buttons: F1 to F4 KeyEvents (app-direct)”The four buttons emit standard Android key codes 131 to 134, KEYCODE_F1 to KEYCODE_F4. The panel app’s accessibility capture reports them to event.<panel>_button (event types KEYCODE_F1 to KEYCODE_F4); bind dashboard actions to them in Home Assistant. The events need no root.
LED: per-button GPIO backlight
Section titled “LED: per-button GPIO backlight”Each button has an LED at /sys/class/gpio/gpio<16+keycode>/value, which is GPIO 147 to 150 for buttons F1 to F4. Each is on or off, monochrome. The panel app exposes them as light.<panel>_button_led1 to light.<panel>_button_led4 (switched through su), counted from the profile’s hardware.button_led_gpio_base. The LEDs are not under /sys/class/leds, which holds only the mmc2:: SD card LED on the S9E; they are raw GPIOs.
echo 147 > /sys/class/gpio/export # one-time, if the node is absentecho 1 > /sys/class/gpio/gpio147/value # button F1 LED onSensors: proximity comes from GPIO 18, not SensorManager
Section titled “Sensors: proximity comes from GPIO 18, not SensorManager”The real signal is a root GPIO read at GPIO 18. The kernel registers a phantom Android sensor that never fires, so the value has to be read from sysfs:
cat /sys/class/gpio/gpio18/value # 1 = near, 0 = far (no export needed — reporter-confirmed)The S9E profile therefore declares sensors.proximity_gpio: 18 instead of using the dead SensorManager source. The root helper holds the value descriptor open and streams changes immediately where the kernel supports GPIO edges; otherwise it rechecks the same descriptor twice a second. Losing the descriptor is reported explicitly, so Home Assistant shows the sensor as unavailable until the recovered helper stream supplies its current value. The signal then feeds the same self-learning presence detection and hand-gesture detection as Android sensors, normalised across all your panels. A reporter confirmed that gpio18 reads 0 far, 1 near, but the learning does not rely on that polarity. Ambient light, temperature and humidity surface through SensorManager as expected.
Access model summary
Section titled “Access model summary”- Relays:
switch.<panel>_relay1andswitch.<panel>_relay2through the relay sysfs class (root); bothstrelayandst_relayare probed. - Buttons:
event.<panel>_button(KEYCODE_F1toKEYCODE_F4), app-direct through accessibility. - Button LEDs:
light.<panel>_button_led1tolight.<panel>_button_led4throughsu(GPIO 147 to 150, exported on demand). - Proximity: a learned
binary_sensor.<panel>_proximityand a normalisedsensor.<panel>_proximity_levelfrom the root helper’s heldgpio18event stream. TheSensorManagerproximity sensor registers but never fires, so it is bypassed. - Light:
sensor.<panel>_illuminancethroughSensorManager, which works.
Sources
Section titled “Sources”- The Smatek S9E report on GitHub: the reporter’s
/diag(detection strings,SensorManagerproximity), the relay class rename fromst_relaytostrelay, and the two firmware images. - Smatek S9E stock firmware shared by that reporter: 1.0.2 (20240712) and 1.1.0 (20251202), the two images analysed. The original Smatek download links (
docs.smatek.store:10001) are no longer reachable. - seaky/nspanel_pro_tools_apk issue 98, “Add Smatek S9E Support”: the relay (
st_relay), button (keycodes 131 to 134), button LED (GPIO 147 to 150) and proximity (GPIO 18) control paths. - Home Assistant community: “Smatek S9E Touch Panel”: WebView update, GPIO 18 proximity scripts, integration notes.
- Smatek S9E product page and S9PE-NZ PoE variant: SoC, RAM and storage, display, sensors, connectivity.
- Smatek S9E specification sheet (PDF): an image-only scan that cannot be text-extracted, but the source datasheet.
Comments
Comments are kept in this page's discussion on GitHub, so loading them connects your browser to GitHub. This browser remembers the choice and loads comments on other pages when you scroll down to them.
Comment without a GitHub account