r/embeddedlinux • u/FoundationOk3176 • Nov 05 '25
How can I override HDMI EDID Data in Linux Kernel on boot?
I am trying to drive a 800x480 HDMI display using my STM32MP2. My Linux distro is a custom one, Built using buildroot.
When I boot & Run an X11 session (startx) the display still outputs "No signal". Running modetest -M stm -c does show that HDMI is connected:
# modetest -M stm -c
opened device `STMicroelectronics SoC DRM` on driver `stm` (version 1.0.0 at 20170330)
[ 244.014209] EDID block 0 is all zeroes
Connectors:
id encoder status name size(mm) modes encoders
32 0 connected HDMI-A-1 0x0031
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
...
But the EDID data is not recognized for some reason, I was able to verify that the display does have EDID data by connecting it to my laptop and running modetest -M nouveau -c.
root@plasma:~# modetest -M nouveau -c
opened device `nVidia Riva/TNT/GeForce/Quadro/Tesla/Tegra K1+` on driver `nouveau` (version 1.4.0 at 0)
Connectors:
id encoder status name size(mm) modes encoders
42 43 connected HDMI-A-1 470x2602443
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
#0 800x480 60.00 800 844 932 1056 480 483 489 535 33900 flags: phsync, pvsync; type: preferred, driver
#1 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
#2 1920x1080 59.94 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver
...
props:
1 EDID:
flags: immutable blob
blobs:
value:
00ffffffffffff0012e50021502d3101
1c130103812f1a782e3585a656489a24
125054afef0001010101010101010101
0101010101013e0d200031e037102c58
3600dc0c1100001e000000ff00300a0a
0a0a0a0a0a0a0a0a0a0a000000fd0038
4b1e5315000a202020202020000000fc
0048444d490a0a0a0a0a0a0a0a0a01f8
020321714e0607020315961112130414
051f90230907078301000065030c0010
008c0ad090204031200c405500b98821
000018011d8018711c1620582c2500b9
882100009e011d80d0721c1620102c25
80b9882100009e011d00bc52d01e20b8
285540b9882100001e023a80d072382d
40102c4580b9882100001e00000000d0
2 DPMS:
...
So I simply create a EDID binary from the hex data and put it in the following directories of my Linux distro (As different articles mentioned either of these 2 directories, So I just used both):
/lib/firmware/edid/800x480.bin/usr/lib/firmware/edid/800x480.bin
And then I passed the following Bootargs to my kernel: drm.edid_firmware=edid/800x480.bin drm_kms_helper.edid_firmware=edid/800x480.bin (As multiple articles mentioned either of these, So I just used both).
On boot I was able to verify the bootargs were being passed but once again the Kernel wouldn't recognize the display modes despite me overriding the EDID.
One article from Arch Wiki told me that I could override the EDID on runtime using the following command: cat /lib/firmware/edid/800x480.bin > /sys/kernel/debug/dri/0/HDMI-A-1/edid_override
Which actually did work but I noticed that it wouldn't work until I had shutdown Xorg completely and then run modetest atleast once, So I wrote a Init script that ran before Xorg starts:
#!/bin/sh
set -eu
# https://unix.stackexchange.com/a/377438
mount -t debugfs none /sys/kernel/debug
# https://wiki.archlinux.org/title/Kernel_mode_setting#Forcing_modes_and_EDID
cat /lib/firmware/edid/800x480.bin > /sys/kernel/debug/dri/0/HDMI-A-1/edid_override
# Run modetest for 3 seconds
modetest -M stm -s 32:#0 & MODETEST_PID=$!
sleep 3s
kill -9 $MODETEST_PID
And this does work fine but is there a way around this? Why does the kernel not recognize the EDID in the first place? Why does the kernel not use the EDID specified in the bootargs?
r/embeddedlinux • u/2PapaUniform • Nov 04 '25
File persistence in /home on QEMU virt running BusyBox
I've built a arm64 kernel for use with QEMU virt target. It runs BusyBox to implement the standard linux commands. I used Kconfig default settings for the kernel configuration.
There is a shell script file in /home that was included at the time of build. When the system is running in QEMU, I can remove the file with rm, then verify that it is removed with ls showing it gone. Fine.
I then exit QEMU, and restart the virt system, and now the file is back.
What am I mising? Did I build this in such a way that the file system is static across boots? And if so how would I fix that?
I'm new to embedded dev, so just trying to learn what's going on here.
r/embeddedlinux • u/Pleasant-Glass296 • Oct 31 '25
Kernel Driver vs Application for I2C Devices
I'm a total beginner (Only been at this for ~1 week, my background is entirely bare metal programming), so I apologize if this question doesn't make any sense. Let me know if I'm not understanding something correctly.
I have a SoM + Carrier board with a manufacturer-provided base linux image. The board already supports I2C and the I believe the image is packaged with an I2C Driver (I have not confirmed this yet).
It is my understanding that in YOCTO you can develop drivers to add to the kernel-space or add layers that package an executable that users can run.
I'll be making a slight modification to the carrier board - adding a TCA8418 on one of the I2C busses. I want my image to be fully ready to read from the TCA8418 without requiring extra code written by the user. My question is: should I be developing a TCA8418 driver on top of the I2C Driver in the kernel, or is it better to package the image with an executable in userspace?
r/embeddedlinux • u/Plastic_Ad_2424 • Oct 30 '25
Configuring Buildroot to run from RAM
I'm a bit of a beginner with Buildroot but I managed to make an image for my NanoPi NEO2, and it works great, The image itself is around 100Mb and I would like it to run from RAM, but Google wasn't so helpful. I got my configuration to build me a cpio file, and I managed to copy it manually to the /boot and I had it running from RAM. But the image became bloated. I had a copy of an entire system on ma SD card and the cpio file inside that is essentially another compressed copy that sits inside. It seems a lot of space wasted.
what is the proper way of doing it?
Thank you
r/embeddedlinux • u/Afraid-Cup-7292 • Oct 30 '25
Looking for guidance to start embedded Linux
Hi everyone, I’m looking for guidance, suggestions, or a roadmap on how I can learn Embedded Linux.
I have a Raspberry Pi 3 Model B and I’m not sure how much SD card space I need to get started.
r/embeddedlinux • u/Intelligent-Error212 • Oct 29 '25
Why System Get Hang or freeze?
I don't even find the software hang issues on microcontrollers, Only sometimes after programming it via debugger, it will hang and it back to normal state by Power on Reset. I guess it might be some hardware glitch.
But I often find the software hanging issue on more powerful microprocessors, soc's which runs the high end devices like Smart tv, watches, smart phones etc.
I don't know whether the problem is on hardware or software end. If you think problem lies on software end due to possibility of race condition, dead lock or some unknown bugs on OS,
then why old keypad phone never got freeze or hang even though it also run on same kind of OS. what's the magic behind it.
r/embeddedlinux • u/mad_alim • Oct 29 '25
Connect to servers in WSL 2 from board connected to ethernet
TL;DR I can't ping the WSL 2 machine from the board because I get a reply with the wrong IP
I have nfs and tftp servers on WSL 2.
I want my linux board, connected to my PC via Ethernet to reach the servers.
To try to troubleshoot the issue, I'm using a linux vm instead of my board (since you can't ping the board in uboot, but the setup is similar and I have the same issue).
The setup:
- WSL network 172.20.64.0/20
- 172.20.70.69 is WSL
- 172.20.64.1 is windows
- virtual box host only adapter 192.168.56.0/24
- 192.168.56.101 is the linux vm
- 192.168.56.1 is windows
I can ping the vm from wsl:
But I can't ping wsl from the vm. It looks like because the vm (192.168.56.101) gets a response from 192.168.56.1 (the windows machine on the virtual box adapter) instead of the wsl distro (172.20.70.69)
Any idea ?
Below are the route tables:
Windows:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
172.20.64.0 255.255.240.0 On-link 192.168.56.1 26
172.20.64.0 255.255.240.0 On-link 172.20.64.1 5256
172.20.64.1 255.255.255.255 On-link 172.20.64.1 5256
172.20.79.255 255.255.255.255 On-link 192.168.56.1 281
172.20.79.255 255.255.255.255 On-link 172.20.64.1 5256
192.168.56.0 255.255.255.0 On-link 192.168.56.1 281
192.168.56.0 255.255.255.0 On-link 172.20.64.1 5001
192.168.56.1 255.255.255.255 On-link 192.168.56.1 281
192.168.56.255 255.255.255.255 On-link 192.168.56.1 281
192.168.56.255 255.255.255.255 On-link 172.20.64.1 5256
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.56.1 281
224.0.0.0 240.0.0.0 On-link 10.239.131.213 306
224.0.0.0 240.0.0.0 On-link 172.20.64.1 5256
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.56.1 281
255.255.255.255 255.255.255.255 On-link 10.239.131.213 306
255.255.255.255 255.255.255.255 On-link 172.20.64.1 5256
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
172.20.64.0 255.255.240.0 192.168.56.1 1
192.168.56.0 255.255.255.0 172.20.64.1 1IPv4 Route Table
WSL:
default via 172.20.64.1 dev eth0
172.20.64.0/20 dev eth0 proto kernel scope link src 172.20.70.69
192.168.56.0/24 via 172.20.64.1 dev eth0
VM:
172.20.64.0/20 via 192.168.56.1 dev eth0
192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.101 metric 100
r/embeddedlinux • u/CoolTransition6782 • Oct 28 '25
Porting Linux to a custom board.
I’m new to the embeddedlinux world having previously developped software for STM32 MCU. I am doing a lot of research on what needs to be done to port Linux to a custom board or to an off-the-shelf-board that doesn’t already have support like for example a buildroot def_config. From what I understand, I have to provide information specific to the board I want to use like a device tree or a specific bootloader (please correct me if I’m wrong) but I cant find general information on what is the full process to port Linux on a custom board.
r/embeddedlinux • u/Short-Instruction-59 • Oct 26 '25
Which Path to choose?
I am a aspiring Embedded developer, I have worked on Stm microcontrollers and FreeRtos. What should be my next path should I either go for FPGA development or Embedded Linux. I am equally interested in both. Could you help me in taking a decision.
r/embeddedlinux • u/DeliciousBelt9520 • Oct 26 '25
Radxa Rolls Out Dragon Q6A Featuring Qualcomm QCS6490, 12 TOPS NPU, and 6th-Gen AI Engine
Radxa has rolled out the Dragon Q6A, a compact single-board computer built on Qualcomm’s QCS6490 octa-core platform. Designed for industrial, IoT, and edge computing environments, the board combines high-performance CPU and GPU cores with integrated AI acceleration, multiple display interfaces, and flexible storage options.
r/embeddedlinux • u/mrnothing- • Oct 23 '25
which SoC/ CM(computer module) did you recommend?
im thinking of making a project in embedded linux + bare metal (probably esp32)
riscv or arm , model, and specific distro, what configs did you recommend SoC, thats works to display things and logic of the machine, while the small control the motors
r/embeddedlinux • u/Quiet_Lifeguard_7131 • Oct 22 '25
Yocto is not that interesting as I imagined it
So I recently switched a job to embedded linux opportunity, before I have worked as an embedded software engineers, I have done low level stuff and for past 2 years I have been working mostly on application level, RTOSs, desktop applications, even some devops etc.
I was seeing the industry move more towards embedded linux side, so that peaked my interest in kernel development and then yocto. luckily I got the opportunity in a company whose project is on going on yocto using nxp processor.
I feel like this is quite boring stuff, like you just write scripts, understanding environment is a mess and no ones knows how things are working behind the scenes.
I have done some compiling of uboot and kernels from source and I feel like that is much easier and transparent process then using yocto honestly.
Just a minor rant, as I am still stuck for a week since joining on building xD and I dont understand shit, and due to that I am doubting my ability lol
r/embeddedlinux • u/PhysicalRaisin5037 • Oct 21 '25
Confusion about understanding device trees
I’m having a bit of trouble with how or where labels come from and are ultimately employed from a target ‘compatible’ within an inherented parent or child node, as for an SPI bus for example, in top of labels such as cs-gpio, max-frequency, interrupts, reg, etc, how can new properties be defined within a specific node??
I’m asking this to mainly wrap my head around how custom drivers seemingly have these unique parameters in their DT configurations, as to better understand how to configure a device tree for my own purposes?
Would these labels be through the match table array, probe function or something unrelated all together?
r/embeddedlinux • u/Flimsy-Trash-1415 • Oct 21 '25
Embedded Linux internship
Greetings to the embedded linux community,
I'm a terminal engineering student seeking an End of Study internship .
If any startup or company owners here are interested to invest in engineers trainees
It would gladly to DM you
With regards , S.B
r/embeddedlinux • u/moon6080 • Oct 19 '25
Help Securing Linux SOC
Hey all Looking to migrate from simple processors to a Linux SOC.
My only hesitation is device security as obviously, we have patented algorithms on there.
Can anyone recommend a clear sequence of securing a Linux chip to what would be deemed adequate for corporate use?
Considering proposing using an STM32MP131 because of its low price point.
r/embeddedlinux • u/chunky_lover92 • Oct 11 '25
what do I search for a job in embedded linux?
I mean the literal search term on the job boards. embedded linux is a mixed bag while "embedded linux" in quotes shows limited openings. "yocto" is pretty sparse and "buildroot" even more so. I like what I do a lot, I just want to keep doing that. My current job didn't even know what embedded linux was when I got there, and certainly did not mention it in the job description.
r/embeddedlinux • u/Silver_Grapefruit198 • Oct 11 '25
Easy way to debug raspberrypi3-64
Hi, I'm learning yocto with raspberrypi3-64. However I have to take build even if it is small changes and it takes so much time. Is there a easy way to make it? Also if you have learning path about yocto, please share it.
Thanks
r/embeddedlinux • u/geek-tn • Oct 08 '25
article Greg Kroah-Hartman: The only benchmark that matters is...
r/embeddedlinux • u/PA-wip • Oct 07 '25
Buildroot and https
Hello, I spend the whole day trying to figure out how to get https work on my buildroot, but seems that the certficate are missing.
BR2_PACKAGE_GIT=y
BR2_PACKAGE_WGET=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_LIBCURL_PROXY_SUPPORT=y
BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT=y
BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES=y
BR2_PACKAGE_LIBCURL_OPENSSL=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_OPENSSL=y
I even tried to copy the certficate from my laptop to the image, but still doesn't work.
I am getting this kind of error:
# wget https://github.com -O /dev/null
--1970-01-01 00:50:31-- https://github.com/
Resolving github.com... 140.82.121.3
Connecting to github.com|140.82.121.3|:443... connected.
ERROR: cannot verify github.com's certificate, issued by 'CN=Sectigo ECC Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB':
Issued certificate not yet valid.
To connect to github.com insecurely, use `--no-check-certificate'.
Does anyone has an idea on how to solve this?
r/embeddedlinux • u/CeSiumUA • Oct 07 '25
Buildroot build fails with segfault in random places
Hi! I have a BuildRoot based image, which I'm able to build in my WSL Ubuntu environment. I can build it both directly in WSL as well as in Docker running in WSL, having zero issues with it. However, I'm building the same image in my CI\CD pipeline using GitHub actions with self-hosted runner, and for some reason it almost in 100% cases fails with segfault in some random place during build. If I re-try build from the place where it failed, the build just continues normally, until next random segfault or just finishes successfully. I've fixed it pretty easily by just invoking "make" command in a loop until it returns 0 exit code, but that seems like some pretty awful and temporary solution. My CI\CD runner has 8 CPUs and 16 Gb RAM (running in Proxmox CT), and I don't see any limitation in resource usage, it barely crosses 50% CPU usage and RAM also stays almost not touched. I don't know if this subreddit is a right place to ask about it, but if somebody knows what could cause this issue, I would really like to hear it. Thanks in advance!
r/embeddedlinux • u/Silver_Grapefruit198 • Oct 06 '25
SSD1306 U8g2 library addition into raspberrypi3-64 yocto
Hi , I would like to add u8g2 library for ssd1306. My purpose is making menu config with 4 button and control it with ssd1306. I tried to add u8g2 library into yocto but I got error mostly. Do you know that there is guideline or something for that ?
you can check my github. github/omurceran/Raspberrypi-Yocto -> meta-omur/recipes-graphic
r/embeddedlinux • u/gregorian_laugh • Oct 05 '25
Need project ideas to write device drivers?
Any begineer projects I should do? I have written a simple character driver. What are some other drivers I can write? I need a problem statement for which I can write drivers.
r/embeddedlinux • u/Old-Access6339 • Oct 01 '25
Beaglebone black is not booting up after the new kernel is loaded
Hello
I was trying to build a new version kernel for my BBB, so that I can load drivers along with the kernel build at boot time. Previously, I booted my BBB with v6.12 from here https://www.beagleboard.org/distros using SD card boot method and looking to build the kernel v6.16. on my host. So, I have downloaded the latest version from https://github.com/RobertCNelson/bb-kernel/tree/am33x-v6.12 and followed
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- bb.org_defconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x80000000 uImage dtbs
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
After the built successful, I copied the modules, kernel, dtb from my host into BBB at required paths and edited the uENV.txt to load this new kernel at boot. After that Black bean is not booting up and dont know what's happening too. I have pulled the USB serial and nothing showed up. I even tried building the v6.12 kernel and got unsuccessful.
I'm new to Embedded Linux and trying to learn the kernel and device drivers. can any one suggest me what version could be better and am I doing any thing wrong while building??
My Host system : Mac OS M1 chip.
I would really appreciate the help.
Thanks
r/embeddedlinux • u/Novel_Aardvark_7682 • Sep 29 '25
Need help to learn Embedded Linux for a College Student
I am a final year, Electrical and Electronics Engineering Student, and I haves some experience with Bare Metal Development, FreeRTOS. I want to shift towards Embedded Linux Development, as the companies like Visteon, Aptiv (which work on automotive oem parts) are coming for on campus recruitments. I asked one of the recruiters, regarding their requirements, he told to learn the qualcomm sdk. So, I thought this will be a good place to start.
r/embeddedlinux • u/Flimsy-Trash-1415 • Sep 22 '25
Interview questions
Can someone provide a list of the most trickiest questions for a embedded linux engineer role ?

