New build black screen

OK, will not use raspi-config and have not performed any previous runs on this install which is another clean install from yesterday.

I’ve attached the wav file, details are as follows:

HW: Raspberry Pi 4B (Model B) Rev 1.2

O/S:Linux zynthian 5.10.60-v7l+ #1449 SMP

Sound Device: card 2: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]

Webconf → Hardware → Audio →

Soundcard:
RbPi Headphones

Driver Config:
dtparam=audio=on
audio_pwm_mode=2

Jackd Options:
-P 70 -t 2000 -s -d alsa -d hw:Headphones -r 44100 -p 512 -n 3 -X raw

Audio Notes Options:
-O complex -t 0.5 -s -88 -p yinfft -l 0.5

Mixer:
Headphone Left,Headphone Right

All boxes unchecked.

Sound:
DX7 Wurlitzer/RA wurly notes C2 to B2 on (Keystation Mini 32 default octave settings)

Recorded:
Output from Pi 3.5mm into Focusrite solo into Ableton, Aif converted into wav with slight gain increase.

Notes:
Have tested using multiple headphones which are confirmed to be working both ears.
Sound test in Zythian admin panel produces similar sound to sample file.

If anyone can confirm the best non-breaking way to test the soundcard outside of Zynthian , my connection is either via the UI now using a K400 or remote via ssh.

File attached:

Re: testing outside of Zynthian, I’ll work through this.

OK, some good news, my card is working fine outside of Zynthian. Confirmed with following test.

#Listed devices.
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
Subdevices: 4/4
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
card 2: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 3/4
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3

Then I performed the following tests:

speaker-test -c2 -D plughw:2,0
aplay --device=hw:2,0 piano2.wav

NOTE: Worth noting for anyone new to this like myself, both tests specified card 2 (plughw:2,0|hw:2,0) as per my config reported in aplay -l.

I assume now I just need to validate this config/mapping is correct in Zynthian.

Will continue to investigate.

Ta.

dtoverlay=tft35a:rotate=90

is correct way to set orientation.

Below the decompiled device tree file:

/dts-v1/;

/ {
        compatible = "brcm,bcm2835\0brcm,bcm2708\0brcm,bcm2709";

        fragment@0 {
                target = < 0xdeadbeef >;

                __overlay__ {
                        status = "okay";

                        spidev@0 {
                                status = "disabled";
                        };

                        spidev@1 {
                                status = "disabled";
                        };
                };
        };

        fragment@1 {
                target = < 0xdeadbeef >;

                __overlay__ {

                        tft35a_pins {
                                brcm,pins = < 0x11 0x19 0x18 >;
                                brcm,function = < 0x00 0x00 0x00 >;
                                linux,phandle = < 0x01 >;
                                phandle = < 0x01 >;
                        };
                };
        };

        fragment@2 {
                target = < 0xdeadbeef >;

                __overlay__ {
                        #address-cells = < 0x01 >;
                        #size-cells = < 0x00 >;

                        tft35a@0 {
                                compatible = "ilitek,ili9486";
                                reg = < 0x00 >;
                                pinctrl-names = "default";
                                pinctrl-0 = < 0x01 >;
                                spi-max-frequency = < 0xf42400 >;
                                txbuflen = < 0x8000 >;
                                rotate = < 0x5a >;
                                bgr = < 0x00 >;
                                fps = < 0x1e >;
                                buswidth = < 0x08 >;
                                regwidth = < 0x10 >;
                                reset-gpios = < 0xdeadbeef 0x19 0x01 >;
                                dc-gpios = < 0xdeadbeef 0x18 0x00 >;
                                debug = < 0x00 >;
                                init = < 0x10000f1 0x36 0x04 0x00 0x3c 0x0f 0x8f 0x10000f2 0x18 0xa3 0x12 0x02 0xb2 0x12 0xff 0x10 0x00 0x10000f8 0x21 0x04 0x10000f9 0x00 0x08 0x1000036 0x08 0x10000b4 0x00 0x10000c1 0x41 0x10000c5 0x00 0x91 0x80 0x00 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00 0x100003a 0x55 0x1000011 0x1000036 0x28 0x20000ff 0x1000029 >;
                                linux,phandle = < 0x02 >;
                                phandle = < 0x02 >;
                        };

                        tft35a-ts@1 {
                                compatible = "ti,ads7846";
                                reg = < 0x01 >;
                                spi-max-frequency = < 0x1e8480 >;
                                interrupts = < 0x11 0x02 >;
                                interrupt-parent = < 0xdeadbeef >;
                                pendown-gpio = < 0xdeadbeef 0x11 0x00 >;
                                ti,x-plate-ohms = [ 00 3c ];
                                ti,pressure-max = [ 00 ff ];
                                linux,phandle = < 0x03 >;
                                phandle = < 0x03 >;
                        };
                };
        };

        __overrides__ {
                speed = < 0x02 0x7370692d 0x6d61782d 0x66726571 0x75656e63 0x793a3000 >;
                txbuflen = [ 00 00 00 02 74 78 62 75 66 6c 65 6e 3a 30 00 ];
                rotate = [ 00 00 00 02 72 6f 74 61 74 65 3a 30 00 ];
                fps = [ 00 00 00 02 66 70 73 3a 30 00 ];
                bgr = [ 00 00 00 02 62 67 72 3a 30 00 ];
                debug = < 0x02 0x64656275 0x673a3000 >;
                swapxy = < 0x03 0x74692c73 0x7761702d 0x78793f00 >;
        };

        __symbols__ {
                tft35a_pins = "/fragment@1/__overlay__/tft35a_pins";
                tft35a = "/fragment@2/__overlay__/tft35a@0";
                tft35a_ts = "/fragment@2/__overlay__/tft35a-ts@1";
        };

        __fixups__ {
                spi0 = "/fragment@0:target:0\0/fragment@2:target:0";
                gpio = "/fragment@1:target:0\0/fragment@2/__overlay__/tft35a@0:reset-gpios:0\0/fragment@2/__overlay__/tft35a@0:dc-gpios:0\0/fragment@2/__overlay__/tft35a-ts@1:interrupt-parent:0\0/fragment@2/__overlay__/tft35a-ts@1:pendown-gpio:0";
        };

        __local_fixups__ {
                fixup = "/fragment@2/__overlay__/tft35a@0:pinctrl-0:0\0/__overrides__:speed:0\0/__overrides__:txbuflen:0\0/__overrides__:rotate:0\0/__overrides__:fps:0\0/__overrides__:bgr:0\0/__overrides__:debug:0\0/__overrides__:swapxy:0";
        };
};

@le51 Oh Jeeze, just as I thought it couldn’t get any deeper =)

So, maybe enabling debug and swapxy is the direction of investigation.

Sorry again for muddying waters and including sound issues in this post also, if anyone thinks I should create a new thread for the sound I’ll gladly do so.

My main focus atm is now on sound as I’ve not made any music now for over a week and the whole idea of going with Zynthian was to get me away from computers! I do appreciate the irony though and appreciate the learning experience.

Thanks for your support.

Cheers!


Here I can select correctly the right item in the list


While here this will open the new synth layer

I’m on testing

1 Like

@le51 That is fantastic!

@riban / all, I will move my sound related challenges to a clean / new post.

I had to modify 99-calibration.conf and set option SwapAxes to 0 to get the pointer working in the right directions

Do document carefully. Cos it’s very easy to get a working rig and then simply forget all the details of how this was achieved. Sometime in the past my working touchscreen zynth just stopped working on an update and got gently place ( yeah right…) at the back of the projects to look at box.

It is always worth perceviering on this stuff cos it does work and you always learn something from the process.

I’ve stripped the device down so there is no screen protector on the screen and removed the case, and it is still demonstrating an inability to move the cursor from the top line. Pressing the down arrow on vnc moves it down one selected item but it then moves back up to the top element again. Pressing the mouse (vnc & screen ) still selects the top item. Use of the wheel on either mouse (vnc & screen) clears down the red selected item but does move the screen down so you can see admin, moving the touch screen (by a ballet of non intuitative left and right, up and down manipulations ) does make the cursor appear and it can be navigated to the admin item but pressing still selects the new engine ( the top item in the list) .

I have seen this behaviour before, but it cleared on an update. Ihave done several updates ( selecting update_zynthian.sh from /zynthian/zynthian-sys/scripts) but it does seem quite resolute.

Sorry for not producing a more positive answer…
I’m running testing.

a seperate observation firefox seems considerably more compliant than chromium. Chromium seems a bit flakey particluarly on anything that involves asgi type comms.

I also seem to get more consistant behaviour if I leave the zynth off for five or ten minutes between reboots

@le51 Are you able to post your 99-calibration.conf including the path, I’m keen to ensure I’m replicating exactly.

I had previous tried the SwapAxes and some other options, none of which worked, is the decompiled device tree file a new / modified file I need to install?

See my config below.

cat /etc/X11/xorg.conf.d/99-calibration.conf
Section “InputClass” # Created 2022-03-26 18:33:46.943034
Identifier “calibration”
MatchProduct “ADS7846 Touchscreen”
Option “TransformationMatrix” “1.154639 0.000000 -0.090550 0.000000 -1.114428 1.069403 0.000000 0.000000 1.000000”
Option “SwapAxes” “1”

@wyleu - completely agree re: documenting all steps. I’ve also seen some differences of behaviour after leaving Pi off for a while and wondered if this was temperature related.

Thanks all.

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3936 227 268 3880"
        Option  "SwapAxes"      "0"
EndSection
1 Like

Yeah, I’m burning a fresh new stable image and will do the setup again.

maybe because it lets you the time to drink a beer. I will do the test too :wink:

I’ve moved audio problems here.

Tried it with another identical screen. Same effect.
The orientation of the touchscreen seems to be the component that doesn’t respond to configuration.

Is there a quick and dirty way (command line) of running the touchscreen config?

Lot’s of useful info in this post here

I’m currently going through different configs 1 by 1 and writing down results. The post includes the ‘quick and dirty’ using xinput set-prop.

We have discovered before that the location of the 99-calibration.conf file isn’t consistent ( for no apparent reason)

But it does not work. Whatever you pass to this driver it will always implement rotate=90. It seems to be hardcoded.

I have found the issue with Zynthian’s touchscreen calibration and testing a fix. This will mean you don’t need to faff around with axis swapping and manual configuration. You will just need to navigate to the admin/touchscreen calibrate menu, e.g. using VNC then calibrate. It is working very well with this screen (rotated through 90 degrees). I just need to check the other orientations.

Not managed to find a way to navigate to admin screen on two different screens using either touch, mouse or vnc…

Could you post your git hashes?

Thanks @riban

I tried the dtoverlay=tft35a:rotate=90 + calibration in UI and reboot, but it didn’t work for me. I tried again just now with same results.

Cheers.

@wyleu - regarding the quick and dirty, I will include this in my write up, for now, see the below.

via remote ssh run the following.

#export display to console.
export DISPLAY=:0.0

#list devices
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ADS7846 Touchscreen id=6 [slave pointer (2)]
⎜ ↳ Logitech K400 Plus id=7 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Logitech K400 Plus id=8 [slave keyboard (3)]

#list properties for device
xinput list-props 6
Device ‘ADS7846 Touchscreen’:
Device Enabled (113): 1
Coordinate Transformation Matrix (114): -1.131313, 0.000000, 1.055051, 0.000000, 1.108911, -0.061386, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix (245): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (246): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Send Events Modes Available (247): 1, 0
libinput Send Events Mode Enabled (248): 0, 0
libinput Send Events Mode Enabled Default (249): 0, 0
Device Node (250): “/dev/input/event4”
Device Product ID (251): 0, 0

#to set via command line
xinput set-prop 6 “<property”

I have a few ideas based on the output, I need to make a quick call and eat, will continue looking at this later, thanks again all.