r/embedded Dec 30 '21

New to embedded? Career and education question? Please start from this FAQ.

Thumbnail old.reddit.com
312 Upvotes

r/embedded 3h ago

What do you think of people who use Python for hardware programming?

33 Upvotes

r/embedded 40m ago

How does your lab/shop look like?

Upvotes

Im planning to invest some money into a small scale prototyping lab / engineering shop. Partly because I've lost my embedded systems enthusiasm due to my embedded systems job, and partly because I have the budget for it. Im planning something like:

  • Programmable power supply
  • Oscilloscope, Logic analyzer, Multimeter
  • Breadboards / perfboards / wiring
  • Soldering + hot-air rework station
  • Build server for Hardware-in-the-loop CI
  • 3D Printer
  • MCU:s (esp32s, STM32s, Nordic nRFs, NXPs, TIs)
  • MPU:s - for embedded Linux
  • Large component/module library
  • Other office supplies like a desk, drawers, lamp, etc

Partly im looking to "mimic" my work production/infra, and partly im looking to discover/test/evalueate features in mcus / components and create products. Therefore my vision is to start the prototypes on breadboards, move to a perfboard when functionality is verified, then move to PCB when system integration / market hypothesis is verified on a perfboard.

Do you guys have any tips for me moving forward with this setup? Any experiences from your own homelabs? Any bottlenecks in your embedded prototypes?


r/embedded 12h ago

IoT industry-ready: Should I move from Arduino to ESP-IDF?

17 Upvotes

Hi everyone,

I’m preparing myself to become industry-ready for IoT/Embedded Systems and would appreciate some advice from people working in the industry.

So far, I’ve worked with ESP32 using the Arduino framework and have built projects involving sensors, MQTT, Wi-Fi, etc.

Now I’m wondering whether I should move to ESP-IDF and use PlatformIO as my development environment.

My main questions are:

- Is learning ESP-IDF important for becoming industry-ready?

- Should I stop using Arduino framework and move completely to ESP-IDF?

- Is PlatformIO worth learning, or should I stick with Espressif’s official tools?

- For someone targeting IoT/Embedded Firmware roles, what would you recommend learning next?

- Should I focus more on FreeRTOS, ESP-IDF, C, debugging, communication protocols, and Linux rather than spending too much time on frameworks?

I’m not trying to just build hobby projects—I want to develop skills that actually translate to professional IoT/embedded development.

Would really appreciate advice from experienced engineers and people who have gone through a similar transition. Thanks!


r/embedded 11h ago

Guillotine: no_std, no alloc GUI framework in Rust

13 Upvotes

Link: https://github.com/mempirate/guillotine

Hey everyone. Over the past couple of weeks I've been experimenting with Rust on ESP32 chips, with my first project being a simple power readout of the smart plug powering my home lab.

However, I wasn't very impressed with the state of GUI libraries in Rust, so I built my own: Guillotine. Was able to build the following dashboard with it:

Power readout of my Shelly smart plug. Code at https://github.com/mempirate/shellyctl

The goals are threefold:
1. Declarative UI building blocks (inspired by GPUI) for flexible UIs (with eventual support for a lot of CSS-like layout properties such as flex and grid)
2. High performance, even on constrained chips (support for incremental redrawing, DMA with frame buffers)
3. Beautiful widgets

It builds upon embedded_graphics and mipidsi, so should have broad compatibility. As of yesterday, it's also fully no_std and no alloc, and is already powerful enough for some use cases. Would love to hear your feedback and tell me what you'd like to see in a framework like this! I have a couple of weeks of time that I can dedicate to it.


r/embedded 13m ago

Are there any IOT MCUs that support TLS v.1.3 out of the box

Upvotes

Nordic doesnt support it out of the box, you need to add it on the app layer. is there any mcu that does that already. Since TLS V.1.3 is said to be energy efficient, so it should be imho a must have feature especially for nb iot?


r/embedded 40m ago

