-
Notifications
You must be signed in to change notification settings - Fork 207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PI 4 cannot boot from USB anymore #258
Comments
Got the same problem today after using rpi-update |
Suggest it maybe the latest commit i.e. sudo rpi-update 48570ba that could be breaking USB/microSD card boot in my testing. To achieve a kernel update to 5.10.20 suggest using - sudo rpi-update e150906 Reference: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=288234&start=550#p1831846 |
Yes. That worked. Seems to be the latest commit. |
I've attached a possible firmware fix. it works for me but it would be useful to get feedback before updating rpi-update. |
Anyone feeling uncertain about applying the trial firmware can confirm that this is indeed a firmware issue using |
Currently testing..... working but not efficiently - this fix allows the reboot after rpi-update to be successful BUT adds in approximately a 90sec delay on any subsequent boot. Pre-fix condition running 5.10.20-v8+ using commit e150906 - standard boot time 6.8sec approx |
@timg236 give me a shout if you have any additional testing that I coluld assist with. |
The output of "vcdbg log msg" and "vcgencmd version" after a slow boot would be useful |
Is "vcdbg" installed by default or in a specific directory - command not found. pi@phoenix-pi-x64:~ $ vcgencmd version |
The binary should be in /opt/vc/bin/, with a symbolic link installed to /usr/bin/vcdbg. |
For whatever reason, vcdbg exists in /opt/vc/bin/ but there is no link installed in /usr/bin/vcdbg, even copying vcdbg to /usr/bin/ fails to run. The vcgencmd file in /opt/vc/bin/ is also different in size and date to the version in /usr/bin/ - it isn't a link it's an actual file. Any other suggestions on how to run vcdbg? |
Which OS are you running? |
PiOS 64bit, that command gives the same output - no such file or directory. |
It's failing because of missing libraries. Try this static build: https://drive.google.com/file/d/1HS9E5vnxxNqrizB4mEYrnFoQQ1axSRKm/view?usp=sharing |
The command output should be here: |
Thanks. It looks as though the USB issue is fixed but something weird is happening with HDMI EDID read with the new HDMI I2C driver, unless your display has a large EDID and is also reporting errors. The short-term workaround is to use hdmi_ignore_edid and hdmi_hotplug (or revert the firmware) @6by9 Does the number of EDID blocks plausible to you? |
I2C has to do 32byte reads, and it looks like that monitor isn't incrementing the EDID read address for the subsequent reads - the pattern repeats every 32 bytes when trying to do a 128byte read. |
I can report after adding the following to the /boot/config.txt configuration, boot speed is back to normal at 7sec approx.
Thanks for the short-term workaround solution and firmware fix files. |
@CaptainMidnight Could you dump your EDID out and attach it please? The number of extension blocks is in byte 126 of the base EDID. I suspect it's the misreading of the base EDID that means we get an invalid number of extensions, so it keeps on going and trying to read the wrong number of blocks (probably the value that is in byte 30 due to the repitition). |
Using: -
I get the following: -
For info my setup actually consists of a dual port HDMI KVM switch unit, although any potential existing hidden EDID issues have not materialised previously under any previous firmware builds. I can also upload the actual edid.bin file and/or provide the output with a direct connection to the Samsung FHD TV if rquired. Update: edid.bin link https://www.dropbox.com/s/2ubhjep15r8pnqo/edid.bin?dl=0 (KVM in circuit) |
My setup also is configured to force only FHD (1920x1024) mode, although the HDMI KVM is always attached, the TV/monitor is generally powered off for remote headless operation. Now using: -
Provides the following vcdbg output with zero additional boot time increase: -
|
Thanks, that just allows me to confirm that my suspicions were right. The hex dump of the start of that EDID is
Your log reported querying up to block 154, which is hex 0x9a. The 0x99 as the penultimate byte there is the number of blocks after this one, so 154 blocks total. Now to work out why the EDID reading is failing when we're now doing almost exactly the same as the kernel is doing. |
Just to clarify, the original vcdbg output provided (output.txt) was for the original /boot/config.txt configuration but with the latest rpi-update and suggested firmware fix installed. The latest vcdbg output in my last comment and the edib.bin data is from the same setup with the only change being hdmi_ignore_edid=0xa5000080 added to /boot/config.txt (I already had hdmi_force_hotpug=1 in my config). |
Perhaps you can continue the EDID discussion at raspberrypi/firmware#1548 so we can close the original USB boot issue? |
No issues from me as the original boot failure, after applying the interim firmware fix has transformed into issues with EDID. |
Thanks - consider this issue closed (I don't actually have permission on this repo). |
@popcornmix I can't close this either |
See: Hexxeh/rpi-firmware#258 firmware: hdmi_2711_i2c: Correct handling of start/stop codes for long read See: #1548
See: #258 firmware: hdmi_2711_i2c: Correct handling of start/stop codes for long read See: raspberrypi/firmware#1548
rpi-update firmware now contains the fix |
Question. If something like this happens again (no boot from USB), there is a way, mounting the USB in another Linux, to "go back" to the previous firmware? |
You can run |
I always keep a copy of my USB boot in an SD card, using rpi-clone, so if I understood correctly, I can unplug the USB, boot from the SD, then plug the USB, mount /boot and just copy everything in the SD /boot to the USB /boot, and reboot, right? (of course, I will need to edit cmdline.txt to use sda or just the kernel*.* files, or something else will do ? Tks! |
That should work. Copying all files should be fine, but it's the start*.elf, fixup*.dat files that contain the regression (and fix with update). |
- firmware: isp: Fix handling of different YUV colour spaces - firmware: poe_hat: Actually close the I2C handle - firmware: platform: Define DVFS modes and change default to be fixed AVS voltage - firmware: arm_loader: Auto-select 64-bit for kernel8.img See: #1193 - firmware: hdmi: Throttle auto-i2c register writes to avoid PWM audio underrun - firmware: platform: Define DVFS modes and change default to be fixed AVS voltage - firmware: arm_loader: Auto-select 64-bit for kernel8.img See: #1193 - firmware: hdmi: Throttle auto-i2c register writes to avoid PWM audio underrun - firmware: video_decode lockup handling - firmware: isp: Initialise extras to avoid vpitch being random - firmware: usb: Fix dropouts with USB ethernet gadget See: raspberrypi/linux#4084 - firmware: imx477: Allow long exposures for the binned modes. See: https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=297521 - firmware: arm_dispmanx: Use ALPHA_MIX flag See: https://www.raspberrypi.org/forums/viewtopic.php?t=300769 - firmware: power: Refactor the interface to the PMICs - firmware: platform: vl805: Get BAR2 address from PCIe BAR2 registers - firmware: arm_loader: Return all borrowed DMA channels See: #1541 - firmware: hdmi_2711: Rework I2C driver to NOT use the AUTO-I2C block - firmware: gencmd: Allow groups of clocks/plls to be read together - firmware: power: Fix DA9090 under-voltage detection - firmware: NVME boot support - firmware: brfs: Fix USB bulk-read in start.elf See: Hexxeh/rpi-firmware#258 - firmware: hdmi_2711_i2c: Correct handling of start/stop codes for long read See: #1548 - firmware: video_decode: For VC1/WMV with no signalled header bytes, use start of 1st buffer See: raspberrypi/linux#4113 - firmware: vl805: Remove redundant log statement and fix warning - firmware: power: Fix DA9090 ADC1 register definition - firmware: arm_loader: Only report clocks arm has set, not siblings - firmware: arm_loader: Don't report clocks set as turbo side effect of arm clock - firmware: arm_loader: 2711: gpu clocks are not dependant - firmware: platform: Need to clear cached versions of get_max_clock_internal vars - firmware: Move core to PLLA and support accurate clk108 See: xbmc/xbmc#19263 - firmware: board_info: Separate memory size from OTP field encoding - firmware: power: Swap DA9090 ADC assignments to match XR77004 - firmware: board-info: Fix memsize on 3B+ - firmware: vcfw/power: Add a new latch for power_pad_control See: #1552 - firmware: arm_loader: kernel_old=1 should force kernel_address=0 See: #1561 - firmware: scalerlib: Fix offset applied to x coordinate of YUV10COL image See: https://forum.kodi.tv/showthread.php?tid=361164&pid=3024654#pid3024654 - firmware: isp: Ensure the VRF is locked when setting up video colour denoise See: raspberrypi/rpicam-apps#19 - firmware: isp: Remove custom EV mappings from camera tunings - firmware: Add support for board-type=0xXX conditional filters in bootloader, bootcode and firmware - firmware: Two UART1 patches See: #1566 - firmware: Pi400: Reduce MII clock freq when probing ethernet PHY - firmware: platform: Remove build-time constant for MICROVOLTS_PER_PIP - firmware: dt-blob.dts: Correct HDMI HPD and EMMC_ENABLE for CM4 See: https://www.raspberrypi.org/forums/viewtopic.php?f=29&p=1858516 - firmware: vcfw/hdmi: CUSTOM modes used for FKMS didn't set RGB quant range correctly See: #1580 - firmware: PoE+ HAT support See: raspberrypi/linux#4367 - firmware: arm_loader: Use Pi4 bootloader MAC_ADDRESS if set - firmware: platform: Apply ARM thermal throttling rules on BCM2711 - firmware: bcm_host: Recognise all Pi 4 variants, add BCM2711 See: raspberrypi/userland#695 - firmware: video_decode: Use the ISP instead of vc_image_convert - firmware: hdmi-2711: Wait for HDMI hardware scheduler to activate in HDMI mode - arm_loader: Add message to release firmware framebuffer - firmware: arm_loader: Add rng-seed DT property See: #1595 - firmware: isp: Set the YUV420/YVU420 format stride to 64 byte - firmware: Revert: video_decode: Use the ISP instead of vc_image_convert - firmware: cec: Avoid sending messages with kms See: raspberrypi/linux#4460 - firmware: hdmi_cec: Remove TX/RX SW_INIT on power_on See: Hexxeh/rpi-firmware#267 See: https://www.raspberrypi.org/forums/viewtopic.php?p=1895082#p1895082 - firmware: arm_dt: Limit CMA to 256MB if total_mem < 2GB or gpu_mem > 256MB See: #1603 - firmware: video_decode: Use the ISP instead of vc_image_convert - firmware: video_decode: Correct support for YVU formats using ISP - firmware: firmware: Disable VLL loading from file system See: #1605 - firmware: arm_loader: Make most arm clock requests required See: #1598 - firmware: arm_loader: Consider required flags from GET_CLOCK_RATE See: #1598 - firmware: arm_dt: Load overlays for detected cameras - firmware: Make more use of the user-warnings DT property - firmware: hdmi_2711: Use HDMI block REPEAT_PIXEL instead of PV See: https://forum.libreelec.tv/thread/24415-le-10-beta-for-i4-force-hdmi-resolution - firmware: DSI display autodetection for kms - firmware: arm_loader: Allow hvs interrupt during SET_NOTIFY_DISPLAY_DONE - firmware: arm_display: Allow null buffer in successful call See: raspberrypi/linux#4540 - firmware: video_decode: Ensure all buffers are flushed before port disable completes - firmware: filesystem: sdcard: Fix Hybrid GPT partitions See: #1465 - firmware: tvservice: Add check to warn when running with kms - firmware: arm_loader: Allow non-optional reads of current clock See: #1619 - firmware: dispmanx: Demote null eptr from vcos_verify to no warning See: raspberrypi/linux#4592 - firmware: filesystem: sdcard: Probe FAT type in GPT ESD partitions - firmware: clock-2711: Limit PLLB VCO frequency to the high range - firmware: arm_dt: Export the boot-mode, partition and usb state via device-tree See: #1621 - firmware: video_decode: i/p port enable/disable without o/p active could stall See: RPi-Distro/vlc#48 See: Hexxeh/rpi-firmware#272 See: #1637 - firmware: userland: Reduce debug_sym error messages See: https://forums.raspberrypi.com/viewtopic.php?f=98&t=322238 - firmware: arm_dt: Increase maximum line length to 98 See: raspberrypi/linux#4638 - firmware: arm_loader: Allow VEC clock to be controlled by arm - firmware: platform: Remove licence on VP6, VP8, Theora, and FLAC See: raspberrypi/linux#4661 - firmware: ISP: Fix magenta colour in right hand image of stereo pair See: https://forums.raspberrypi.com/viewtopic.php?t=321089 - firmware: platform: Fix incorrect turbo voltage scaling on Pi0 See: raspberrypi/documentation#2255 - firmware: platform: Declare CM4's SIO_1V8_SEL and SD_PWR_ON See: raspberrypi/Raspberry-Pi-OS-64bit#188 - firmware: hello_fft: Update outdated link to V3D spec - firmware: hello_fft: Remove unused function declaration See: #1645 See: raspberrypi/userland#710 - firmware: dtoverlay: Rebase aliases in overlays like labels - firmware: isp: Set core/vpu min clock to 320Mhz during ISP operation - firmware: arm_loader: Enable watchdog early if wanted See: #1651 - firmware: board_info: Add upstream dtb names for cm1 & 3 - firmware: board_info: Add upstream dtb name for cm4 See: #1660 - firmware: platform: Allow users to disable camera boot HMAC check See: #1657 - firmware: clock: 2711: Fix potential API issue in 2711 VCO setup - firmware: arm_loader: Enable USB MSD boot mode on Zero 2 W - firmware: isp: Fix Rec.709 colour space problems
After update from 5.4 to 5.10.20-v7l+ the PI 4 stucks on boot from USB with the color splash screen. Green LED flashes 7 times, so it says kernel.img not found. But the files are still within the boot partition. After downgrade to 5.4.x it works again!
Booting from SD works all the time with 5.10.20. Only USB Boot is not working anymore.
The text was updated successfully, but these errors were encountered: