Hi @T0MR0
I am too trying to get your plugin working with Volumio3.
Ive tried what Darmur suggest with recompiling the node modules and it all installs and activates OK from within Volumio 3
I set it up with the same settings which work perfectly in Volumio 2
In Volumio 3 the rotary does not work but the button does as it should.
Live log of the plugin being activated, settings entered, then saved.
I dont know if this has a bearing on the issue, but at the bottom of the log each time I save the settings an exit code 1 error appears. But this error wasnt there in Volumio 2 and the plugin works fine
Starting Live Log...
process exited with code nullinfo: [ROTARYENCODER2] deactivateButtons: button 1 is disabled.
info: [ROTARYENCODER2] getI18nString("TOAST_STOP_SUCCESS"):Plugin successfully stopped.
info: [ROTARYENCODER2] onStop: Plugin successfully stopped.
info: Disabling plugin rotaryencoder2
info: Done.
info: CALLMETHOD: system_controller system enableLiveLog true
info: CoreCommandRouter::executeOnPlugin: system , enableLiveLog
info: Launching a new LiveLog session
info: Killing previous LiveLog session
info: Live Log process terminated: null
info: CoreCommandRouter::executeOnPlugin: my_volumio , getMyVolumioStatus
info: CoreCommandRouter::executeOnPlugin: my_volumio , getMyVolumioToken
info: Enabling plugin rotaryencoder2
info: Loading plugin "rotaryencoder2"...
info: PLUGIN START: rotaryencoder2
info: [ROTARYENCODER2] loadI18nStrings: /data/plugins/user_interface/rotaryencoder2/i18n/strings_en.json
info: [ROTARYENCODER2] loadI18nStrings: loaded: {"ROTARYENCODER2":{"CONFIG":"Rotary Encoder II Plugin Configuration","SAVE":"Save","ENCODER0":"Rotary Encoder 1","D_ENCODER0":"Settings for the first rotary encoder.","ENCODER1":"Rotary Encoder 2","D_ENCODER1":"Settings for the second rotary encoder.","ENCODER2":"Rotary Encoder 3","D_ENCODER2":"Settings for the third rotary encoder.","ROTARYTYPE":"Periods per tick","D_ROTARYTYPE":"Periods per tick (Full: A and B full period, half: A and B half period, quarter: A or B half period","FULL":"Full-period mode","HALF":"Half-period mode","QUARTER":"Quarter-period mode","PINA":"Pin A GPIO","D_PINA":"GPIO pin that is connected to the first pin of the rotary.","PINB":"Pin B GPIO","D_PINB":"GPIO pin that is connected to the second pin of the rotary.","DIALACTION":"Dial Action","D_DIALACTION":"Action to be triggered by turning the rotary encocer. Option 'Emit Websocket Message' can be used to control other plugins using the Volumio Websock calls between Plugins. (see https://volumio.github.io/docs/API/WebSocket_APIs.html section 'CallMethod on Plugin' for details)","DOTS":"...","VOLUME":"Volume","SKIP":"Prev/Next title","SEEK":"Seek in title","SCROLL":"Scroll","EMIT":"Emit Websocket Message","SOCKCMDCCW":"Command CCW","SOCKDATACCW":"Data CCW","SOCKCMDCW":"Command CW","SOCKDATACW":"Data CW","SOCKCMD":"Command","SOCKDATA":"Data","D_SOCKCMD":"Command to send via Websocket","D_SOCKDATA":"Data to include with the Websocket Command","PINPUSH":"Pushbutton GPIO","D_PINPUSH":"GPIO pin that is connected to the pushbutton pin of the rotary. 0 or empty to disable.","PINPUSHDEBOUNCE":"Debounce-time (ms)","D_PINPUSHDEBOUNCE":"Debounce time for the button. If the button has hardware-debouncing, set to 0.","PUSHSTATE":"Button logic-level active low","D_PUSHSTATE":"Activate this, if pressing the button pulls the logic level on the GPIO low.","PUSHACTION":"Short Press Action","D_PUSHACTION":"Action that gets triggered, when pushbutton is pressed briefly.","LONGPUSHACTION":"Long Press Action","D_LONGPUSHACTION":"Action that gets triggered, when pushbutton is pressed longer.","SET_DEBUG":"Debug Settings","D_SET_DEBUG":"Settings for functional debugging.","PLAY":"Play","PAUSE":"Pause","PLAYPAUSE":"Play/Pause toggle","STOP":"Stop","REPEAT":"Repeat","RANDOM":"Random","CLEARQUEUE":"Clear Queue","MUTE":"Mute","UNMUTE":"Unmute","TOGGLEMUTE":"Toggle Mute","SHUTDOWN":"System Shutdown","REBOOT":"System Reboot","RESTARTAPP":"Restart Application","DUMPLOG":"Dump logfile","LOGGING":"Logging","D_LOGGING":"Switch the output of log messages on or off. Error messages are always logged.","TOAST_START_SUCCESS":"Plugin successfully started.","TOAST_STOP_SUCCESS":"Plugin successfully stopped.","TOAST_START_FAIL":"Plugins failed to start.","TOAST_STOP_FAIL":"Plugins failed to stop.","TOAST_GPIO_BLOCKED":"GPIO Pin unavailable","TOAST_MSG_OVERLAY_BLOCKING":"Blocked by another overlay.","TOAST_SAVE_SUCCESS":"Successfully saved","TOAST_MSG_SAVE":"Settings for Encoder ","TOAST_DEBUG_SAVE":"Debug Settings","TOAST_SAVE_FAIL":"Save failed","TOAST_WRONG_PARAMETER":"Error in parameters","TOAST_NEEDS_INTEGER":"GPIO Pins must be Integers.","TOAST_PINS_DIFFERENT":"GPIO Pins for A/B/Button must be different.","TOAST_PINS_BLOCKED":"Pins already used in another Encoder.","TOAST_NO_TYPE":"Please select 'Periods per tick'!"}}
info: [ROTARYENCODER2] onStart: Config loaded: {"syncSave":true,"autosave":true,"autosaveDelay":1000,"saved":true,"atomicSave":false,"data":{"enabled0":{"type":"boolean","value":true},"rotaryType0":{"type":"number","value":1},"pinA0":{"type":"string","value":"7"},"pinB0":{"type":"string","value":"8"},"dialAction0":{"type":"number","value":1},"socketCmdCW0":{"type":"string","value":""},"socketDataCW0":{"type":"string","value":""},"socketCmdCCW0":{"type":"string","value":""},"socketDataCCW0":{"type":"string","value":""},"pinPush0":{"type":"number","value":15},"pinPushDebounce0":{"type":"number","value":0},"pushState0":{"type":"boolean","value":true},"pushAction0":{"type":"number","value":3},"socketCmdPush0":{"type":"string","value":""},"socketDataPush0":{"type":"string","value":""},"longPushAction0":{"type":"number","value":0},"socketCmdLongPush0":{"type":"string","value":""},"socketDataLongPush0":{"type":"string","value":""},"enabled1":{"type":"boolean","value":false},"rotaryType1":{"type":"number","value":1},"pinA1":{"type":"string","value":"24"},"pinB1":{"type":"string","value":"26"},"dialAction1":{"type":"number","value":2},"socketCmdCW1":{"type":"string","value":""},"socketDataCW1":{"type":"string","value":""},"socketCmdCCW1":{"type":"string","value":""},"socketDataCCW1":{"type":"string","value":""},"pinPush1":{"type":"number","value":0},"pinPushDebounce1":{"type":"number","value":0},"pushState1":{"type":"boolean","value":false},"pushAction1":{"type":"number","value":0},"socketCmdPush1":{"type":"string","value":""},"socketDataPush1":{"type":"string","value":""},"longPushAction1":{"type":"number","value":0},"socketCmdLongPush1":{"type":"string","value":""},"socketDataLongPush1":{"type":"string","value":""},"enabled2":{"type":"boolean","value":false},"rotaryType2":{"type":"number","value":1},"pinA2":{"type":"string","value":"7"},"pinB2":{"type":"string","value":"8"},"dialAction2":{"type":"number","value":1},"socketCmdCW2":{"type":"string","value":""},"socketDataCW2":{"type":"string","value":""},"socketCmdCCW2":{"type":"string","value":""},"socketDataCCW2":{"type":"string","value":""},"pinPush2":{"type":"number","value":0},"pinPushDebounce2":{"type":"number","value":0},"pushState2":{"type":"boolean","value":false},"pushAction2":{"type":"number","value":0},"socketCmdPush2":{"type":"string","value":""},"socketDataPush2":{"type":"string","value":""},"longPushAction2":{"type":"number","value":0},"socketCmdLongPush2":{"type":"string","value":""},"socketDataLongPush2":{"type":"string","value":""},"logging":{"type":"boolean","value":true}},"callbacks":{"_":{}},"filePath":"/data/configuration/user_interface/rotaryencoder2/config.json"}
info: [ROTARYENCODER2] activateRotaries: 1,2,3
info: [ROTARYENCODER2] activateRotaries: 1,2
info: [ROTARYENCODER2] activateRotaries: 1
info: [ROTARYENCODER2] activateRotaries:
info: [ROTARYENCODER2] activateRotaries: end of recursion.
info: [ROTARYENCODER2] addOverlay: 7 8 1
volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay rotary-encoder pin_a=7 pin_b=8 relative_axis=true steps-per-period=1
pam_unix(sudo:session): session opened for user root by (uid=0)
rotary-encoder rotary@7: gray
input: rotary@7 as /devices/platform/rotary@7/input/input5
pam_unix(sudo:session): session closed for user root
info: CoreCommandRouter::volumioGetState
info: CorePlayQueue::getTrack 0
info: [ROTARYENCODER2] attachListener: /dev/input/by-path/platform-rotary@7-event
info: [ROTARYENCODER2] addEventHandle for rotary: 1
info: [ROTARYENCODER2] activateButtons: 1,2,3
info: [ROTARYENCODER2] activateButtons: 1,2
info: [ROTARYENCODER2] activateButtons: 1
info: [ROTARYENCODER2] activateButtons:
info: [ROTARYENCODER2] activateButtons: end of recursion.
info: [ROTARYENCODER2] activateButtons: Now assign push button: 1
info: [ROTARYENCODER2] Push Button 1 now resolving.
info: [ROTARYENCODER2] onStart: Plugin successfully started.
info: Done.
Process '/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev' failed with exit code 1.
info: CoreCommandRouter::getUIConfigOnPlugin
info: [ROTARYENCODER2] getUIConfig: starting:
info: [ROTARYENCODER2] getUIConfig: i18nStrings{"ROTARYENCODER2":{"CONFIG":"Rotary Encoder II Plugin Configuration","SAVE":"Save","ENCODER0":"Rotary Encoder 1","D_ENCODER0":"Settings for the first rotary encoder.","ENCODER1":"Rotary Encoder 2","D_ENCODER1":"Settings for the second rotary encoder.","ENCODER2":"Rotary Encoder 3","D_ENCODER2":"Settings for the third rotary encoder.","ROTARYTYPE":"Periods per tick","D_ROTARYTYPE":"Periods per tick (Full: A and B full period, half: A and B half period, quarter: A or B half period","FULL":"Full-period mode","HALF":"Half-period mode","QUARTER":"Quarter-period mode","PINA":"Pin A GPIO","D_PINA":"GPIO pin that is connected to the first pin of the rotary.","PINB":"Pin B GPIO","D_PINB":"GPIO pin that is connected to the second pin of the rotary.","DIALACTION":"Dial Action","D_DIALACTION":"Action to be triggered by turning the rotary encocer. Option 'Emit Websocket Message' can be used to control other plugins using the Volumio Websock calls between Plugins. (see https://volumio.github.io/docs/API/WebSocket_APIs.html section 'CallMethod on Plugin' for details)","DOTS":"...","VOLUME":"Volume","SKIP":"Prev/Next title","SEEK":"Seek in title","SCROLL":"Scroll","EMIT":"Emit Websocket Message","SOCKCMDCCW":"Command CCW","SOCKDATACCW":"Data CCW","SOCKCMDCW":"Command CW","SOCKDATACW":"Data CW","SOCKCMD":"Command","SOCKDATA":"Data","D_SOCKCMD":"Command to send via Websocket","D_SOCKDATA":"Data to include with the Websocket Command","PINPUSH":"Pushbutton GPIO","D_PINPUSH":"GPIO pin that is connected to the pushbutton pin of the rotary. 0 or empty to disable.","PINPUSHDEBOUNCE":"Debounce-time (ms)","D_PINPUSHDEBOUNCE":"Debounce time for the button. If the button has hardware-debouncing, set to 0.","PUSHSTATE":"Button logic-level active low","D_PUSHSTATE":"Activate this, if pressing the button pulls the logic level on the GPIO low.","PUSHACTION":"Short Press Action","D_PUSHACTION":"Action that gets triggered, when pushbutton is pressed briefly.","LONGPUSHACTION":"Long Press Action","D_LONGPUSHACTION":"Action that gets triggered, when pushbutton is pressed longer.","SET_DEBUG":"Debug Settings","D_SET_DEBUG":"Settings for functional debugging.","PLAY":"Play","PAUSE":"Pause","PLAYPAUSE":"Play/Pause toggle","STOP":"Stop","REPEAT":"Repeat","RANDOM":"Random","CLEARQUEUE":"Clear Queue","MUTE":"Mute","UNMUTE":"Unmute","TOGGLEMUTE":"Toggle Mute","SHUTDOWN":"System Shutdown","REBOOT":"System Reboot","RESTARTAPP":"Restart Application","DUMPLOG":"Dump logfile","LOGGING":"Logging","D_LOGGING":"Switch the output of log messages on or off. Error messages are always logged.","TOAST_START_SUCCESS":"Plugin successfully started.","TOAST_STOP_SUCCESS":"Plugin successfully stopped.","TOAST_START_FAIL":"Plugins failed to start.","TOAST_STOP_FAIL":"Plugins failed to stop.","TOAST_GPIO_BLOCKED":"GPIO Pin unavailable","TOAST_MSG_OVERLAY_BLOCKING":"Blocked by another overlay.","TOAST_SAVE_SUCCESS":"Successfully saved","TOAST_MSG_SAVE":"Settings for Encoder ","TOAST_DEBUG_SAVE":"Debug Settings","TOAST_SAVE_FAIL":"Save failed","TOAST_WRONG_PARAMETER":"Error in parameters","TOAST_NEEDS_INTEGER":"GPIO Pins must be Integers.","TOAST_PINS_DIFFERENT":"GPIO Pins for A/B/Button must be different.","TOAST_PINS_BLOCKED":"Pins already used in another Encoder.","TOAST_NO_TYPE":"Please select 'Periods per tick'!"}}
info: [ROTARYENCODER2] getUIConfig: i18nStringsDefaults{"ROTARYENCODER2":{"CONFIG":"Rotary Encoder II Plugin Configuration","SAVE":"Save","ENCODER0":"Rotary Encoder 1","D_ENCODER0":"Settings for the first rotary encoder.","ENCODER1":"Rotary Encoder 2","D_ENCODER1":"Settings for the second rotary encoder.","ENCODER2":"Rotary Encoder 3","D_ENCODER2":"Settings for the third rotary encoder.","ROTARYTYPE":"Periods per tick","D_ROTARYTYPE":"Periods per tick (Full: A and B full period, half: A and B half period, quarter: A or B half period","FULL":"Full-period mode","HALF":"Half-period mode","QUARTER":"Quarter-period mode","PINA":"Pin A GPIO","D_PINA":"GPIO pin that is connected to the first pin of the rotary.","PINB":"Pin B GPIO","D_PINB":"GPIO pin that is connected to the second pin of the rotary.","DIALACTION":"Dial Action","D_DIALACTION":"Action to be triggered by turning the rotary encocer. Option 'Emit Websocket Message' can be used to control other plugins using the Volumio Websock calls between Plugins. (see https://volumio.github.io/docs/API/WebSocket_APIs.html section 'CallMethod on Plugin' for details)","DOTS":"...","VOLUME":"Volume","SKIP":"Prev/Next title","SEEK":"Seek in title","SCROLL":"Scroll","EMIT":"Emit Websocket Message","SOCKCMDCCW":"Command CCW","SOCKDATACCW":"Data CCW","SOCKCMDCW":"Command CW","SOCKDATACW":"Data CW","SOCKCMD":"Command","SOCKDATA":"Data","D_SOCKCMD":"Command to send via Websocket","D_SOCKDATA":"Data to include with the Websocket Command","PINPUSH":"Pushbutton GPIO","D_PINPUSH":"GPIO pin that is connected to the pushbutton pin of the rotary. 0 or empty to disable.","PINPUSHDEBOUNCE":"Debounce-time (ms)","D_PINPUSHDEBOUNCE":"Debounce time for the button. If the button has hardware-debouncing, set to 0.","PUSHSTATE":"Button logic-level active low","D_PUSHSTATE":"Activate this, if pressing the button pulls the logic level on the GPIO low.","PUSHACTION":"Short Press Action","D_PUSHACTION":"Action that gets triggered, when pushbutton is pressed briefly.","LONGPUSHACTION":"Long Press Action","D_LONGPUSHACTION":"Action that gets triggered, when pushbutton is pressed longer.","SET_DEBUG":"Debug Settings","D_SET_DEBUG":"Settings for functional debugging.","PLAY":"Play","PAUSE":"Pause","PLAYPAUSE":"Play/Pause toggle","STOP":"Stop","REPEAT":"Repeat","RANDOM":"Random","CLEARQUEUE":"Clear Queue","MUTE":"Mute","UNMUTE":"Unmute","TOGGLEMUTE":"Toggle Mute","SHUTDOWN":"System Shutdown","REBOOT":"System Reboot","RESTARTAPP":"Restart Application","DUMPLOG":"Dump logfile","LOGGING":"Logging","D_LOGGING":"Switch the output of log messages on or off. Error messages are always logged.","TOAST_START_SUCCESS":"Plugin successfully started.","TOAST_STOP_SUCCESS":"Plugin successfully stopped.","TOAST_START_FAIL":"Plugins failed to start.","TOAST_STOP_FAIL":"Plugins failed to stop.","TOAST_GPIO_BLOCKED":"GPIO Pin unavailable","TOAST_MSG_OVERLAY_BLOCKING":"Blocked by another overlay.","TOAST_SAVE_SUCCESS":"Successfully saved","TOAST_MSG_SAVE":"Settings for Encoder ","TOAST_DEBUG_SAVE":"Debug Settings","TOAST_SAVE_FAIL":"Save failed","TOAST_WRONG_PARAMETER":"Error in parameters","TOAST_NEEDS_INTEGER":"GPIO Pins must be Integers.","TOAST_PINS_DIFFERENT":"GPIO Pins for A/B/Button must be different.","TOAST_PINS_BLOCKED":"Pins already used in another Encoder.","TOAST_NO_TYPE":"Please select 'Periods per tick'!"}}
info: [ROTARYENCODER2] getUIConfig: language code: en dir: /data/plugins/user_interface/rotaryencoder2
info: [ROTARYENCODER2] getI18nString("VOLUME"):Volume
info: [ROTARYENCODER2] getI18nString("PLAYPAUSE"):Play/Pause toggle
info: [ROTARYENCODER2] getI18nString("DOTS"):...
info: [ROTARYENCODER2] getI18nString("SKIP"):Prev/Next title
info: [ROTARYENCODER2] getI18nString("DOTS"):...
info: [ROTARYENCODER2] getI18nString("DOTS"):...
info: [ROTARYENCODER2] getI18nString("VOLUME"):Volume
info: [ROTARYENCODER2] getI18nString("DOTS"):...
info: [ROTARYENCODER2] getI18nString("DOTS"):...
info: CALLMETHOD: user_interface rotaryencoder2 updateEncoder [object Object]
info: CoreCommandRouter::executeOnPlugin: rotaryencoder2 , updateEncoder
info: [ROTARYENCODER2] updateEncoder: Rotary1 with:{"enabled0":true,"rotaryType0":{"value":1,"label":"1/1"},"pinA0":7,"pinB0":8,"dialAction0":{"value":1,"label":"Volume"},"socketCmdCCW0":"","socketDataCCW0":"","socketCmdCW0":"","socketDataCW0":"","pinPush0":15,"pinPushDebounce0":0,"pushState0":true,"pushAction0":{"value":3,"label":"Play/Pause toggle"},"socketCmdPush0":"","socketDataPush0":"","longPushAction0":{"value":0,"label":"..."},"socketCmdLongPush0":"","socketDataLongPush0":""}
info: [ROTARYENCODER2] sanityCheckSettings: Rotary1 for:{"enabled0":true,"rotaryType0":{"value":1,"label":"1/1"},"pinA0":7,"pinB0":8,"dialAction0":{"value":1,"label":"Volume"},"socketCmdCCW0":"","socketDataCCW0":"","socketCmdCW0":"","socketDataCW0":"","pinPush0":15,"pinPushDebounce0":0,"pushState0":true,"pushAction0":{"value":3,"label":"Play/Pause toggle"},"socketCmdPush0":"","socketDataPush0":"","longPushAction0":{"value":0,"label":"..."},"socketCmdLongPush0":"","socketDataLongPush0":""}
info: [ROTARYENCODER2] deactivateRotaries: 1,2,3
info: [ROTARYENCODER2] deactivateRotaries: 2,3
info: [ROTARYENCODER2] deactivateRotaries: 3
info: [ROTARYENCODER2] deactivateRotaries:
info: [ROTARYENCODER2] deactivateRotaries: end of recursion.
info: [ROTARYENCODER2] detachListener: [object Object]
info: [ROTARYENCODER2] checkOverlayExists: Checking for existing overlays for Rotary: 1
volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay -l
pam_unix(sudo:session): session opened for user root by (uid=0)
pam_unix(sudo:session): session closed for user root
info: [ROTARYENCODER2] checkOverlayExists: check pinA=7pinB=8 in Overlays (in load order):
0: rotary-encoder pin_a=7 pin_b=8 relative_axis=true steps-per-period=1
info: [ROTARYENCODER2] checkOverlayExists: rotary 1uses overlay 0
info: [ROTARYENCODER2] removeOverlay: 0
volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay -r 0
pam_unix(sudo:session): session opened for user root by (uid=0)
pam_unix(sudo:session): session closed for user root
info: [ROTARYENCODER2] removeOverlay: 0 returned:
volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay -l
pam_unix(sudo:session): session opened for user root by (uid=0)
pam_unix(sudo:session): session closed for user root
info: [ROTARYENCODER2] removeOverlay: "overlay -l" returned: No overlays loaded
info: [ROTARYENCODER2] deactivateRotaries: deactivated rotary1
info: [ROTARYENCODER2] deactivateButtons: 1,2,3
info: [ROTARYENCODER2] deactivateButtons: 2,3
info: [ROTARYENCODER2] deactivateButtons: 3
info: [ROTARYENCODER2] deactivateButtons:
info: [ROTARYENCODER2] deactivateButtons: end of recursion.
info: [ROTARYENCODER2] deactivateButtons: button 1 is disabled.
info: [ROTARYENCODER2] updateEncoder: Changing Encoder 1 Settings to new values
info: [ROTARYENCODER2] activateRotaries: 1,2,3
info: [ROTARYENCODER2] activateRotaries: 1,2
info: [ROTARYENCODER2] activateRotaries: 1
info: [ROTARYENCODER2] activateRotaries:
info: [ROTARYENCODER2] activateRotaries: end of recursion.
info: [ROTARYENCODER2] addOverlay: 7 8 1
volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay rotary-encoder pin_a=7 pin_b=8 relative_axis=true steps-per-period=1
pam_unix(sudo:session): session opened for user root by (uid=0)
rotary-encoder rotary@7: gray
input: rotary@7 as /devices/platform/rotary@7/input/input6
pam_unix(sudo:session): session closed for user root
info: [ROTARYENCODER2] attachListener: /dev/input/by-path/platform-rotary@7-event
info: [ROTARYENCODER2] addEventHandle for rotary: 1
info: [ROTARYENCODER2] activateButtons: 1,2,3
info: [ROTARYENCODER2] activateButtons: 1,2
info: [ROTARYENCODER2] activateButtons: 1
info: [ROTARYENCODER2] activateButtons:
info: [ROTARYENCODER2] activateButtons: end of recursion.
info: [ROTARYENCODER2] activateButtons: Now assign push button: 1
info: [ROTARYENCODER2] Push Button 1 now resolving.
info: [ROTARYENCODER2] getI18nString("TOAST_SAVE_SUCCESS"):Successfully saved
info: [ROTARYENCODER2] getI18nString("TOAST_MSG_SAVE"):Settings for Encoder
info: [ROTARYENCODER2] updateEncoder: SUCCESS with Toast: Successfully saved Settings for Encoder 1
info: [ROTARYENCODER2] getI18nString("TOAST_SAVE_SUCCESS"):Successfully saved
info: [ROTARYENCODER2] getI18nString("TOAST_MSG_SAVE"):Settings for Encoder
Process '/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev' failed with exit code 1.
With the plugin enabled from an SSH window I issued the cat /dev/input/by-path/platform-rotary\@7-event | od -An -vx
command and the rotary was giving an output OK. CW then ACW
5cf1 61a7 ce51 000a 0000 0000 0000 0000
5cf1 61a7 c286 000b 0002 0000 0001 0000
5cf1 61a7 c286 000b 0000 0000 0000 0000
5cf1 61a7 a179 000c 0002 0000 0001 0000
5cf1 61a7 a179 000c 0000 0000 0000 0000
5cf1 61a7 da0c 000d 0002 0000 0001 0000
5cf1 61a7 da0c 000d 0000 0000 0000 0000
5cf2 61a7 4d04 0002 0002 0000 ffff ffff
5cf2 61a7 4d04 0002 0000 0000 0000 0000
5cf2 61a7 226e 0003 0002 0000 ffff ffff
5cf2 61a7 226e 0003 0000 0000 0000 0000
5cf2 61a7 a753 0003 0002 0000 ffff ffff
5cf2 61a7 a753 0003 0000 0000 0000 0000
5cf2 61a7 156a 0004 0002 0000 ffff ffff
Hardware RPI4 2GB, D10 Dac
Hope this will help, any other test needed just ask, I’ll try