Skip to content

Navigation Menu

Sign in
Sign up

Upgrade to 20260820 from 20260529: CharLCD and Rotary Encoder are "dead" #2158

HJLK started this conversation in Bug Reports
Discussion options

After upgrading from 0529 to 0820 the CharLCD and Rotary Encoder are "dead", so is the volume control in the GUI. The parameters in Power Button, Rotary Encoder and Character LCD are as they should be. When checking System - Status I see the following errors:

...
Aug 27 16:56:07 rAudio systemd[1]: Started Character LCD.
Aug 27 16:56:07 rAudio systemd[1]: Starting Music Player Daemon...
Aug 27 16:56:08 rAudio lcdchar.py[733]: Traceback (most recent call last):
Aug 27 16:56:08 rAudio lcdchar.py[733]: File "/srv/http/bash/lcdchar.py", line 139, in
Aug 27 16:56:08 rAudio lcdchar.py[733]: with open( '/srv/http/data/shm/status.json' ) as f: STATUS = json.load( f )
Aug 27 16:56:08 rAudio lcdchar.py[733]: ~~~~~~~~~^^^^^
Aug 27 16:56:08 rAudio lcdchar.py[733]: File "/usr/lib/python3.14/json/init.py", line 298, in load
Aug 27 16:56:08 rAudio lcdchar.py[733]: return loads(fp.read(),
Aug 27 16:56:08 rAudio lcdchar.py[733]: cls=cls, object_hook=object_hook,
Aug 27 16:56:08 rAudio lcdchar.py[733]: parse_float=parse_float, parse_int=parse_int,
Aug 27 16:56:08 rAudio lcdchar.py[733]: parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
Aug 27 16:56:08 rAudio lcdchar.py[733]: File "/usr/lib/python3.14/json/init.py", line 352, in loads
Aug 27 16:56:08 rAudio lcdchar.py[733]: return _default_decoder.decode(s)
Aug 27 16:56:08 rAudio lcdchar.py[733]: ~~~~~~~~~~~~~~~~~~~~~~~^^^
Aug 27 16:56:08 rAudio lcdchar.py[733]: File "/usr/lib/python3.14/json/decoder.py", line 345, in decode
Aug 27 16:56:08 rAudio lcdchar.py[733]: obj, end = self.raw_decode(s, idx=_w(s, 0).end())
Aug 27 16:56:08 rAudio lcdchar.py[733]: ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
Aug 27 16:56:08 rAudio lcdchar.py[733]: File "/usr/lib/python3.14/json/decoder.py", line 363, in raw_decode
Aug 27 16:56:08 rAudio lcdchar.py[733]: raise JSONDecodeError("Expecting value", s, err.value) from None
Aug 27 16:56:08 rAudio lcdchar.py[733]: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Aug 27 16:56:08 rAudio systemd[1]: lcdchar.service: Main process exited, code=exited, status=1/FAILURE
Aug 27 16:56:08 rAudio systemd[1]: lcdchar.service: Failed with result 'exit-code'.
...

...
Aug 27 16:56:09 rAudio systemd[1]: Started Character LCD.
Aug 27 16:56:09 rAudio lcdchar.py[780]: Traceback (most recent call last):
Aug 27 16:56:09 rAudio lcdchar.py[780]: File "/srv/http/bash/lcdchar.py", line 141, in
Aug 27 16:56:09 rAudio lcdchar.py[780]: v = STATUS[ k ]
Aug 27 16:56:09 rAudio lcdchar.py[780]: ~~~~~~^^^^^
Aug 27 16:56:09 rAudio lcdchar.py[780]: KeyError: 'station'
Aug 27 16:56:09 rAudio systemd[1]: lcdchar.service: Main process exited, code=exited, status=1/FAILURE
Aug 27 16:56:09 rAudio systemd[1]: lcdchar.service: Failed with result 'exit-code'.
...

You must be logged in to vote

Replies: 5 comments 3 replies

Comment options

I had already reported most for these (summarised in #2153) a while ago but as I don't use a volume control I wasn't aware of this. You seem to have got some error messages which I don't see. I normally rely on 'journalctl -f' and/or 'journalctl -xe' for error info but on this occasion I am not seeing anything useful (strange).

Chris

You must be logged in to vote
1 reply
Comment options

rern Aug 28, 2026
Maintainer

Please try the UPDATE.

Comment options

After UPDATE and reboot: the CharLCD works OK, but the rotary volume control (also GUI) is still dead.

You must be logged in to vote
0 replies
Comment options

Still I see some errors in system - status:

Aug 28 10:05:18 rAudio lcdchar.py[746]: Traceback (most recent call last):
Aug 28 10:05:18 rAudio lcdchar.py[746]: File "/srv/http/bash/lcdchar.py", line 137, in
Aug 28 10:05:18 rAudio lcdchar.py[746]: with open( '/srv/http/data/shm/status.json' ) as f: STATUS = json.load( f )
Aug 28 10:05:18 rAudio lcdchar.py[746]: ~~~~~~~~~^^^^^
Aug 28 10:05:18 rAudio lcdchar.py[746]: File "/usr/lib/python3.14/json/init.py", line 298, in load
Aug 28 10:05:18 rAudio lcdchar.py[746]: return loads(fp.read(),
Aug 28 10:05:18 rAudio lcdchar.py[746]: cls=cls, object_hook=object_hook,
Aug 28 10:05:18 rAudio lcdchar.py[746]: parse_float=parse_float, parse_int=parse_int,
Aug 28 10:05:18 rAudio lcdchar.py[746]: parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
Aug 28 10:05:18 rAudio lcdchar.py[746]: File "/usr/lib/python3.14/json/init.py", line 352, in loads
Aug 28 10:05:18 rAudio lcdchar.py[746]: return _default_decoder.decode(s)
Aug 28 10:05:18 rAudio lcdchar.py[746]: ~~~~~~~~~~~~~~~~~~~~~~~^^^
Aug 28 10:05:18 rAudio lcdchar.py[746]: File "/usr/lib/python3.14/json/decoder.py", line 345, in decode
Aug 28 10:05:18 rAudio lcdchar.py[746]: obj, end = self.raw_decode(s, idx=_w(s, 0).end())
Aug 28 10:05:18 rAudio lcdchar.py[746]: ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
Aug 28 10:05:18 rAudio lcdchar.py[746]: File "/usr/lib/python3.14/json/decoder.py", line 363, in raw_decode
Aug 28 10:05:18 rAudio lcdchar.py[746]: raise JSONDecodeError("Expecting value", s, err.value) from None
Aug 28 10:05:18 rAudio lcdchar.py[746]: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Aug 28 10:05:18 rAudio systemd[1]: lcdchar.service: Main process exited, code=exited, status=1/FAILURE
Aug 28 10:05:18 rAudio systemd[1]: lcdchar.service: Failed with result 'exit-code'.
Aug 28 10:05:19 rAudio avahi-daemon[295]: Leaving mDNS multicast group on interface wlan0.IPv6 with address fe80::8aa2:9eff:fe82:fcc1.
Aug 28 10:05:19 rAudio avahi-daemon[295]: Joining mDNS multicast group on interface wlan0.IPv6 with address 2a02:a441:.&checktime(4978,0,8,':')aa2:9eff:fe82:fcc1.
Aug 28 10:05:19 rAudio avahi-daemon[295]: Registering new address record for 2a02:a441:.&checktime(4978,0,8,':')aa2:9eff:fe82:fcc1 on wlan0..
Aug 28 10:05:19 rAudio avahi-daemon[295]: Withdrawing address record for fe80::8aa2:9eff:fe82:fcc1 on wlan0.
Aug 28 10:05:19 rAudio avahi-daemon[295]: Registering new address record for fd4a:3931:.&checktime(3435,0,8,':')aa2:9eff:fe82:fcc1 on wlan0.
.
Aug 28 10:05:19 rAudio sudo[770]: http : PWD=/srv/http ; USER=root ; COMMAND=/srv/http/bash/status
Aug 28 10:05:19 rAudio sudo[770]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=33)
Aug 28 10:05:19 rAudio sudo[770]: pam_unix(sudo:session): session closed for user root
Aug 28 10:05:19 rAudio mpd[768]: decoder: Decoder plugin "wildmidi" is unavailable: configuration file does not exist: /etc/timidity/timidity.cfg
Aug 28 10:05:19 rAudio systemd[1]: Started Music Player Daemon.
Aug 28 10:05:19 rAudio systemd[1]: Started MPD idle.
Aug 28 10:05:19 rAudio mpd[768]: mixer: Failed to read mixer for "ALSAEqual": no such mixer control: PCM
Aug 28 10:05:19 rAudio systemd[1]: Started Character LCD.
Aug 28 10:05:20 rAudio systemd[1]: lcdchar.service: Deactivated successfully.
Aug 28 10:05:20 rAudio sudo[940]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '00. 31 Hz'
Aug 28 10:05:20 rAudio sudo[940]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[942]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[940]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[943]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '01. 63 Hz'
Aug 28 10:05:20 rAudio sudo[943]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[945]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[943]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[946]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '02. 125 Hz'
Aug 28 10:05:20 rAudio sudo[946]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[948]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[946]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[949]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '03. 250 Hz'
Aug 28 10:05:20 rAudio sudo[949]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[951]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[949]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[952]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '04. 500 Hz'
Aug 28 10:05:20 rAudio sudo[952]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[954]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[952]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[955]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '05. 1 kHz'
Aug 28 10:05:20 rAudio sudo[955]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[957]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[955]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[958]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '06. 2 kHz'
Aug 28 10:05:20 rAudio sudo[958]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[960]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[958]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[961]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '07. 4 kHz'
Aug 28 10:05:20 rAudio sudo[961]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[963]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[961]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[964]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '08. 8 kHz'
Aug 28 10:05:20 rAudio sudo[964]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[966]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[964]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio sudo[967]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '09. 16 kHz'
Aug 28 10:05:20 rAudio sudo[967]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Aug 28 10:05:20 rAudio startup.sh[969]: Specify what you want to set...
Aug 28 10:05:20 rAudio sudo[967]: pam_unix(sudo:session): session closed for user mpd
Aug 28 10:05:20 rAudio mpd[768]: mixer: Failed to set mixer for "ALSAEqual": no such mixer control: PCM
Aug 28 10:05:20 rAudio mpd[768]: exception: Failed to set mixer for "ALSAEqual"; no such mixer control: PCM
Aug 28 10:05:20 rAudio startup.sh[977]: MPD error: Failed to set mixer for "ALSAEqual"; no such mixer control: PCM
Aug 28 10:05:20 rAudio mpd[768]: server_socket: bind to '0.0.0.0:8000' failed (continuing anyway, because binding to '[::]:8000' succeeded): Failed to bind socket: Address already in use
Aug 28 10:05:20 rAudio mpd[768]: output: Failed to open mixer for "ALSAEqual": no such mixer control: PCM
Aug 28 10:05:20 rAudio systemd[1]: Started Character LCD.
Aug 28 10:05:20 rAudio mpdidle.sh[783]: /srv/http/bash/mpdidle.sh: line 12: 1013 Killed $dirbash/status-push.sh
Aug 28 10:05:20 rAudio systemd[1]: Stopping Character LCD...
Aug 28 10:05:20 rAudio systemd[1]: lcdchar.service: Deactivated successfully.
Aug 28 10:05:20 rAudio systemd[1]: Stopped Character LCD.
Aug 28 10:05:20 rAudio systemd[1]: Started Character LCD.
Aug 28 10:05:21 rAudio mpd[768]: alsa_output: Decoder is too slow; playing silence to avoid xrun
Aug 28 10:05:27 rAudio websocket.py[299]: opening handshake failed
Aug 28 10:05:27 rAudio websocket.py[299]: Traceback (most recent call last):
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/http11.py", line 138, in parse
Aug 28 10:05:27 rAudio websocket.py[299]: request_line = yield from parse_line(read_line)
Aug 28 10:05:27 rAudio websocket.py[299]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/http11.py", line 320, in parse_line
Aug 28 10:05:27 rAudio websocket.py[299]: line = yield from read_line(MAX_LINE_LENGTH)
Aug 28 10:05:27 rAudio websocket.py[299]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/streams.py", line 46, in read_line
Aug 28 10:05:27 rAudio websocket.py[299]: raise EOFError(f"stream ends after {p} bytes, before end of line")
Aug 28 10:05:27 rAudio websocket.py[299]: EOFError: stream ends after 0 bytes, before end of line
Aug 28 10:05:27 rAudio websocket.py[299]: The above exception was the direct cause of the following exception:
Aug 28 10:05:27 rAudio websocket.py[299]: Traceback (most recent call last):
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/server.py", line 547, in parse
Aug 28 10:05:27 rAudio websocket.py[299]: request = yield from Request.parse(
Aug 28 10:05:27 rAudio websocket.py[299]: ^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 28 10:05:27 rAudio websocket.py[299]: self.reader.read_line,
Aug 28 10:05:27 rAudio websocket.py[299]: ^^^^^^^^^^^^^^^^^^^^^^
Aug 28 10:05:27 rAudio websocket.py[299]: )
Aug 28 10:05:27 rAudio websocket.py[299]: ^
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/http11.py", line 140, in parse
Aug 28 10:05:27 rAudio websocket.py[299]: raise EOFError("connection closed while reading HTTP request line") from exc
Aug 28 10:05:27 rAudio websocket.py[299]: EOFError: connection closed while reading HTTP request line
Aug 28 10:05:27 rAudio websocket.py[299]: The above exception was the direct cause of the following exception:
Aug 28 10:05:27 rAudio websocket.py[299]: Traceback (most recent call last):
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/asyncio/server.py", line 356, in conn_handler
Aug 28 10:05:27 rAudio websocket.py[299]: await connection.handshake(
Aug 28 10:05:27 rAudio websocket.py[299]: ...<3 lines>...
Aug 28 10:05:27 rAudio websocket.py[299]: )
Aug 28 10:05:27 rAudio websocket.py[299]: File "/usr/lib/python3.14/site-packages/websockets/asyncio/server.py", line 207, in handshake
Aug 28 10:05:27 rAudio websocket.py[299]: raise self.protocol.handshake_exc
Aug 28 10:05:27 rAudio websocket.py[299]: websockets.exceptions.InvalidMessage: did not receive a valid HTTP request
Aug 28 10:05:29 rAudio systemd[1]: startup.service: Deactivated successfully.
Aug 28 10:05:29 rAudio systemd[1]: Finished rAudio Startup.

You must be logged in to vote
1 reply
Comment options

rern Sep 3, 2026
Maintainer

Try the UPDATE again.
Rotary encoder in the this UPDATE can:

  • Long-press - Next track
  • Double-click - Previous track
Comment options

Thank you, Rern. Did that, and the button functions of the rotary encoder work as expected, also with the double click and long press functions. But it makes no difference for the volume control: it is still "dead", also on the webGui, and that bothers me, it seems something is wrong with the volume control itself. When I disable the rotary encoder, the volume control in the webGui still does not work. When I refresh the webGui the volume control shows "-1". The same is the case in the rAudio app on my phone

Maybe something went wrong at the UPGRADE to 0820. Could you point me to where I have got to look for possible problems regarding volume control? Thanks in advance!

NB: I can see no errors in System - Status (only in the last part, regarding PCM for ALSA) . The last part of Status:

Sep 03 16:12:53 rAudio sudo[944]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '08. 8 kHz'
Sep 03 16:12:53 rAudio sudo[944]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Sep 03 16:12:53 rAudio startup.sh[946]: Specify what you want to set...
Sep 03 16:12:53 rAudio sudo[944]: pam_unix(sudo:session): session closed for user mpd
Sep 03 16:12:53 rAudio sudo[947]: root : PWD=/ ; USER=mpd ; COMMAND=/usr/bin/amixer -MqD equal sset '09. 16 kHz'
Sep 03 16:12:53 rAudio sudo[947]: pam_unix(sudo:session): session opened for user mpd(uid=45) by (uid=0)
Sep 03 16:12:53 rAudio startup.sh[949]: Specify what you want to set...
Sep 03 16:12:53 rAudio sudo[947]: pam_unix(sudo:session): session closed for user mpd
Sep 03 16:12:53 rAudio mpd[751]: mixer: Failed to set mixer for "ALSAEqual": no such mixer control: PCM
Sep 03 16:12:53 rAudio mpd[751]: exception: Failed to set mixer for "ALSAEqual"; no such mixer control: PCM
Sep 03 16:12:53 rAudio startup.sh[956]: MPD error: Failed to set mixer for "ALSAEqual"; no such mixer control: PCM
Sep 03 16:12:53 rAudio mpd[751]: server_socket: bind to '0.0.0.0:8000' failed (continuing anyway, because binding to '[::]:8000' succeeded): Failed to bind socket: Address already in use

Sep 03 16:12:53 rAudio mpd[751]: output: Failed to open mixer for "ALSAEqual": no such mixer control: PCM
Sep 03 16:12:53 rAudio systemd[1]: Started Character LCD.
Sep 03 16:12:54 rAudio avahi-daemon[295]: Server startup complete. Host name is rAudio-3.local. Local service cookie is 1976683476.
Sep 03 16:12:55 rAudio avahi-daemon[295]: Service "rAudio-3" (/services/ros.service) successfully established.
Sep 03 16:12:55 rAudio mpd[751]: alsa_output: Decoder is too slow; playing silence to avoid xrun
Sep 03 16:13:02 rAudio systemd[1]: startup.service: Deactivated successfully.
Sep 03 16:13:02 rAudio systemd[1]: Finished rAudio Startup.
Sep 03 16:13:02 rAudio systemd[1]: startup.service: Consumed 1.066s CPU time over 19.865s wall clock time.
Sep 03 16:13:02 rAudio systemd[1]: Started Power button.
Sep 03 16:13:02 rAudio systemd[1]: Reached target Login Prompts.
Sep 03 16:13:02 rAudio systemd[1]: Reached target Multi-User System.
Sep 03 16:13:02 rAudio systemd[1]: Started Rotary encoder.
Sep 03 16:13:02 rAudio systemd[1]: Reached target Graphical Interface.
Sep 03 16:13:02 rAudio systemd[1]: Startup finished in 1.787s (kernel) + 26.129s (userspace) = 27.916s.

You must be logged in to vote
1 reply
Comment options

rern Sep 3, 2026
Maintainer

  • Disable Equalizer and try again.
  • Post content of file /srv/http/data/system/equalizer.json
  • Delete the file before enable again.
Comment options

Thanks, Rern. Disabling Equalizer did the trick: volume control works OK now (both Gui and Rotary). Then I deleted the equalizer.json, and enabled Equalizer, and the problem is back again! I disabled Equalizer for the time being.

This is the content of the (default) equalizer.json after enabling Equalizer:
{
"active" : "Flat"
, "preset" : { "Flat": [ 62, 62, 62, 62, 62, 62, 62, 62, 62, 62 ] }
}

This was the content of the old .json:
{
"active": "Flat",
"preset": {
"Flat": [
62,
62,
62,
62,
62,
62,
62,
62,
62,
62
],
"Muziek01": [
62,
62,
64,
66,
68,
66,
64,
62,
62,
62
],
"Muziek02": [
66,
64,
62,
62,
62,
61,
63,
64,
65,
66
]
},
"current": "66 64 62 62 62 62 63 65 67 72"
}

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet

AltStyle によって変換されたページ (->オリジナル) /