I’ll keep this short, kind of TL;DR list of things I’ve learned in the last few days. Feel free to comment additional solutions, I’ll try to keep this message updated.
First, an important note:
/dev/mmcblk0 are the other way around on A311D from how they are on imx8, meaning that on A311D:
/dev/mmcblk0 = SD card
/dev/mmcblk1 = EMMC
For the time being, do not attempt to flash EMMC (/dev/mmcblk1). The only verified way to boot is from the SD card. For now, flashing EMMC on the BPi is untested and may render your BPi SoM unbootable (soft brick).
- Issue: LUKS disk decryption password prompt never appears on boot
- Solution: Replace misconfigured
/boot/boot.scrwith one from here
(Though this issue is likely already resolved by the time you read this)
- Issue: Battery meter values are incorrect
watch -n 1 /sys/class/power_supply/8xlifepo4/device/status, values can be seen jumping around randomly
→ Solution: Flash LPC to version
R20230703 or newer.
- Issue: WiFi and Bluetooth are not working
sudo dmesg | grep bluetoothshows:
[ 37.997989] bluetooth hci0: firmware: failed to load rtl_bt/rtl8822cs_fw.bin (-2) | [ 38.005390] bluetooth hci0: firmware: failed to load rtl_bt/rtl8822cs_fw.bin (-2) | [ 38.012817] bluetooth hci0: Direct firmware load for rtl_bt/rtl8822cs_fw.bin failed with error -2
→ Solution: Enable
/etc/apt/sources.list and install the firwmware package
firmware-realtek, then reboot.
Issue: Left internal speaker much quieter than right one Diagnosis: Observe left speaker being much quieter when playing audio
→ Solution: Hardware issue on my unit - Soldered speaker wire back on, resolved.
mpvsegfaults when trying to play video
- Diagnosis: Try to play video, observe segfault:
vkoskiv@reform:~$ mpv https://www.youtube.com/watch?v=_MljEAIpQ8g (+) Video --vid=1 (*) (vp9 1920x1080 59.940fps) (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz) File tags: Uploader: Adrian's Digital Basement ][ Channel_URL: https://www.youtube.com/channel/UCbtwi4wK1YXd9AyV_4UcE6g Cannot load libcuda.so.1 [ffmpeg] AVHWDeviceContext: Cannot load libcuda.so.1 [ffmpeg] AVHWDeviceContext: Could not dynamically load CUDA Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory Cannot load libcuda.so.1 [ffmpeg] AVHWDeviceContext: Cannot load libcuda.so.1 [ffmpeg] AVHWDeviceContext: Could not dynamically load CUDA Segmentation fault
→ Solution: #Comment out
- Issue: WiFi is slow (~30Mbit/s) despite good signal strength
- Diagnosis: Run a speed test
→ Solution: TBD - Apparently it’s a known driver issue
- Issue: The following occasionally appears in
[ 6350.739799] rtw_8822cs mmc2:0001:1: failed to send h2c command [ 6352.847914] rtw_8822cs mmc2:0001:1: firmware failed to leave lps state
→ Solution: TBD - Unknown if this is causing any problems
Edit: Added on 22.10.2023:
- Issue: 100% packet loss on WiFi after a while, but linux still thinks the connection is fine
- Diagnosis: pinging router yields
Destination Host Unreachable.
→ Solution: TBD - May be relayed to dmesg errors above, no solution yet, reconnecting fixes the issue temporarily.
- Issue: Can’t enable HDMI and eDP at the same time
- Diagnosis: The following commands work to switch displays, but omitting first command to disable
eDP-1makes the following HDMI enable commands not work.
To switch to external HDMI in sway, run:
swaymsg output eDP-1 disable swaymsg output HDMI-A-1 enable swaymsg output HDMI-A-1 modeline 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
Note: EDID support (which is how monitors tell Linux the different modes they support) apparently doesn’t work at the moment, which is why we specify the modeline manually. In the example above, 1920x1080@50Hz
To switch back to internal screen, run the following two commands twice
swaymsg output eDP-1 enable swaymsg output HDMI-A-1 disable
I was also unable to set a different modeline, I tried this following one to set HDMI to 2560x1440@~59Hz:
swaymsg output HDMI-A-1 modeline 241.5 2560 2608 2640 2720 1440 1443 1448 1481 +hsync +vsync
I didn’t get any errors or anything the setting just didn’t take. My HDMI cable is cheap, could be that.
→ Solution: TBD - There are other hardware projects, such as the Khadas VIM3 that use the same A311D chipset that advertise multiple display support, so it seems likely that this is a software limitation that can be fixed.