{"id":10281,"date":"2026-10-08T07:53:54","date_gmt":"2026-10-08T07:53:54","guid":{"rendered":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/"},"modified":"2026-10-08T07:53:54","modified_gmt":"2026-10-08T07:53:54","slug":"esp32-as-your-raspberry-pis-linux-wireless-co-processor","status":"publish","type":"post","link":"https:\/\/dev95.site\/ar\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/","title":{"rendered":"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor"},"content":{"rendered":"<div id=\"dev95-1761230934\" class=\"dev95-- dev95-entity-placement\"><script async=\"async\" data-cfasync=\"false\" src=\"https:\/\/pl27862732.profitableratecpmnetwork.com\/2ad7a50e0bbc23ac6801d7b77c501463\/invoke.js\"><\/script>\r\n<div id=\"container-2ad7a50e0bbc23ac6801d7b77c501463\"><\/div><\/div><div id=\"dev95-1369972206\" class=\"dev95-before-content dev95-entity-placement\"><p style=\"text-align: center;\"><strong>Stop wasting time on dead links! \ud83d\uded1 This smart platform automatically detects your device and country to give you the exact best offer instantly. Check it out now 100% free! \ud83d\udc47<\/strong><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" data-complete=\"true\" data-copy-service-computed-style=\"font-family: Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(10, 10, 10);\" \/><a href=\"https:\/\/www.profitableratecpmnetwork.com\/pvhx5mbcc?key=ff7d362db3c20bc86fad685cc94f1fc4\">\ud83d\udd17 <strong class=\"rQesXe MPyX\" data-sfc-cp=\"\" data-sfc-root=\"ep\" data-complete=\"true\" aria-owns=\"action-menu-parent-container\" data-copy-service-computed-style=\"font-family: Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(10, 10, 10);\">[Click here]<\/strong><\/a><\/p>\n<\/div><div>\n<div><img data-recalc-dims=\"1\" width=\"800\" height=\"450\" src=\"https:\/\/i0.wp.com\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?resize=800%2C450&#038;ssl=1\" class=\"attachment-large size-large wp-post-image\" alt=\"\" style=\"margin: 0 auto; margin-bottom: 15px;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg 1920w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?resize=250,141 250w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?resize=400,225 400w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?resize=800,450 800w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?resize=1536,864 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" data-attachment-id=\"1164100\" data-permalink=\"https:\/\/hackaday.com\/2026\/10\/07\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/hadimg_esphosted_feat-2\/\" data-orig-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg\" data-orig-size=\"1920,1080\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"hadimg_esphosted_feat\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800\"><\/div>\n<p>A laptop with no wireless connectivity feels like a rarity \u2013 but when you shop for powerful Linux single-board computers (SBCs), it is pretty common to see one skimp on WiFi. At the same time, current wireless cards can leave much to be desired. A mess of proprietary firmware, ephemeral or even binary blob drivers, weird glitches never resolved, and sometimes entirely source-less blobs with an expiration date. Maybe the SBC doesn\u2019t have a free USB port for a plug-and-play WiFi chip, or you don\u2019t want to design for an obscure hard-to-source castellated module.<\/p><div id=\"dev95-698956459\" class=\"dev95- dev95-entity-placement\"><center>\r\n<script>\r\n  atOptions = {\r\n    'key' : '4ba6b6513c00e0ba76511f798ae56401',\r\n    'format' : 'iframe',\r\n    'height' : 50,\r\n    'width' : 320,\r\n    'params' : {}\r\n  };\r\n<\/script>\r\n<script src=\"https:\/\/www.highrevenueformat.com\/4ba6b6513c00e0ba76511f798ae56401\/invoke.js\"><\/script>\r\n\t<\/center><\/div>\n<p>What if I told you there\u2019s a unique solution to the problem, as long as the SBC has an SDIO or SPI to spare? There\u2019s a wireless card we can all try to get behind, and it\u2019s certainly not flawless but gives us way more room to grow \u2013 it\u2019s got somewhat open-source firmware, it comes from a respectable company, and it\u2019s nigh-guaranteed to be easy to source. I am, of course, talking about <code><a href=\"https:\/\/github.com\/espressif\/esp-hosted\/\" target=\"_blank\">esp-hosted<\/a><\/code> \u2013 using ESP32 modules as your WiFi\/BT card, over SDIO or SPI.<\/p>\n<p>I\u2019ve recently added an ESP32-C6 into my project, and setting up <code>esp-hosted<\/code> wasn\u2019t ultra straightforward \u2013 so here\u2019s a guide, and a discussion on what makes <code>esp-hosted<\/code> so cool and so incredibly promising. Spoilers: it works with privacy switches that cut out power, it could be hacked into a coprocessor for mesh protocols, and it could potentially help us build a fully open-source SDIO WiFi card.<\/p>\n<p><span id=\"more-1164068\"><\/span><\/p>\n<h2>Two Halves, Most Chips Supported<\/h2>\n<p>A quick clarification is warranted, as there are two projects <a href=\"https:\/\/github.com\/espressif\/esp-hosted\/\" target=\"_blank\">under the <code>esp-hosted<\/code> roof.<\/a> There\u2019s the <code><a href=\"https:\/\/github.com\/espressif\/esp-hosted-mcu\" target=\"_blank\">esp-hosted-mcu<\/a><\/code> (previously known as <code>esp-hosted-fg<\/code>, \u201cFirst Generation\u201d), which runs the ESP32 as more of an MCU connected to WiFi and provides a relatively limited but self-sufficient interface on the Linux side; your connection aspects are mostly managed by the ESP32 module, so it will connect to your defined WiFi networks no matter if your host is rebooting or even fully off. As such, <code>esp-hosted-mcu<\/code> works best on microcontrollers, or in cases where you want your ESP32 to be a fully conscious separate entity, so to say. Want to make your ESP32 into an EC for your board, complete with WiFi connectivity? Then go with the <code>-mcu<\/code> version.<\/p>\n<p><code><a href=\"https:\/\/github.com\/espressif\/esp-hosted-linux\" target=\"_blank\">esp-hosted-linux<\/a><\/code> (previously known as <code>esp-hosted-ng<\/code>, \u201cNew Generation\u201d) leaves the wireless stack on the Linux side, with the ESP32 being a relatively thin proxy for the Linux wireless stack. I\u2019ll talk about <code>esp-hosted-linux<\/code> here because it behaves in the most \u201cnative\u201d way that regular WiFi cards do under Linux, but a lot of this article will apply to <code>esp-hosted-mcu<\/code> too.<\/p>\n<p><code>esp-hosted<\/code> requires two to tango: a Linux computer with an SDIO or SPI port to spare, and an ESP32 chip\/module out of supported ones, I opted for ESP32-C6. The generic ESP32-WROOM modules are more than enough, but most of the shiny new chips are supported as well. Specifically, ESP32-S2, -S3, -C2, -C3, -C5, and -C6\/C61 can all work with the <code>esp-hosted-linux<\/code>, and if you\u2019re playing with something like the -S31, check <a href=\"https:\/\/github.com\/espressif\/esp-hosted\/issues\" target=\"_blank\">the issue tracker of the parent project<\/a>. I run the C6 because I thought it was the chip with the largest amount of supported features, and it\u2019s marginally more expensive than any of the other ones, so why wouldn\u2019t I? However! That was a mistake, and if I were to design a new board, I\u2019d go with the ESP32-C5. Turns out, despite the C number being lower, ESP32-C5 is straight up better than the ESP32-C6, sporting 5GHz support in particular.<\/p>\n<p>From there, you\u2019ll want to wire it up over SDIO or SPI \u2013 I recommend SDIO if available, because it\u2019s way speedier. One thing \u2013 make sure that your SBC\u2019s SDIO interface is supported by the OS, and not in the limbo state of \u201cthe hardware is ready, someone just needs to make the driver work\u201d, unless you can be that somebody. If you already have a devboard, you can bodge in an SD card onto your supposedly-SDIO pins to verify that your SDIO interface actually functions!<\/p>\n<p>SDIO is essentially a full-duplex parallel bus with one control signal (CMD), one clock (CLK), and four data lines (D0-D3) \u2013 or just one data line, D0, if you feeling ascetic. These lines wiggle fast, and they\u2019re not diffpairs, so you\u2019ll want to lay them out with respect as single-ended wires. I\u2019ll be writing up a larger SDIO article, but until then, do refer to one of the numerous SDIO layout tutorials online. Here\u2019s a reference schematic:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1164094\" data-permalink=\"https:\/\/hackaday.com\/2026\/10\/07\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/hadimg_esphosted_1\/\" data-orig-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png\" data-orig-size=\"1720,1053\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"hadimg_esphosted_1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png?w=800\" class=\"aligncenter wp-image-1164094 size-large\" src=\"https:\/\/i0.wp.com\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png?resize=800%2C490&#038;ssl=1\" alt=\"\" width=\"800\" height=\"490\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png 1720w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png?resize=250,153 250w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png?resize=400,245 400w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png?resize=800,490 800w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_1.png?resize=1536,940 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\"><\/p>\n<p>A short SDIO layout recommendation: make sure there\u2019s a continuous ground return path underneath, length-match between signals to the best of your ability (within 1 mm?), and overall keep the SDIO link as short as you possibly can. When wiring up SDIO coming from the 40-pin header on a Pi Zero or a full-sized Pi, some signals will need a lot of length-matching and some will need none at all \u2013 that\u2019s normal, such is the Raspberry Pi GPIO pinout, just remember to match them. Include both series resistors and pullup resistors, as asked by the ESP-Hosted documentation.<\/p>\n<p>Apart from the SDIO signals, you\u2019ll want control over EN, so the driver can reset the ESP32 into a known-good state before starting communications. For that matter, you can also wire up EN to a classic RC circuit used for OLED displays, if you\u2019re short on GPIOs and don\u2019t mind \u2013 the driver wants EN supplied, but it doesn\u2019t require-require it, you can just provide <code>resetpin=-1<\/code> to the driver init script if you take care of EN switching on your own.<\/p>\n<figure id=\"attachment_1164095\" aria-describedby=\"caption-attachment-1164095\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1164095\" data-permalink=\"https:\/\/hackaday.com\/2026\/10\/07\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/hadimg_esphosted_2\/\" data-orig-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png\" data-orig-size=\"1393,703\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"hadimg_esphosted_2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png?w=800\" class=\"wp-image-1164095 size-large\" src=\"https:\/\/i0.wp.com\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png?resize=800%2C404&#038;ssl=1\" alt=\"\" width=\"800\" height=\"404\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png 1393w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png?resize=250,126 250w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png?resize=400,202 400w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_2.png?resize=800,404 800w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\"><figcaption id=\"caption-attachment-1164095\" class=\"wp-caption-text\">Example of single-sided layout of both pullup and series resistors at once<\/figcaption><\/figure>\n<p>You don\u2019t need to worry about the BOOT pin. You do need to make sure there\u2019s sufficient 3.3 V power available, though: 300 mA to 400mA. The 3.3 V power rail on Raspberry Pi boards will generally be more than enough for powering your ESP32, but on other SBCs, you might end up adding an extra 3.3 V regulator to satiate the ESP32\u2019s 3.3 V appetite. Last but not least, expose the ESP32 USB port somehow, because you\u2019ll need it for flashing the firmware. Thankfully, the firmware flashing only needs to be done once. Personally, I put it on a 4-pin JST-SH with a QWIIC-like pinout, as you can see on the schematic above.<\/p>\n<h2>Build Firmware, Or Don\u2019t<\/h2>\n<p>There are <a href=\"https:\/\/github.com\/espressif\/esp-hosted-linux\/blob\/master\/docs\/porting_guide.md\" target=\"_blank\">three things you need to do.<\/a> Make sure your SBC\u2019s SDIO (or SPI) interface is freed up, compile and flash your ESP32 firmware, then compile and load the driver. Not necessarily in this order, of course, but you need all three.<\/p>\n<p>Freeing up the SDIO interface is relatively easy on Raspberry Pi: <a href=\"https:\/\/github.com\/espressif\/esp-hosted-linux\/blob\/master\/docs\/setup.md#22-sdio-configuration\" target=\"_blank\">it\u2019s a quick <code>config.txt<\/code> job.<\/a> You only need to remap the SDIO pins, and if there\u2019s an existing WiFi card, also disable its Bluetooth. The \u201cBluetooth disable\u201d part is likely required because the onboard WiFi card\u2019s firmware is uploaded over SDIO, so the Bluetooth part of the card wouldn\u2019t function, anyway. It also frees up the UART console port on the Pi, which can be incredibly helpful if you need to debug your WiFi interface bringup! By the way, I have my doubts that the <code>poll_once=off<\/code> SDIO overlay parameter is required, and it does seem to spam up <code>dmesg<\/code>. If you ever need to get rid of that spam, removing that poll option might be a good start.<\/p>\n<p>On other SBCs, you might struggle with SDIO, but as long as it is not too obscure, it shouldn\u2019t be too big of a problem. If you\u2019re rolling your own SBC, and if you have a devboard, feel free to wire up a microSD socket to the SDIO pins, add pullups as required, and debug your SDIO interface bringup using a spare microSD card. If a microSD card works, then in all likelihood, the ESP32 will work too.<\/p>\n<p>ESP32 firmware compilation is also relatively easy. Maybe you don\u2019t want to compile the ESP32 firmware on your SBC, since it might run out of RAM and lock up while executing <code>cmake<\/code>. On a Pi Zero, the lockup is basically guaranteed. Simply use your desktop computer to compile the firmware and avoid the hassle. Alternatively, you can skip all of that and <a href=\"https:\/\/github.com\/espressif\/esp-hosted\/releases\" target=\"_blank\">download a firmware from the Releases tab<\/a> on Github. Those are currently kept in the legacy repo, but I\u2019m assuming eventually new releases will be put into the <code>esp-hosted-linux<\/code> repository, so look out.<\/p>\n<p>Make sure that your driver is built from the same <code>esp-hosted<\/code> git repository version as your ESP32 firmware, using <code>git log<\/code> or the like to check the last commit. Otherwise, the driver will throw a warning and refuse to load, you can patch out that warning if you think the difference is too minor, but that\u2019s at your own risk.<\/p>\n<h2>Drivers Done In Old-Fashioned Way<\/h2>\n<p>Now, the driver, you\u2019ll want to compile the driver on the SBC itself, unless you cross-compile. The <code>rpi_init.sh<\/code> script compiles and loads the driver, and it also contains some notes you might find helpful. If you have an SBC with 512 MB of RAM or less \u2013 open the <code>rpi_init.sh<\/code> in the editor, <a href=\"https:\/\/github.com\/espressif\/esp-hosted-linux\/blob\/master\/host\/rpi_init.sh#L65\" target=\"_blank\">find the <code>make -j8<\/code> command,<\/a> and replace it with <code>make -j2<\/code> (or even <code>-j1<\/code>). Otherwise, your compilation process will run out of RAM and lock up your SBC.<\/p>\n<p>Do you have everything connected by now? If you have SDIO properly configured and firmware has been flashed, the driver will just load successfully and a <code>wlan<\/code> interface will appear. Problems with that? Check <code>dmesg<\/code> to see the debug output of the driver module. I enjoy running <code>dmesg -Hw<\/code> in a spare terminal window, or just in the background.<\/p>\n<p>Now, the <code>rpi_init.sh<\/code> script is a great tool for debugging, but it\u2019s a tool you\u2019ll want to shed when running the module longer-term, in large part because it recompiles the module every time it\u2019s run. In the same directory, you\u2019ll find <code>esp_sdio.ko<\/code> \u2013 that\u2019s the Linux module you just compiled. Do this:<\/p>\n<p><code>sudo cp esp_sdio.ko \/lib\/modules\/<code>uname -r<\/code>\/kernel\/drivers&gt;\/code&gt;<br \/>\n<code>sudo depmod -a<\/code><\/code><\/p>\n<p>It may be a hack, but at least now, you can <code>modprobe esp_sdio<\/code>, instead of <code>insmod<\/code> from the script directory. You can then also put the module name (<code>esp_sdio<\/code>) into <code>\/etc\/modules<\/code> to have it auto-load on every boot, which is way better than re-running the script and the associated recompile.<\/p>\n<h2>Workable And Very Promising<\/h2>\n<figure id=\"attachment_1164099\" aria-describedby=\"caption-attachment-1164099\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1164099\" data-permalink=\"https:\/\/hackaday.com\/2026\/10\/07\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/hadimg_esphosted_3a\/\" data-orig-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg\" data-orig-size=\"1943,1039\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"hadimg_esphosted_3a\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg?w=800\" class=\"wp-image-1164099 size-large\" src=\"https:\/\/i0.wp.com\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg?resize=800%2C428&#038;ssl=1\" alt=\"\" width=\"800\" height=\"428\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg 1943w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg?resize=250,134 250w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg?resize=400,214 400w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg?resize=800,428 800w, https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_3a.jpg?resize=1536,821 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\"><figcaption id=\"caption-attachment-1164099\" class=\"wp-caption-text\">Forgot about pullups and had to improvise<\/figcaption><\/figure>\n<p>There are some things to be desired, of course. The module should be properly integrated into device tree interfaces, for one, so that it doesn\u2019t need to be added into <code>\/etc\/modules<\/code> and can instead be auto-loaded by an overlay. It also should get a <code>dkms<\/code> integration, in the same way the esp8089 driver was distributed. Currently, you have to recompile it and re-add the module into the kernel modules directory after every kernel upgrade, and <code>dkms<\/code> would cut that right out. Throughput <a href=\"https:\/\/github.com\/espressif\/esp-hosted-linux#5-throughput-performance\" target=\"_blank\">is alright<\/a>, you can get 40 Mbps to 50 Mbps at default SDIO frequency. If you think your hardware is good enough and can push SDIO limits further, there\u2019s <a href=\"https:\/\/github.com\/espressif\/esp-hosted-linux\/blob\/master\/docs\/porting_guide.md#242-sdio\" target=\"_blank\">some dials and knobs<\/a> you can tweak!<\/p>\n<h2>Cool Trick, But Why?<\/h2>\n<p>So why talk about this? There are four reasons that I find important. First, this is the only WiFi card I know that can pass Bluetooth through over SDIO instead of tying up a UART port, which is especially helpful for Pi Zero form-factor boards. That alone is pretty cool.<\/p>\n<p>Second, while the code is imperfect and there is a heap of pull requests one should take a look at, <code>esp-hosted<\/code> does handle hardware power switches in my project! There are no kernel module crashes or failures as the ESP32 loses power, it disconnects and reconnects seamlessly, the hardware switch just works, and I find that endearing.<\/p>\n<p>The next two reasons are both about this being an essentially open-firmware WiFi card. The ESP32 firmware isn\u2019t fully open, as the RF bits are traditionally closed-source and get compiled in as blobs, but there have been <a href=\"https:\/\/hackaday.com\/2024\/01\/15\/reverse-engineering-the-esp32s-wifi-binary-blob-with-a-faraday-cage\/\">some<\/a> <a href=\"https:\/\/hackaday.com\/2024\/05\/27\/the-long-road-towards-reverse-engineering-the-esp32-wi-fi-driver\/\">mighty <\/a><a href=\"https:\/\/hackaday.com\/2024\/12\/28\/38c3-towards-an-open-wifi-mac-stack-on-esp32\/\">projects<\/a> trying to liberate the proprietary bits of the ESP32 WiFi stack. As more and more people get a stab at it, it\u2019s entirely possible we could turn the omnipresent ESP32 modules into fully open-source firmware Linux WiFi cards, incredibly cheap and abundant anywhere, too. Truly hacker-friendly WiFi cards that last, what\u2019s not to love?<\/p>\n<p>The final reason is the most fun of all, and doesn\u2019t even need the de-proprietarization. After SDIO wireup, the ESP32 is left with many free pins, including ones with high-speed SPI. Who\u2019s to say that we can\u2019t wire up a LoRa modem to it and run Meshtastic\/Meshcore\/etc.?\u00a0 Since the firmware is mostly open, in theory, any code could be added within the WiFi\/BT gaps, any meaningful data then forwarded to the Linux host. It also doesn\u2019t escape my eye that new ESP32 chips support Zigbee and Thread natively, and exposing that to Linux is only a matter of code, too. To me, that\u2019s the best part, thinking that one day we could turn the ESP32 into a true Swiss army knife communications co-processor for any Linux-running CPU.<\/p>\n<\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_10281\" class=\"pvc_stats total_only  \" data-element-id=\"10281\" style=\"\"><i class=\"pvc-stats-icon large\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<div id=\"dev95-1892038911\" class=\"dev95-after-content dev95-entity-placement\"><p style=\"text-align: center;\"><strong>Finally, a link that actually works for your region and device! \ud83c\udf0d Get instant access to the top exclusive offers tailored just for you right now. Don&#8217;t miss out, click here! \ud83d\udc47<\/strong><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" data-complete=\"true\" data-copy-service-computed-style=\"font-family: Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(10, 10, 10);\" \/><a href=\"https:\/\/www.profitableratecpmnetwork.com\/uzeja8ahze?key=bc876be53d6ad0ff6370ab8ea030e479\"><strong>\ud83d\udd17 [Click here]<\/strong><\/a><\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>A laptop with no wireless connectivity feels like a rarity \u2013 but when you shop for powerful Linux single-board computers (SBCs), it is pretty common to see one skimp on WiFi. At the same time, current wireless cards can leave<\/p>\n<div class=\"hosteria-entry-more\"><a href=\"https:\/\/dev95.site\/ar\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/\" class=\"no-underline font-light  group-hover:text-primary-800 dark:group-hover:text-primary-300 py-1\">Read more &gt;&gt;&gt;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_10281\" class=\"pvc_stats total_only\" data-element-id=\"10281\" style=\"\"><i class=\"pvc-stats-icon large\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fp_fajr_begins":"","fp_fajr_iqamah":"","fp_dhuhr_begins":"","fp_dhuhr_iqamah":"","fp_asr_begins":"","fp_asr_iqamah":"","fp_maghrib_begins":"","fp_maghrib_iqamah":"","fp_isha_begins":"","fp_isha_iqamah":"","fp_midnight":"","fp_midnight_name":"","fp_sunrise":"","fp_single_prayer_begins_title":"","fp_single_prayer_iqamah_title":"","fp_prayer_times_for_today":"","fp_hijra_date":"","fp_fajr_name":"","fp_dhuhr_name":"","fp_asr_name":"","fp_maghrib_name":"","fp_isha_name":"","fp_sunrise_name":"","fp_currentDate":"","fp_current_time":"","fp_current_title":"","fp_current_location":"","fp_masjid_name":"","fp_prayer_title":"","fp_next_prayer_iqamah_time":"","fp_next_prayer_iqamah_title":"","fp_next_prayer_begins_time":"","fp_next_prayer_begins_title":"","fp_next_prayer_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[37],"tags":[],"class_list":["post-10281","post","type-post","status-publish","format-standard","hentry","category-posts"],"a3_pvc":{"activated":true,"total_views":2,"today_views":2},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor - Dev95<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev95.site\/ar\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor - Dev95\" \/>\n<meta property=\"og:description\" content=\"A laptop with no wireless connectivity feels like a rarity \u2013 but when you shop for powerful Linux single-board computers (SBCs), it is pretty common to see one skimp on WiFi. At the same time, current wireless cards can leaveRead more &gt;&gt;&gt;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev95.site\/ar\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev95\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-08T07:53:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800\" \/>\n<meta name=\"author\" content=\"dev95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"dev95\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u062f\u0642\u064a\u0642\u0629\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/\"},\"author\":{\"name\":\"dev95\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\"},\"headline\":\"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor\",\"datePublished\":\"2026-10-08T07:53:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/\"},\"wordCount\":2194,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hackaday.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hadimg_esphosted_feat.jpg?w=800\",\"articleSection\":[\"Posts\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/\",\"url\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/\",\"name\":\"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor - Dev95\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hackaday.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hadimg_esphosted_feat.jpg?w=800\",\"datePublished\":\"2026-10-08T07:53:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hackaday.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hadimg_esphosted_feat.jpg?w=800\",\"contentUrl\":\"https:\\\/\\\/hackaday.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hadimg_esphosted_feat.jpg?w=800\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev95.site\\\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev95.site\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"name\":\"Dev95\",\"description\":\"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev95.site\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\",\"name\":\"Dev95\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Dev95\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\",\"name\":\"dev95\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"caption\":\"dev95\"},\"url\":\"https:\\\/\\\/dev95.site\\\/ar\\\/author\\\/mohammad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor - Dev95","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev95.site\/ar\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/","og_locale":"ar_AR","og_type":"article","og_title":"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor - Dev95","og_description":"A laptop with no wireless connectivity feels like a rarity \u2013 but when you shop for powerful Linux single-board computers (SBCs), it is pretty common to see one skimp on WiFi. At the same time, current wireless cards can leaveRead more &gt;&gt;&gt;","og_url":"https:\/\/dev95.site\/ar\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/","og_site_name":"Dev95","article_published_time":"2026-10-08T07:53:54+00:00","og_image":[{"url":"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800","type":"","width":"","height":""}],"author":"dev95","twitter_card":"summary_large_image","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"dev95","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"11 \u062f\u0642\u064a\u0642\u0629"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#article","isPartOf":{"@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/"},"author":{"name":"dev95","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298"},"headline":"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor","datePublished":"2026-10-08T07:53:54+00:00","mainEntityOfPage":{"@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/"},"wordCount":2194,"commentCount":0,"publisher":{"@id":"https:\/\/dev95.site\/#organization"},"image":{"@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#primaryimage"},"thumbnailUrl":"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800","articleSection":["Posts"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/","url":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/","name":"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor - Dev95","isPartOf":{"@id":"https:\/\/dev95.site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#primaryimage"},"image":{"@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#primaryimage"},"thumbnailUrl":"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800","datePublished":"2026-10-08T07:53:54+00:00","breadcrumb":{"@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#primaryimage","url":"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800","contentUrl":"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/09\/hadimg_esphosted_feat.jpg?w=800"},{"@type":"BreadcrumbList","@id":"https:\/\/dev95.site\/esp32-as-your-raspberry-pis-linux-wireless-co-processor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev95.site\/"},{"@type":"ListItem","position":2,"name":"ESP32 As Your Raspberry Pi\u2019s Linux Wireless Co-processor"}]},{"@type":"WebSite","@id":"https:\/\/dev95.site\/#website","url":"https:\/\/dev95.site\/","name":"Dev95","description":"\u0645\u0646\u0635\u0629 \u0634\u0627\u0645\u0644\u0629 \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0627\u0644\u0645\u0639\u0631\u0641\u0629\u060c \u062a\u0642\u062f\u0645 \u0645\u062d\u062a\u0648\u0649\u064b \u0645\u0648\u062b\u0648\u0642\u0627\u064b \u064a\u0644\u0628\u064a \u062a\u0637\u0644\u0639\u0627\u062a \u0627\u0644\u0642\u0631\u0627\u0621 \u0648\u0627\u0644\u0645\u0647\u062a\u0645\u064a\u0646.","publisher":{"@id":"https:\/\/dev95.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev95.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/dev95.site\/#organization","name":"Dev95","url":"https:\/\/dev95.site\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Dev95"},"image":{"@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298","name":"dev95","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","caption":"dev95"},"url":"https:\/\/dev95.site\/ar\/author\/mohammad\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/10281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/comments?post=10281"}],"version-history":[{"count":0,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/10281\/revisions"}],"wp:attachment":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media?parent=10281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/categories?post=10281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/tags?post=10281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}