Hi! I’m new here and I hope I’m writhing in the right category and don’t break any rules.
I’ve decided to hack together a zynthian with what I have laying around and faced quite strange problem. I’m using ILI9341 based SPI display, which I made working using this guide, the only thing is each time I change configuration I need to edit /etc/modules as OS seems to overwrite my changes, but I can live with that. The problem I face is whenever I choose non-dummy DAC, the display stops working after reboot, and it’s not because /etc/modules. I have tried 2 i2s DACs (both usually work with dtoverlay=hifiberry-dacon regular rasbian) a and one cheap Chinese generic USB dongle and the result is always the same. Does anybody know what can cause this and how to fix it?
Hi,
this happens because your screen use raspberry pin number 12 (GPIO 18) for the backlight, pin that is used by i2s (the protocol that make your raspberry “speech” to the dac).
if you connect the screen directly on the rasp header with a 2x13 female header, I’m afraid that there will be no solution. Otherwise, if you connect the screen with wires (like on the tutorial you’ve given), you can connect the wire that should go on pin number 12 on a another one that is free, like pin 32 (GPIO 12) and use:
Thanks for the answer. Yeah, I forgot to mention that I was switching display to gpio-12 while I was using gpio-18 for DAC. The display was working until I set the DAC up in the config. I thought that there might be some conflict with these pins, that’s why I tried generic USB card which led to the same result…
Zynthian configuration system overwrites some /etc files, and /etc/modules is certainly modified. Could you check if your custom configuration is still there?
I guess that the problem is somewhere in this spi-bcm2835 or fbtft_device in /etc/modules because I have a display hooked up to gpio-12 with dummy-dac and it works, but as soon as I switch dac to generic usb it stops working and I get the same message in dmesg about pin 18.
Just to make everything clear, I have spi-bcm2835 and fbtft_device in /etc/modules and options fbtft_device name=fb_ili9341 gpios=reset:25,dc:24,led:12 speed=16000000 bgr=1 rotate=90 custom=1 in /etc/modprobe.d/fbtft.conf and even with this config dmesg argues about gpio18.
If there’s no spi-bcm2835 or fbtft_device in /etc/modules I can make display work even with dac with sudo modprobe fbtft_device custom=1 name=fb_ili9341 gpios=reset:25,dc:24,led:12 speed=16000000 bgr=1 but I have no idea how show zynthian UI on it. Maybe I need to try to configure it without adding anything to /etc/modules …
I guess that the problem is somewhere in this spi-bcm2835 or fbtft_device in /etc/modules because I have a display hooked up to gpio-12 with dummy-dac and it works, but as soon as I switch dac to generic usb it stops working and I get the same message in dmesg about pin 18.
That’s totaly crazy !
you can try to boot with the working config for the screen and no usb dac attached. UI should show you an error message. From the command line:
systemctl stop zyntian
Plug the usb dac,
aplay -L will give you the hardware name.
Edit /etc/systemd/system/jack2.service with the right settings
systemctl reload-daemon (or daemon-reload)
systemctl restart jack2
cd /zynthian/zynthian-ui
startx ./zynthian.sh
It’s geting late here. I hope that you will be able to get out from this mess.
After some investigations I realized that following that tutorial was not the right thing to do in the first place. All this modprobe stuff is good to check if the display works, but what I really need is proper dtoverlay, seems like I didn’t use the right one and it was causing all the conflicts. I didn’t find the one that fits my case yet, but I’ve found some mentions that people use modified pitft for this kind of displays. @le51 thanks for all your suggestions, it helped me get some understanding of how zynthian works
This may not work but might be worth a try. You may find the topic useful if you want to progress things. (The overlay I created for this is suboptimal, e.g. rotation doesn’t work but does the job mostly.)
I’ve edited rpi-display-overlay, removed all the stuff related to touch, and changed pins a little and made sure gpio-18 is not in use. Compiled it on the PI using this command
After that I’ve changed to my new overlay in webconfig and it worked. The only thing is for some reason I still had issues with using generic usb dac, display worked this time, but UI didn’t show up. Anyway I just used my i2s dac and it worked perfectly.
Here’s the source code of my dtoverlay in case anybody needs it ili9341-overlay.dts (1.3 KB)
I’m not sure touch HAS to be removed, but this screen does not have touch, so I removed it just in case. At the moment I’m using keyboard with touchpad, but I hoped to make it usable with just encoders and without touch…
Indeed most functionality is designed around the encoders and touch is an after thought with some interface elements being suboptimal. We aspire to improve touch interface but it is not high on the agenda. The main thing that touch gives is the X-Y controller panel but the rest of Zynthian is completely controllable via four encoder switches.