# Troubleshooting ## Check the Service ```bash systemctl --user status surface-dial-renewed.service journalctl --user -u surface-dial-renewed.service -n 100 --no-pager ``` Expected startup lines: ```text surface-dial-renewed: running in Multitouch mode surface-dial-renewed: dial connected ``` ## Check Raw Dial Rotation Find the current event node: ```bash rg -n -C 8 "Surface Dial System Multi Axis" /proc/bus/input/devices ``` Then run: ```bash sudo evtest /dev/input/eventXX ``` Rotation should produce: ```text type 2 (EV_REL), code 7 (REL_DIAL), value ... ``` If `REL_DIAL` does not appear, the driver cannot scroll. Reconnect the Dial over Bluetooth and check again. ## Wrong Event Node The Control node is not the rotation node. It looks like: ```text Surface Dial System Control ``` and exposes `KEY_SLEEP`/`KEY_WAKEUP`. Use `Surface Dial System Multi Axis` for rotation. ## Haptics Work But Scroll Does Not Haptics use HID raw access; scrolling uses evdev input plus uinput output. Haptics working only proves the HID path works. Check: 1. Raw `REL_DIAL` events with `evtest`. 2. Service logs for `dial connected`. 3. `/dev/uinput` permissions. 4. Whether `Surface Dial Renewed Touchpad` appears in `/proc/bus/input/devices`. ## Sensitivity OSD Warnings The service may log messages from `qdbus6` about locale fallback, for example `Detected locale "C"`. The OSD still works. This is caused by the systemd user service environment lacking a UTF-8 locale variable. If it becomes noisy, set locale environment for the user service or replace the shell-out OSD backend with a direct D-Bus implementation. ## Reconnect Oddities After Bluetooth reconnects, event numbers can change. Always rediscover with: ```bash rg -n -C 8 "Surface Dial" /proc/bus/input/devices ``` If button events appear but rotation does not, disconnect and reconnect the Dial again. The driver cannot synthesize rotation if the kernel is not emitting `REL_DIAL`.