ESP32’s Freedom Output Lets You Do Anything

The ESP32 is Espressif’s new wonder-chip, and one of the most interesting aspects of its development has been the almost entirely open-source development strategy that they’re taking. But the “almost” in almost entirely open is important — there are still some binary blobs in the system, and some of them are exactly where a hacker wouldn’t want them to be. Case in point: the low-level WiFi firmware.

So that’s where [Jeija]’s reverse engineering work steps in. He’s managed to decode enough of a function called ieee80211_freedom_output to craft and send apparently arbitrary WiFi data and management frames, and to monitor them as well.

This ability is insanely useful for a WiFi device. With low-level access like this, one can implement custom protocols for mesh networking, low-bandwidth data transfers, or remove the requirement for handshaking entirely. One can also spam a system with so many fake SSIDs that it crashes, deauth everyone, or generally cause mayhem. Snoop on your neighbors, or build something new and cool: with great power comes great responsibility.

Anyway, we reported on [Jeija]’s long distance hack and the post may have read like it was all about the antenna, but that vastly underestimates the role played by this firmware reverse-engineering hack. Indeed, we’re so stoked about the hack that we thought it was worth reiterating: the ESP32 is now a WiFi hacker’s dream.

ESP32’s Dev Framework Reaches 2.0

We’ve been watching the development of the ESP32 chip for the last year, but honestly we’ve been a little bit cautious to throw all of our friendly ESP8266s away just yet. Earlier this month, Espressif released version 2.0 of their IoT Development Framework (ESP-IDF), and if you haven’t been following along, you’ve missed a lot.

We last took a serious look at the IDF when the chips were brand-new, and the framework was still taking its first baby steps. There was no support for such niceties as I2C and such at the time, but you could get both cores up and running and the thing connected to the network. We wanted to test out the power-save modes, but that wasn’t implemented yet either. In short, we were watching the construction of a firmware skyscraper from day one, and only the foundation had been poured.

But what a difference eight months make! Look through the GitHub changes log for the release, and it’s a totally new ballgame. Not only are their drivers for I2C, I2S, SPI, the DAC and ADCs, etc, but there are working examples and documentation for all of the above. Naturally, there are a ton of bugfixes as well, especially in the complex WiFi and Bluetooth Low Energy stacks. There’s still work left to do, naturally, but Espressif seems to think that the framework is now mature enough that they’ve opened up their security bug bounty program on the chip. Time to get hacking!

Continue reading “ESP32’s Dev Framework Reaches 2.0”

A Simple, Easy To Use ESP32 Dev Board

The ESP32 is Espressif’s follow-up to their extraordinarily popular ESP8266 WiFi chip. It has a dual-core, 32-bit processor, WiFi, Bluetooth, ADCs, DACs, CAN, a Hall effect sensor, an Ethernet MAC, and a whole bunch of other goodies that make this chip the brains for the Internet of Everything. Everyone has been able to simply buy an ESP32 for a few months now, but the Hackaday tip line isn’t exactly overflowing with projects and products built around this wonderchip. Perhaps we need an ESP32 dev board or something.

The Hornbill is the latest crowdfunding campaign from CrowdSupply. It’s an ESP32 dev board, packed with the latest goodies, a single cell LiPo charger, and a USB to serial chip that will probably work with most operating systems. The Hornbill comes in two varieties, a breadboardable module, with a breakout board that includes an SD card slot, sensors, an RGB LED, and a bunch of prototyping space. The second version is something like an Adafruit Flora with big pads for alligator clips.

While this isn’t the first ESP32 breakout we’ve seen — Adafruit, Sparkfun, and a hundred factories in China are pumping boards with this chip out — it is a very easy and inexpensive way to get into the ESP32 ecosystem.

Enabling Ethernet On The ESP32

The ESP32 is the latest and greatest wonderchip from Espressif. It’s a 32-bit, dual-core chip with WiFi, Bluetooth, and tons of peripherals such as CAN and Ethernet. For most of these peripherals, Espressif already has a few bits of example code, but [Frank Sautter] didn’t like the Ethernet implementation. The ‘stock’ code calls for a TLK110 Ethernet PHY, but that’s an expensive chip when bought in quantity one. A better chip would be the LAN8720, so [Frank] built a board to enable Ethernet on the ESP32 with this chip.

The ESP32 only needs a few components to wire it into an Ethernet network. Just a few resistors, capacitors, and an RJ45 jack will take care of most of the work, but because he’s taking the Ethernet ‘shield’ route, he needs to add his own Ethernet PHY. The Waveshare LAN8720 is the chip for this, but there’s an issue with the pin configuration of the ESP32. GPIO0 on the ESP32 has two functions — the first is pulling it low during startup for serial programming, and the second is the clock input for the EMAC function block. Some bit of circuitry must be devised to allow for both conditions to enable Ethernet on the ESP32.

[Frank]’s solution is to add a few pull-up and pull-down resistors to a breakout board, and use an unused GPIO pin to switch GPIO0 high during startup, but allows a crystal to grab it a bit later. It’s a hack, certainly, but it does allow for some much cheaper chips to be used to give the ESP32 Ethernet.

ESP32 WiFi Hits 10km With A Little Help

[Jeija] was playing with some ESP32s and in true hacker fashion, he wondered how far he could pull them apart and still get data flowing. His video answer to that question covers the Friis equation and has a lot of good examples of using the equation, decibels, and even a practical example that covers about 10km. You can see the video below.

Of course, to get that kind of range you need a directional antenna. To avoid violating regulations that control transmit power, he’s using the antenna on the receiving end. That also means he had to hack the ESP32 WiFi stack to make the device listen only on one side. The hack involves putting the device in promiscuous mode and only monitoring the signals being sent. You can find the code involved on GitHub (complete with a rickrolling application).

Continue reading “ESP32 WiFi Hits 10km With A Little Help”

ESP32 Tutorials

The ESP8266 has become one of those ubiquitous parts that everyone knows. However, the new ESP32 has a lot of great new features, too. If you want to take the ESP32 for a spin, you should check out [Neil Kolban’s] video series about the device. When we say series, we aren’t kidding. At last count, there were nineteen videos. Some are only a few minutes long, but some weigh in at nearly twenty minutes and the average is somewhere in between.

The topics range from setting up tools and using Eclipse and GDB. There are also tutorials on specific tasks like PWM, analog conversion, real-time operating systems, and more.

Continue reading “ESP32 Tutorials”

Hackaday Links: February 26, 2017

The MeArm Pi is a fantastic little robot kit that was the first place winner of the Enlightened Pi contest here on Hackaday. It’s crushing the Shitty Robots subreddit, and compared to the old MeArm kit, it’s much, much simpler to assemble. Ask me how I know. Now the MeArm Pi is a Kickstarter. This tiny robot arm is programmable in everything from Scratch to Perl. It’s highly recommended for children ages 8 to those wanting to recreate the opening scene of Pee Wee’s Big Adventure.

Almost a year ago, Lulzbot unveiled their latest 3D printer at the Midwest RepRap Festival. The Taz 6 is a great printer, but it’s a bit of a departure from their previous designs. The biggest change was the ‘brain box’, the controller box that encases the power supply, stepper drivers, and other associated electronics. Last year, Lulzbot said they would be selling this brain box by itself. It’s out now, ready for integration into your own self-built Taz, or a 3D printer of your own design.

Speaking of the Midwest RepRap Festival, it’s only a month away. It’s scheduled for March 25-26th at the Elkhart County 4-H Fairgrounds in Goshen, Indiana. Why the middle of nowhere? It ensures only the cool kids make it. For one weekend a year, Goshen, Indiana turns into the nexus of all things 3D printing. Don’t ask questions, just come. It’s free, although it would be cool if you kicked a few bucks over to the organizers.

[Clickspring] — the guy who built a fantastic clock in his home shop – is working on his second project. It’s an Antikythera Mechanism, and the latest episode is about building a gigantic gear. This is a unique approach to building an Antikythera Mechanism. [Clickspring] is still using modern tools, but he’s figuring out how this machine was built with tools available 2000 years ago.

Ogopogo, defeated by the Travelling Hacker Box.
Ogopogo, defeated by the Travelling Hacker Box.

Ogopogo. Champ is a picture of a log and Nessie is a toy submarine with a head made out of plastic wood. Ogopogo is a plesiosaur. Are you going to tell me a log – or at best a beaver – can kick the ass of a plesiosaur? Ogo. Pogo. Plesiosaur. The Travelling Hacker Box has conquered Ogopogo.

The ESP32 is quickly becoming the coolest microcontroller platform out there. You know what that means – Kickstarters! The FluoWiFi is Arduino-derived dev board featuring the ESP32 for WiFi, Bluetooth, and all the cool wireless goodies. This board also features an ATMega644p — basically the little sister to the ATMega1284p – for all your standard microcontroller Arduino stuff. It’s £25 for a board, which makes it pretty inexpensive for what you’re getting.