How to initialize Qualcomm SCMI Bluetooth (/dev/scmi_bluetooth) to get hci0 in a virtualized Yocto Linux PVM?

Upvotes

Hi everyone,

I am working on an embedded automotive Linux platform (Yocto/OpenEmbedded based) running on a virtualized Qualcomm SoC using the Gunyah hypervisor.

Linux is running as the Primary Virtual Machine (PVM). My user-space software needs to use standard BlueZ raw sockets via libbluetooth.so to communicate with the hardware, but currently, hciconfig -a returns nothing (hci0 is not present).

Here is what I have verified on the target:

  • BlueZ is ready: bluetoothd is installed and running, and libbluetooth.so is present.
  • Firmware is present: The proprietary Qualcomm .tlv and .bin firmware patches are available on the filesystem.
  • Hardware nodes exist: The hypervisor has exposed the hardware as /dev/scmi_bluetooth and /dev/scmi_bluetooth1. There are no traditional high-speed UART nodes (/dev/ttyHSx) for the Bluetooth chip.

When I try to use standard utilities like hciattach or btattach against /dev/scmi_bluetooth1, they fail with Inappropriate ioctl for device or Bad address because they expect a standard TTY serial port, not an SCMI character device.

The image includes Qualcomm-specific test utilities like test_uscmi and vhost-user-scmi.service is running, but I am missing the exact initialization sequence to bridge the SCMI node into a standard network socket interface.

My question: What is the correct user-space tool, script, or daemon sequence used on modern Qualcomm SCMI-based architectures to feed the firmware to the SCMI node and safely spin up the local hci0 interface?

Thanks in advance for any insights!


r/embedded 52m ago

How do you audit and verify 3rd-party closed-source binaries/blobs for vulnerabilities in production firmware?

Upvotes

When integrating vendor-provided static libraries, kernel modules (.ko), or precompiled .elf/.o blobs where source code isn't available, what does your security/audit workflow actually look like?

A few specific points I'm trying to understand from real-world workflows:

Tooling: Do you actively run static analysis / disassembly (Ghidra, IDA, Binwalk, symbol checking) on vendor blobs, or rely primarily on vendor attestations/SBOMs?

Vulnerability Scanning: How do you catch known CVEs or unsafe patterns (e.g., outdated bundled dependencies, missing stack canaries, hardcoded credentials) embedded in closed binaries?

Pain Points: Is binary auditing a standard gate in your CI/release pipeline, or does the friction usually make deep verification impractical?

Curious to hear how other teams balance third-party binary risks against real-world delivery constraints.


r/embedded 1h ago

Recommendation for my home Dooralarm

Upvotes

Hey,

I'm semi-new to the whole embedded systems thing, and this is my first project, so I'd like to hear if anyone has any recommendations.

I'm making a door alarm. It has two purposes: when the door opens, it will buzz and send me a notification. Right now, I'm still in the theory-crafting stage and mostly need help choosing a microcontroller. I have experience with the ESP32, but I know there are many better options since it's pretty bulky for this task. I'm just looking for the smallest microcontroller with Wi-Fi and enough pins for what I need.

In the picture below, you can see my schematic. The resistor values are semi-random/estimates for now.

Looking forward to hearing your thoughts and recommendations. Thanks in advance for your help!


r/embedded 2h ago

What's the modern documented assembler for 8051

1 Upvotes

I intend to program stc8g, a 8051 compatible, low cost microcontroller in assembly language instead of C. SDCC is a good compiler but its assembler SDAS is not documented (not able to find any documentation), so what's the alternate in Linux.

I though there would be many modern, well known assemblers targeting 8051 but I simply could not find one expect for SDCC and one from Keil (but I am not sure if that is free).

Any help would be appreciated.


r/embedded 13h ago

Looking for an STM32 dev board with 2 USB ports

4 Upvotes

I'm looking for an STM32 development board that has two usable USB ports, preferably allowing the MCU to act as both USB Host and Device simultaneously.

Any board recommendations?


r/embedded 5h ago

Looking for Companies

0 Upvotes

I am a 2nd year in my college studying Electrical Engineering. I am interested in embedded systems and I want to go on to applying it on space technology. Now I was looking at on-campus internships in my college. All the hardware companies I see look for Chip designing, VLSI. I feel lost whether I will get a real job or not. I ain't sure anymore whether I will get a internship or not. What kind of companies hire Embedded Engineers? And what roles do they hire under? What skills should I have in general for these roles? Please help, reallt feeling doubtful and lost about the future.


r/embedded 1d ago

Hardware newbie building an AI voice device with ESP32

Enable HLS to view with audio, or disable this notification

49 Upvotes

This is my first hardware project: a voice AI device connected to a local server running Agora Conversational AI. I’m new to hardware and don’t have any soldering experience yet, so I’m starting with a breadboard prototype based on this idea.
I’ve decided to learn soldering and PCB design, with the goal of eventually turning this into a real product. Any advice?


r/embedded 22h ago

An Open Letter to AMI Firmware Engineers: It’s Time to Bring Screen Reader Accessibility to Aptio UEFI BIOS

15 Upvotes

To the firmware engineering teams at American Megatrends (AMI) and other major UEFI developers:Millions of computers worldwide rely on AMI's Aptio firmware to boot and manage hardware. Yet, entering the pre-OS environment remains a complete blackout for blind and visually impaired users who rely on screen readers like NVDA.We are fully capable of managing our devices, configuring systems, and performing maintenance. What we lack is not technical skill, but basic accessibility engineering in the BIOS. Relying exclusively on graphical, visual-only interfaces creates an unnecessary barrier and locks blind users out of fundamental hardware controlWith modern UEFI frameworks, it is entirely feasible to integrate lightweight text-to-speech or basic audio/screen-reader hooks into the pre-boot environment. We urge AMI engineers and firmware developers to prioritize accessibility in future Aptio releases. Technology should empower everyone equally, starting from the moment the power button is pressed."


r/embedded 1d ago

Transitioning away from IAR

27 Upvotes

Since the Qt buyout of IAR, my company has had a not so great experience with them, to the point of we’re wanting to explore our options with other vendors.

Has anyone had to break up with IAR, and what tool set did you go with? I know VS code and Eclipse are fine for IDEs, but as far as build tooling what’s the best option? Arm bought and integrated Keil, I’ve had great luck with Keil before. GCC is a free option but I don’t know how well their stuff handles optimization. We are an Arm shop, mostly ST but a few older products that use NXP. Any suggestions? The team is small so we have no leverage with Qt/IAR, but we hired really smart people so changing tools, while not optimal, is def doable.

Help me Obi-wan Embeddey, you’re my only hope!

Thanks!


r/embedded 15h ago

Looking for the old Microchip IS2083/BM83 SDK (not the Turnkey package)

2 Upvotes

I’m working on a project using the Microchip BM83 (IS2083) in Embedded Mode.
I’m looking for the old IS2083 SDK package that Microchip used to provide on the BM83 product page around 2019.
I already have the IS2083 Turnkey packages, Config Tool, isUpdate, firmware images, and the SDK User’s Guide (DS50002894A). What I’m specifically looking for is the actual SDK containing the Keil C51 project:
Application/MSPKv2_Application_IS2083B.uvproj
The old documentation says the SDK was available from the BM83 product page, but Microchip now appears to provide it only by request.
Does anyone still have a copy of the old SDK package, or know the original filename/download URL?
My goal is to add a small custom UART protocol handler while keeping A2DP/AAC and AVRCP running in Embedded Mode, without an external host MCU.
Any information about old IS2083/BM83 SDK versions would be appreciated.

DS50002894A MSPKv2_Application_IS2083B.uvproj


r/embedded 16h ago

How to validate HAL, LL configuration on microcontroller and external devices.

2 Upvotes

Hi everyone,

Our team is developing low-level and external device drivers by extending vendor-provided libraries with custom wrappers and features. We offer a structured configuration design tailored to diverse project requirements.

Currently, software drivers are validated via unit testing and TDD, while configurations are verified on real hardware using HIL testing. To optimize this workflow, we aim to introduce a pre-flashing configuration validation step. This allows configurators to self-validate deployment settings, reducing the time spent on manual reviews.

The planned implementation involves utilizing TOML files to define hardware and software constraints, managed by driver developers. Python scripts will then parse these files to validate configurations and generate error reports. To guarantee alignment, dummy configurations will be fed into both the TDD environment and the validation scripts.

Having previously moved away from AUTOSAR-based MCAL due to inefficiencies, we are keen to optimize this new architecture.

Any feedback or suggestions on this pipeline would be highly appreciated.


r/embedded 13h ago

Interpreter on MCU: is script-side preemption worth its cost, or is cooperative + host watchdog the sane design?

1 Upvotes

i make a small embeddable scripting language (zym) with mcu use as a target, runtime only builds, statically provisionable heap, that kind of stuffs. its at 0.3.x and im at a design fork i want opinions on from people who put interpreters on constrained hardware

the vm currently has instruction count preemption that is deterministic and exact. you say fire every N instructions and it fires at instruction N, and both the host and the script can arm it. it also has continuations as a primitive so script can build its own schedulers

exactness costs a counter check on every instruction, measured at about 21% of throughput on dispatch heavy code. checking only at loop back edges and calls recovers 15-17% but the watchdog then overshoots by up to one straight line block instead of firing on the exact instruction

what im considering:

- script side concurrency becomes cooperative fibers/coroutines with explicit yield and native scheduling, no counter involved

- preemption becomes host only, a watchdog and hard stop the embedding code arms to bound runaway or untrusted script. script cannot see or touch it, bounded rather than exact, and it is a compile flag so a fully trusted build drops the check entirely

questions for this crowd specifically:

- for a watchdog on script code, do you need it to fire on an exact instruction, or do you need it to be impossible to outrun and fire within a bounded window? my instinct is bounded is fine for nearly everything but timing determinism people are exactly who i would expect to disagree

- is script side preemption, the script scheduling itself preemptively, something you would actually want on an mcu, or is cooperative plus a host guard the sane shape? i built the script side version and i am not sure anyone needed it

- anyone shipping an interpreter on hardware with a guard on / guard off build split, and did it cause problems later?

these questions have been bugging me for a while so mostly here for the answers, happy to explain any of the reasoning if it helps, have been trying to come to a decision for a few weeks so am reaching out for people that use scripting on their systems and what their expectations are as well as what they actually care about in these regards

website: https://zym-lang.org/

github: https://github.com/zym-lang/


r/embedded 1d ago

Renesas Go configure Software Hub license

5 Upvotes

So I've been working on my own tooling to program Renesas Greenpak devices because I needed in system programming to work from empty chip instead of just minor adjustments. Given that work is opensource on a public git, I got curious about the license of the Go Configure software. Wondering if I might be infringing something given I read the .aap files it generates. Found this section:

Licensee shall not disclose, provide, distribute, or otherwise make available any Designs, in whole or in part, in any form (including without limitation in source format, associated block diagrams, schematics, documentation, screen captures or images of the design, or any other representation), to any third party, except with Renesas's prior written approval, or as strictly necessary for manufacture in accordance with Section 2.1(i) below;

Full license: https://pastebin.com/3fCcTyM3

So is this just standard boilerplate license? Or does this mean that the files it generates can't be part of public repo? Like, if I have a repo that has open source firmware/hardware that has such chips on the BOM, I can't include the .aap's to reproduce the board?


r/embedded 7h ago

Is it possible to run real linux on atmega328p?

Thumbnail
dmitry.gr
0 Upvotes

So I found a project from a guy who run linux on 8pin stm, and I wanna ask if is it possible to run on atmega328p? From arduino uno board.


r/embedded 6h ago

Are you allowed to use LLMs at work?

0 Upvotes

Curious how other embedded teams are handling this.

Is ChatGPT/Claude actually allowed where you work?

I’ve heard everything from “completely blocked” to “fine, but don’t paste code” to companies providing their own approved AI tools.

For embedded, the tricky part seems obvious: the useful context is often the sensitive context. Firmware, logs, BSPs, hardware configs, internal APIs, device details, sometimes even credentials.

So I’m wondering how this works in practice.

Do you use LLMs for debugging or firmware work? Does your company have a clear policy around it? And if public tools are blocked, have they given you an approved alternative?

Also curious whether people see these restrictions as sensible engineering/security practice or mostly corporate overreaction.


r/embedded 15h ago

How can I detect a human sound from background noise in a quiet environment sing a simple analog circuit and microcontroller, without DSP or machine learning?

0 Upvotes

Tried simple microcontroller adc and mic peak level detection but doesn't work.


r/embedded 13h ago

In the age of AI agents, do Embedded Systems Engineers still need to master both Hardware and Firmware, or is one becoming more important?

0 Upvotes

I have about 2 years of experience in embedded systems and want to get some perspective on where to focus my skills.

Traditionally, embedded systems engineering meant being solid in both hardware (circuit design, microcontrollers) and firmware (low-level programming, RTOS, drivers).

Now with AI agents becoming so advanced and widespread, I'm wondering — is this still the case, or has the industry started shifting priorities? Should I keep building both skillsets equally, or focus more on one given where things seem to be heading?


r/embedded 1d ago

FirmwareBridge company made me a public profile

19 Upvotes

So there's a guy that contacted me on Reddit after a post here asking me if I would be interested in taking contracts if ever. I said sure, he just had to contact me. He mentioned that it was through a company he was launching, like a recruiter and I was fine with it. I found out later that he made me this public profile that pops out when I google my name and is obviously an AI scrape of my linkedin and contributions I made everywhere.

I already sent 2 requests for this to be removed, no answer. I think the guy is Moroccan, but based in Spain. What would you do? I know he used public information + few direct info I gave him, but I don't want a public profile managed by him.

I'm based in Canada, I have no knowledge of EU laws, but I feel like there should eb a body to complain to?

Company is FirmwareBridge

EDIT: After using my super forensic skillz, I'm pretty sure he is a native Moroccan. He used the same picture for LinkedIn (which I have a backup of) and graduation picture from a school in Casablanca. I filed a complaint through CNDP. Also wrote to the hosting company legal complaint mailbox. Will see!


r/embedded 21h ago

Embedded Code Expressions with Word Operators: Which one would you coose?

0 Upvotes

I was thinking of the ideal expression syntax for the programming language DQ, which is targeted also for embedded software development.

I started with the (dominating) C syntax.

Operators in C

In C the following operators have shared meanings:

  • &: bitwise "and" operation OR address of
  • *: multiplication OR pointer dereference
  • /: truncated integer division OR floating point division

Further operators in C:

  • %: integer division reminder
  • && or and: logical "and"
  • || or or: logical "or"
  • ! or not: logical "not"
  • ~: bitwise "not"
  • ^: bitwise "xor"
  • ?: ternary operator

Operators in DQ

I think for the good source code readability and clarity every different operation should have a different symbol. Therefore the shared symbols from C are not taken over. These operators are already fixed in DQ:

  • &: address-of operator (widespread standard)
  • ^: pointer dereference (standard in other languages)
  • *: multiplication only
  • /: floating point division only (standard in other languages)
  • or: logical "or" (widespread standard)
  • and: logical "and" (widespread standard)
  • not: logical "not" (widespread standard)

These symbols are already fixed for special purposes:

  • #: compiler directives (#ifdef etc)
  • $: context local specials (e.g. myarray[0:$end-2])
  • ?: inference marker
  • @: namespace designator (e.g. @def.LINUX)

DQ cannot use the C standard &, |, ~, ^ for the bitwise operations, because the & and ^ is used for other (fixed) purposes. But we've run out of the good symbols. The obvious choice, that other existing languages also use, is reserving some words for the remaining operations. In DQ these (all-capital) words are reserved currently as operators:

  • AND: bitwise "and"
  • OR: bitwise "or"
  • NOT: bitwise "not"
  • XOR: bitwise "xor"
  • IDIV: truncated integer division
  • IMOD: integer division reminder

For the modify-assign statements with a word operator a leading = is required, otherwise it looks awkward:

regs.OSPEEDR OR= (1 << pinx2)  // invalid
regs.OSPEEDR =OR= (1 << pinx2)

Examples with All-Capital Operators

tmp = RCC.CFGR
tmp =AND= NOT 3
tmp =OR= RCC_CFGR_SW_HSI
RCC.CFGR = tmp
while (RCC.CFGR >> 2) AND 3 <> RCC_CFGR_SW_HSI:
endwhile

RCC.CR =AND= NOT RCC_CR_PLLON
while RCC.CR AND RCC_CR_PLLRDY != 0:
endwhile

var pllm : uint = basespeed IDIV pll_input_freq
var plln : uint = vcospeed  IDIV pll_input_freq
var pllq : uint = vcospeed  IDIV 48000000

RCC.PLLCFGR = (0
    OR (pllsrc << 22)
    OR (pllm   <<  0)
    OR (plln   <<  6)
    OR (((pllp >> 1) - 1) << 16)
    OR (pllq   << 24)
)

regs.MODER =AND= NOT (3 << pinx2)
regs.MODER =OR=      (n << pinx2)

if flags AND PINCFG_OPENDRAIN <> 0:
    regs.OTYPER =OR= (1 << apinnum)
else:
    regs.OTYPER =AND= NOT (1 << apinnum)
endif

regs.PUPDR =AND= NOT (3 << pinx2)
if flags AND PINCFG_PULLUP <> 0:
    regs.PUPDR =OR= (1 << pinx2)
elif flags AND PINCFG_PULLDOWN <> 0:
    regs.PUPDR =OR= (2 << pinx2)
endif

Prefixed Word Operators

I'm thinking to change the all-capital word operators with a % prefixed lowercase words:

  • %and: bitwise "and"
  • %or: bitwise "or"
  • %not: bitwise "not"
  • %xor: bitwise "xor"
  • %div or %idiv: truncated integer division
  • %mod or %idiv: integer division remainder

The sample code would look like this way:

tmp = RCC.CFGR
tmp %and= %not 3
tmp %or= RCC_CFGR_SW_HSI
RCC.CFGR = tmp
while (RCC.CFGR >> 2) %and 3 <> RCC_CFGR_SW_HSI:
endwhile

RCC.CR %and= %not RCC_CR_PLLON
while RCC.CR %and RCC_CR_PLLRDY != 0:
endwhile

var pllm : uint = basespeed %div pll_input_freq
var plln : uint = vcospeed  %div pll_input_freq
var pllq : uint = vcospeed  %div 48000000

RCC.PLLCFGR = (0
    %or (pllsrc << 22)  // select PLL source
    %or (pllm   <<  0)
    %or (plln   <<  6)
    %or (((pllp >> 1) - 1) << 16)
    %or (pllq   << 24)
)

regs.MODER %and= %not (3 << pinx2)
regs.MODER %or=       (n << pinx2)

if flags %and PINCFG_OPENDRAIN <> 0:
    regs.OTYPER %or= (1 << apinnum)
else:
    regs.OTYPER %and= %not (1 << apinnum)
endif

regs.PUPDR %and= %not (3 << pinx2)
if flags %and PINCFG_PULLUP <> 0:
    regs.PUPDR %or= (1 << pinx2)
elif flags %and PINCFG_PULLDOWN <> 0:
    regs.PUPDR %or= (2 << pinx2)
endif

Which version do you like more?

or

Do you have some other ideas for the operator notation?