Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Instruction Guide 128x64 OLED with Song Status and Spectrum Display on Raspberry Pi
Hi Lucius

You could try connecting your display like the following post

http://moodeaudio.org/forum/showthread.p...35#pid9235

(and use 'mpd_oled -r 25 -D 24 ...')

Adrian.
Reply
Hi adrii,

Thank you for your support and I will wait for your new mpd_oled version. If that doesn't help, I'll try a different display connection.
Reply
Hi Lucius

I have set up a repository with the development version of mpd_oled

   https://github.com/antiprism/mpd_oled_dev

I recommend installing from the binary package

   https://github.com/antiprism/mpd_oled_de...de7_deb.md

Your mpd_oled service installation command should be

Code:
sudo mpd_oled_service_edit -o SSD1306,128X64,SPI,dc=27,reset=24 -b 21 -g 1 -f 15 -c alsa,plughw:Loopback,1

I found that on the Pi Zero the kernal SPI device used some CPU and there was more CPU used by the system and this did not leave enough CPU for a responsive spectrum. However, if you are on a Pi 3 or 4 this should not be an issue.

If you have any problems running this version, or would like to provide any feedback regarding the installation instructions, then please open an issue at the mpd_oled_dev repository

   https://github.com/antiprism/mpd_oled_dev/issues

Adrian.
Reply
Hi adrii,

Thank you for your patience, but I still have the same issue. After fresh copy of Moode 7.3, installed mpd_oled, the display works properly. But after Moode restart stop working with same output:


Code:
● mpd_oled.service - MPD OLED Display
  Loaded: loaded (/etc/systemd/system/mpd_oled.service; enabled; vendor preset: enabled)
  Active: failed (Result: signal) since Wed 2021-07-14 10:36:38 CEST; 2s ago
 Process: 2543 ExecStartPre=/usr/bin/mpd_oled_launch_test (code=exited, status=0/SUCCESS)
 Process: 2553 ExecStart=/usr/bin/mpd_oled -o SSD1306,128X64,SPI,dc=27,reset=24,rotation=2 -b 21 -g 1
Main PID: 2553 (code=killed, signal=SEGV)

Jul 14 10:36:36 moode systemd[1]: Starting MPD OLED Display...
Jul 14 10:36:38 moode systemd[1]: Started MPD OLED Display.
Jul 14 10:36:38 moode systemd[1]: mpd_oled.service: Main process exited, code=killed, status=11/SEGV
Jul 14 10:36:38 moode systemd[1]: mpd_oled.service: Failed with result 'signal'.
Reply
Hi Lucius

That suggests the problem does not relate to the mpd_oled code for SPI and the OLED driver.

I recommend a quick check again that you have 'dtparam=spi=on' in /boot/config.txt, as this version needs it. Perhaps you could post the file here in case it includes anything that suggests a conflict. Perhaps you could also post the output of the following command to see what services might be in conflict

Code:
systemctl status | cat

I don't think it should make a difference, as cava isn't run until audio is playing, but you could try running mpd_oled without the -c option, in order to discount that it is an ALSA issue (this will stop the spectrum from displaying)

Code:
sudo mpd_oled_service_edit -o -o SSD1306,128X64,SPI,dc=27,reset=24,rotation=2 -b 21 -g 1 -f 15

If you get the same result then  you can add the -c option back in, and next try connecting your display like

   http://moodeaudio.org/forum/showthread.p...35#pid9235

Which is the same (only differing in the choice of power and ground pins) as

   https://github.com/antiprism/mpd_oled/bl...ng_spi.png

Adrian.
Reply
Hi adrii,

/boot/config.txt :


Code:
disable_splash=1
disable_overscan=1
hdmi_drive=2
hdmi_blanking=1
hdmi_force_edid_audio=1
hdmi_force_hotplug=1
hdmi_group=0
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=audio=off
dtoverlay=i-sabre-q2m
#dtoverlay=disable-wifi
#dtoverlay=disable-bt
dtparam=spi=on

systemctl status | cat :

