novena-next / docs

MIT License
13 stars 3 forks source link

HDMI broken after buster update #34

Open anon8675309 opened 1 year ago

anon8675309 commented 1 year ago

After updating to buster, the HDMI output fails to work.

From dmesg:

[   14.232352] vgaarb: this pci device is not a vga device
[   14.852711] vgaarb: this pci device is not a vga device
[   15.456255] vgaarb: this pci device is not a vga device
[   15.953441] vgaarb: this pci device is not a vga device
[   16.662451] vgaarb: this pci device is not a vga device

Steps to reproduce

  1. put the original novena image (novena-mmc-disk-r1.img ; sha256=26d368cb4b3aa43e411703f8c659d3e229deacfe75af38c1f82489dd9af80dbb) onto an SD card (using dd)
  2. resize the last partition (delete and recreate it with defaults using fdisk /dev/sdb3)
  3. fsck /dev/sdb3
  4. resize2fs /dev/sdb3
  5. Put the SD card into the novana and boot it up, going through the initial setup procedure
  6. Pop a shell, checkout https://github.com/novena-next/docs and follow the upgrade instructions
  7. After "Run upgrade_3_buster.sh then reboot", observe that the HDMI output will no longer works. The computer does boot properly otherwise (SSH is started, etc.)

Solution

None yet. The issue is at least partially related to the kernel, but the details are not entirely clear.

Running ./upgrade_5_BETA_KERNEL.sh and rebooting does not result in a functioning system (see this comment) on #20 for details).

Previously, I was able to compile my own 5.3 kernel using these instructions which resolved the issues with HDMI working, but I was unable to resolve that. Testing is ongoing and I'll post back here if I figure out how to resolve this.

anon8675309 commented 1 year ago

I re-flashed the original novena image onto an SD card and ran through the scripts again and found that it was not the upgrade to buster that caused this issue, but rather something in the upgrade_4_apt.sh script.

I'm starting over again and the next time through this process I will be making an image of my SD card after the buster upgrade to speed up the testing.

Jookia commented 1 year ago

I peeked at the upgrade_4_apt.sh script and it looks like it's the script that switches to my packages- so it must be something I've broken. Could you explain where in the process HDMI breaks? Does it get to the Linux TTY? Xorg?

It's hard to tell without full dmesg what exactly is happening here. Is etnaviv even attempted to be loaded? If not then this might be a red herring.

My crazy guess based on no information at all is that someone noticed VGA was broken in Debian Buster and decided to explicitly probe for this module as a fix and it's causing that error.

anon8675309 commented 1 year ago

The HDMI output stops as soon as I reboot after the upgrade_4_apt.sh script. No boot messages, no console, nothing. I can still SSH in since I know the IP address and it gets the same one on reboot.

I connected to the serial interface and can see the boot messages. Here's the output from that:

I�
U-Boot SPL 2014.10-rc3-00039-gc5efead (Oct 17 2014 - 19:41:27)
Running post-config memory test... Pass
Internal SD card
reading u-boot.img
reading u-boot.img

U-Boot 2014.10-rc3-00039-gc5efead (Oct 17 2014 - 19:41:27)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: Novena 4x
I2C:   ready
DRAM:  3.8 GiB
PMIC:  PFUZE100 ID=0x10
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Using default environment

auto-detected panel HDMI
Display: HDMI (1024x768)
In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0 
reading uEnv.txt
** Unable to read file uEnv.txt **
To override boot, create a file on the internal MMC called uEnv.txt
To hook early boot process, add a variable called earlyhook
gpio: pin 110 (gpio 110) value is 1
Hold recovery button to boot to recovery, or to enter U-Boot shell.
Setting bus to 2
HDMI monitor detected
reading zImage
3598728 bytes read in 178 ms (19.3 MiB/s)
reading novena.dtb
39835 bytes read in 19 ms (2 MiB/s)
To hook late boot process, add a variable called finalhook
Kernel image @ 0x12000000 [ 0x000000 - 0x36e988 ]
## Flattened Device Tree blob at 11ff0000
   Booting using the fdt blob at 0x11ff0000
   Using Device Tree in place at 11ff0000, end 11ffcb9a

Starting kernel ...

dmesg output

and here's the kernel modules that are loaded:

$ lsmod
Module                  Size  Used by
binfmt_misc             6245  1
mma8452                 4513  0
industrialio_triggered_buffer      976  1 mma8452
kfifo_buf               2157  1 industrialio_triggered_buffer
industrialio           36719  3 industrialio_triggered_buffer,mma8452,kfifo_buf
uvcvideo               68206  0
videobuf2_vmalloc       2855  1 uvcvideo
videobuf2_memops        1490  1 videobuf2_vmalloc
snd_usb_audio         103787  0
videobuf2_core         22569  1 uvcvideo
v4l2_common             4898  1 videobuf2_core
snd_hwdep               5789  1 snd_usb_audio
snd_usbmidi_lib        19111  1 snd_usb_audio
snd_rawmidi            17784  1 snd_usbmidi_lib
videodev              121480  3 uvcvideo,v4l2_common,videobuf2_core
media                  11213  2 uvcvideo,videodev
configfs               22060  1
ipv6                  300022  44

Different Kernels

However, when I compiled my own 5.3 kernel using these instructions, the HDMI works again and it's only Xorg that is broken (with "No screens found"). Of course, now my instructions don't seem to work (I get compilation errors), so I must have written something down wrong. I'll have to go back and figure out what I did so I can update the instructions and report back.

Just for kicks, I tried compiling and booting a vanilla 6.0.9 kernel. It booted, and I had HDMI text output. I could log in from pty2. When I attempted to start X, it SEGFAULTed with a null pointer exception. Here's the entire log file in case anyone wants to take a look: Xorg.0.log

Other info

The things I saw happen while running upgrade_4_apt.sh:

Jookia commented 1 year ago

Hmm. Could you blacklist galcore?

Edit: I'm a bit late to doing Novena stuff this week, but tomorrow I'll sit down and try to upgrade to Bullseye and build a new kernel.