#Single Peripheral Encoder Problems

1 messages · Page 1 of 1 (latest)

frigid tulip
#

Hello! I have a Lotus58 with a single encoder on the peripheral (right) side. What is the correct configuration to get it working? I recently moved to the newer firmware after ~6 months and it no longer registers any CW or CCW turn. The push functionality still works. I have: CONFIG_EC11=y CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y in lotus58_right.conf and sensor-bindings = <&inc_dec_kp PG_UP PG_DN &inc_dec_kp PG_UP PG_DN>; in my keymap. Should this be reduced to just one entry since I only have one encoder? I have attempted some changes mentioned in ZMK docs including modifying the .overlay and .dtsi files but am unable to have it successfully build.

Any help would be appreciated!

github.com/finn-i/zmk-config

frigid tulip
#

[Update]: Here is the output of log when clicking the encoder once in the CW direction.

[00:00:49.962,402] <dbg> zmk: split_central_sensor_notify_func: [SENSOR NOTIFICATION] data 0x2000f6cf length 12
[00:00:49.962,463] <dbg> zmk: peripheral_sensor_event_work_callback: Trigger sensor change for 1
[00:00:49.962,524] <dbg> zmk: zmk_keymap_sensor_event: layer: 2 sensor_index: 1, binding name:
[00:00:49.962,554] <dbg> zmk: zmk_keymap_sensor_event: No behavior assigned to 1 on layer 2
[00:00:49.962,585] <dbg> zmk: zmk_keymap_sensor_event: layer: 1 sensor_index: 1, binding name:
[00:00:49.962,615] <dbg> zmk: zmk_keymap_sensor_event: No behavior assigned to 1 on layer 1
[00:00:49.962,646] <dbg> zmk: zmk_keymap_sensor_event: layer: 0 sensor_index: 1, binding name:
[00:00:49.962,677] <dbg> zmk: zmk_keymap_sensor_event: No behavior assigned to 1 on layer 0
[00:00:49.984,893] <dbg> zmk: split_central_sensor_notify_func: [SENSOR NOTIFICATION] data 0x2000f6cf length 12
[00:00:49.984,954] <dbg> zmk: peripheral_sensor_event_work_callback: Trigger sensor change for 1
[00:00:49.985,015] <dbg> zmk: zmk_keymap_sensor_event: layer: 2 sensor_index: 1, binding name:
[00:00:49.985,046] <dbg> zmk: zmk_keymap_sensor_event: No behavior assigned to 1 on layer 2
[00:00:49.985,076] <dbg> zmk: zmk_keymap_sensor_event: layer: 1 sensor_index: 1, binding name:
[00:00:49.985,107] <dbg> zmk: zmk_keymap_sensor_event: No behavior assigned to 1 on layer 1
[00:00:49.985,168] <dbg> zmk: zmk_keymap_sensor_event: layer: 0 sensor_index: 1, binding name:
[00:00:49.985,168] <dbg> zmk: zmk_keymap_sensor_event: No behavior assigned to 1 on layer 0`
cloud river
#

Is that intentional? In your keymap you only have sensor bindings for your left encoder

#

Sorry, I overlooked some of it. I think you want to disable the left encoder, correct?

#

You could replace lines 12-13 in your keymap with

&left_encoder { status = "disabled"; };
&right_encoder { steps = <20>; };
&sensors {
  sensors = <&right_encoder>;
  triggers-per-rotation = <20>;
};
frigid tulip
# cloud river Sorry, I overlooked some of it. I think you want to disable the left encoder, co...

Yes that's correct, and thanks for your suggestion - it worked!

I'm now left with the problem I had ~6 months ago, where for each click in either direction, the volume is turned up one and down one, leaving it at the starting volume level. I'll get the log of the event(s), I have a feeling it's a steps/triggers-per-rotation issue but I've tried a number of combinations with no luck in the past.

#

Here's the log of a single CW click of the encoder if it is of use

young swift
#

The most common combinations seems to be 80/20 for steps/triggers-per-rotation, you could try that to start with

frigid tulip
young swift
frigid tulip
#

There are 20 clicks per full roation of the encoder - if that's what you're after

young swift
#

Yeah, I see

#

Everything looks OK in your config

#

I have no ideas besides a steps mismatch, so I'd try a few more values like 40

frigid tulip
#

Ok, thanks for the help. I'll try out 40.
Otherwise perhaps it could be the encoder model. Desoldering could be a bit tricky...