Code:
● moode
    State: degraded
     Jobs: 0 queued
   Failed: 1 units
    Since: Thu 1970-01-01 01:00:03 CET; 51 years 6 months ago
   CGroup: /
           ├─user.slice
           │ └─user-1000.slice
           │   ├─user@1000.service
           │   │ └─init.scope
           │   │   ├─1112 /lib/systemd/systemd --user
           │   │   └─1113 (sd-pam)
           │   └─session-1.scope
           │     ├─1099 sshd: pi [priv]
           │     ├─1155 sshd: pi@pts/0
           │     ├─1156 -bash
           │     ├─1979 systemctl status
           │     └─1980 cat
           ├─init.scope
           │ └─1 /sbin/init
           └─system.slice
             ├─alsa-state.service
             │ └─408 /usr/sbin/alsactl -E HOME=/run/alsa -s -n 19 -c rdaemon
             ├─udisks.service
             │ ├─556 /usr/lib/udisks/udisks-daemon --no-debug
             │ └─558 udisks-daemon: not polling any devices
             ├─systemd-timesyncd.service
             │ └─367 /lib/systemd/systemd-timesyncd
             ├─mpd.service
             │ └─895 /usr/local/bin/mpd --no-daemon /etc/mpd.conf
             ├─nmbd.service
             │ └─540 /usr/sbin/nmbd --foreground --no-process-group
             ├─nginx.service
             │ ├─566 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             │ ├─567 nginx: worker process
             │ ├─568 nginx: worker process
             │ ├─569 nginx: worker process
             │ └─570 nginx: worker process
             ├─dbus.service
             │ └─415 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
             ├─winbind.service
             │ ├─576 /usr/sbin/winbindd --foreground --no-process-group
             │ ├─615 winbindd: domain child [MOODE]
             │ ├─667 winbindd: idmap child
             │ └─675 winbindd: domain child [BUILTIN]
             ├─smbd.service
             │ ├─620 /usr/sbin/smbd --foreground --no-process-group
             │ ├─662 /usr/sbin/smbd --foreground --no-process-group
             │ └─663 /usr/sbin/smbd --foreground --no-process-group
             ├─ssh.service
             │ └─547 /usr/sbin/sshd -D
             ├─php7.3-fpm.service
             │ ├─ 539 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
             │ ├─ 571 php-fpm: pool www
             │ ├─ 572 php-fpm: pool www
             │ ├─1088 php-fpm: pool www
             │ ├─1275 php-fpm: pool www
             │ ├─1302 php-fpm: pool www
             │ ├─1305 php-fpm: pool www
             │ └─1310 php-fpm: pool www
             ├─avahi-daemon.service
             │ ├─418 avahi-daemon: running [moode.local]
             │ └─429 avahi-daemon: chroot helper
             ├─system-getty.slice
             │ └─getty@tty1.service
             │   └─582 /sbin/agetty -o -p -- \u --noclear tty1 linux
             ├─wpa_supplicant.service
             │ └─417 /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
             ├─rpcbind.service
             │ └─363 /sbin/rpcbind -f -w
             ├─systemd-logind.service
             │ └─407 /lib/systemd/systemd-logind
             ├─rc-local.service
             │ ├─ 553 /usr/bin/udisks-glue --config=/etc/udisks-glue.conf
             │ ├─ 577 /usr/bin/php /var/www/command/worker.php
             │ ├─1012 /bin/bash /var/www/command/watchdog.sh
             │ └─1976 sleep 6
             ├─polkit.service
             │ └─561 /usr/lib/policykit-1/polkitd --no-debug
             ├─systemd-udevd.service
             │ └─147 /lib/systemd/systemd-udevd
             ├─rsyslog.service
             │ └─421 /usr/sbin/rsyslogd -n -iNONE
             ├─systemd-journald.service
             │ └─118 /lib/systemd/systemd-journald
             ├─rng-tools.service
             │ └─425 /usr/sbin/rngd -r /dev/hwrng
             ├─dhcpcd.service
             │ ├─456 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211,wext
             │ └─536 /sbin/dhcpcd -q -w
             └─haveged.service
               └─364 /usr/sbin/haveged --Foreground --verbose=1 -w 1024

I got the same result without the -c option.
Reply
Hi Lucius

I couldn't spot anything that looked like it might be in conflict in config.txt, or any services that might be involved. In which case, you could try changing the DC and RESET connections.

Adrian.
Reply
(07-14-2021, 11:05 AM)adrii Wrote: Hi Lucius

I couldn't spot anything that looked like it might be in conflict in config.txt, or any services that might be involved. In which case, you could try changing the DC and RESET connections.

Adrian.

Wish I were in a position to follow along at home on a live player.

When I see SEGV and ILL faults I immediately think of the possibility that some routine has clobbered a return address on the stack. The fault is triggered when the return address is eventually popped off the stack and used to (try to) fetch the next instruction. Something like that.

Good hunting.

Regards,
Kent
Reply
Hi, 

hope you can help me out, I have a display with the following connection see picture
   


GND
VCC
SCL
SDA
RES
DC
CS

instead of the wiring of the display you mention in your description
How can I use your program to make this work
what must I change?

Thanks
Reply
Hi Jempie

It appears that you have a display that can be configured for both SPI and I2C. SCL is the clock pin, and SDA is the data pin, and these are the usual I2C names, but if your display is configured to use SPI they will correspond to CLK and MOSI

   https://forum.arduino.cc/t/is-this-i2c-or-spi/506634

Adrian.
Reply


Forum Jump: