Posts Tagged ‘firmware’

Need to Program Many ESP-WROOM-32 / ESP-32S Modules? This Board Should Help

September 18th, 2017 1 comment

We’ve just published an article about a 3D printed jig to program some ESP8266 light bulbs, but as I watched Andreas Spiess’s latest video about ESP32 boards, he showed a board specifically designed to flash firmware to ESP-WROOM-32 or/and ESP-32S modules, which could be useful if you have many to program.

Click to Enlarge

The acrylic base does not appear to be offered by all vendors, as some use some standoffs instead to lift the board up. You just need to insert your compatible ESP32 module in the board, flash the firmware it, take it out, and more to the next module. It can also be used as a development board since it exposes I/Os via three 14-pin headers, comes with a on/off button, reset and program buttons, as well as a micro USB port for power, programming and debugging

I first found it on Banggood, where it is sold for $14.99 shipped, the best price at the time of writing, but you can also purchase it on Amazon, eBay, Aliexpress, and I’m sure other websites. Just search for “ESP32 Test Board Small Batch Burn Fixture”.

Designing a 3D Printed Jig to Flash Firmware to ESP8266 based Light Bulbs

September 18th, 2017 6 comments

Karl here. I have to say that my favorite part of 3D printing is designing things from scratch. Recently a reader was asking about a way to flash a lot of Ai Lights on a project he was working on. I suggested 3D printing a jig that pressure fits pins. He didn’t have a printer, and we exchanged contact information and he sent me one of the lights and some pogo pins from Amazon.

Click to Enlarge

Design in Fusion 360

I started by taking a picture of the light to get my pin placement. I set a scale by measuring a known distance then printed and tested. It took about 3 iterations to get them to line up in real life. Keep in mind camera lenses distort reality and knew It would take a couple times. I would just let a few layers print then stop and line everything up. I had a mostly working prototype in a couple hours. I did have to go back and add an additional pin after I found out that 100 needed to be grounded when powering up so took a couple more tries to line that pin up. The first couple times pressing into place it is very snug. After 3 or 4 times it becomes easier to remove.

Click to Enlarge

Click to Enlarge

Click to Enlarge

First Iteration

Building the Jig

I built this thing too many times, but I finally settled a reproducible method. First print at least 2 copies of the jig. Insert pins in jig then place on 2ng jig with pins up. 2nd jig is only for alignment and to keep straight. Once aligned super glue the pins to the jig and let dry. Do not get glue inside the pins or they will get stuck. When I was first putting this together I was doing it the other way, and glue kept on seeping down to the pins and making them stick. This method of gluing worked the first time.

After gluing solder on your leads, use some shrink tube, and make sure to connect pin 100 to the ground. I thought it needed to be temporary, but I forgot to disconnect one flash. I test flashed the light about a dozen time with 100% success.

The method I used to connect is with the leads connected to PC, I press the jig in place slightly offset clockwise a couple degrees. Press in, then turn counter clockwise until you hear a click. When it clicks into the pads and PC dings it is ready to flash.

This was a fun little project and if you would like to print it you can find it here.

Click to Enlarge


Review of Sonoff RF Bridge, Sonoff 4ch Pro, and Sonoff POW with Sonoff-Tasmota Firmware

September 12th, 2017 No comments

Karl here. Today we are going to look at 2 new and one older Sonoff devices.

I spent very little time with the stock firmware on the device. I don’t like the fact that an Internet connection is needed, and I am not in control. As of the time of this writing I found the Ewelink was not configurable enough to meet my needs. There is one feature that is really nice that I could easily see keeping stock firmware. It is the Alexa Skill. It worked. I am also currently reviewing Vobot Smart Alarm Clock with Alexa integration and had no trouble controlling the Sonoff devices with Alexa. But unfortunately I am lazy and want everything automatic so I can’t keep it. With the RF bridge I was unable to trigger a light from a motion sensor. In comes Arendst ‘s Sonoff-Tasmota firmware  to the rescue. It gets better all the time. It is dead simple, and so configurable now. He continues to add features and devices.

RF Bridge

You may have seen my previous article building a 433toMQTTto433 bridge to use cheap 433mhz devices. I never did build a case for it, and it’s a little bit of an eyesore. When I found out about a nicely packaged one, I was excited to check it out. Like I stated previously, it didn’t work as I anticipated and was glad when I found out Arendst got one as well. He has a good wiki with on the github page and all the needed information to flash and configure so I won’t go into it. It flashed uneventfully. I was a little scared by the design that it was only going to be able to receive 16 individual codes and pass onto MQTT but that is not the case. It passes everything it receives. You can only send 16 different codes right now which need to be saved ahead of time. So after monitoring the MQTT server I ran into first hurdle. I was getting this example json value.

And actually I found after much frustration that “Data” is a nested json value. This took a while for me to figure out. After that it was relatively easy to parse in Home Assistant and move my automations over from the previous bridge.


From the previous article payload off is a made up value and is only used internally to turn the sensor off after a minute.

Just a couple gripes about the rf bridge which are superficial. There is a noticeable increased delay over the homemade bridge from the time it senses a trigger until the light comes on. It is only about half a second but a noticeable difference. And my wife pointed quickly that the led indicating it is on is very bright. I might remove it or install a varistor to tone it down. The receiver does not appear to be as good or might just be that it is in a case or my positioning. I am still able to cover my house but the trigger on my mailbox across the street doesn’t trigger. It was hit or miss on the old one but never triggers now.

FYI I am still running off the same batteries I initially installed in the 433mhz motion sensors over 6 months ago.

Sonoff 4ch Pro

Click to Enlarge

Click to Enlarge

Click to Enlarge

I also received the Sonoff 4ch Pro with 433mhz transmitter remote.

I tested it with stock Ewelink software and all tests done before worked. I quickly installed the alternative firmware from above, and again no loss in functionality. I was still able to pair and clear the 433 MHz remotes. It is weird that it does not indicate with a light that it is in pairing mode as of right now but when you press the button the light blinks when it is learned. The inching, self locking and interlock continued to work as well via switches. I can definitely see this being used for lighting, or if you needed to control multiple items in close proximity. Maybe simple access control. Possibilities are endless. On the product page, it shows wiring with motors as well which looks cool. If I find a unique or interesting project I will share.

The 4 button transmitter is very powerful. It transmits further than any of my other 433mhz devices.

Sonoff POW

Click to Enlarge

A buddy of mine gave me a Sonoff POW to play with. The Sonoff POW is very similar to the Sonoff Basic, but has the ability to measure power usage. I didn’t bother testing the stock software. I went straight to Arendst software. I didn’t have anything to measure power before and this is a welcome addition to my tools arsenal. I don’t need super accurate readings just a good idea what the draw is. I installed a light rated at 75w to test and got the results below. If a more accurate load is available you can calibrate the POW and instructions are in the Wiki.

OTA Firmware

Who wants to drag all their devices back to the PC and flash new firmware? I finally checked it out. It is really simple to do.

First uncomment BE_MINIMAL then export compiled Binary. After a while you will have a bin file in your sketch folder.

Click to Enlarge

After uploading comment BE_MINIMAL, upload again. The 2 steps procedure is because he is running out of space with all the features. He is trying to reduce the code down, and hopefully make this a single step in the future. If you have a web server there are instructions to automate this.


I would like to thank Itead Studio for sending the Sonoff RF Bridge, 4ch Pro and 4 button 433 MHz transmitter. They keep expanding their Sonoff line and make them hacker friendly. I would also like to thank Arendst for his tireless work on Sonoff-Tasmota firmware. If you are just looking to control your lights via Alexa, and don’t mind requiring the Internet to be available the stock firmware might work for you.

Tevo Tarantula 3D Printer’s Large Dual Extruder Auto Bed Level Sensor Firmware Upgrade

July 17th, 2017 No comments

What a title. Just a quick update on the Tevo I am reviewing. I didn’t want to upgrade the firmware, but I read so many posts on Facebook about it I took the plunge. I didn’t like was the firmware that came with it. It only did a 3 point level, and seemed to go outside the build plate dimensions. The first 2 printers I have reviewed were Marlin, so it was what I am most familiar with.

I used Jim Brown’s Marlin fork as a base. It was missing dual extruder and auto level sensor in the pre-configured profiles. It took a while, but I was able to add the extra features. The auto bed level sensor connects to where the normal Z end stop sensor is connected. I would like to warn you to warm your bed for 5 minutes for the best reproducible results. I tested several times from cold to hot, and can see variances. After it is warm, it does well and only varies in the thousands of a mm. I also found out I made and dumb mistake, and I never set the power supply to my country’s proper voltage. It was messing everything up including the auto level.

Testing the auto level as it warms up. You can see variances and the metal expands.

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 +0.340 +0.292 +0.317 +0.380
Recv: 1 +0.418 +0.342 +0.338 +0.392
Recv: 2 +0.494 +0.408 +0.381 +0.396
Recv: 3 +0.545 +0.457 +0.442 +0.499

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 +0.307 +0.277 +0.308 +0.379
Recv: 1 +0.392 +0.327 +0.336 +0.372
Recv: 2 +0.492 +0.390 +0.367 +0.391
Recv: 3 +0.519 +0.447 +0.446 +0.488

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 +0.302 +0.254 +0.298 +0.367
Recv: 1 +0.369 +0.313 +0.321 +0.369
Recv: 2 +0.459 +0.376 +0.348 +0.380
Recv: 3 +0.492 +0.431 +0.424 +0.473

Here you can see after letting it warm up they are relatively consistent.

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 +0.019 -0.302 -0.492 -0.598
Recv: 1 +0.108 -0.259 -0.490 -0.618
Recv: 2 +0.186 -0.202 -0.468 -0.625
Recv: 3 +0.221 -0.171 -0.444 -0.606

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 +0.013 -0.302 -0.488 -0.591
Recv: 1 +0.097 -0.261 -0.488 -0.615
Recv: 2 +0.173 -0.206 -0.466 -0.614
Recv: 3 +0.205 -0.177 -0.442 -0.601

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 +0.004 -0.299 -0.483 -0.576
Recv: 1 +0.094 -0.255 -0.490 -0.615
Recv: 2 +0.163 -0.210 -0.466 -0.612
Recv: 3 +0.190 -0.186 -0.445 -0.600

This is a 16 point level so it takes a little bit of time but I think it is worth it.

To help with setting your sensor height you may want to look here. But in retrospect it might not be necessary. Set your sensor height just barely above the nozzle height and adjust with the Z offset in the menu’s. First initialize your EEPROM under Control at the bottom. Then go to Control -> Motion Z-offset. A negative number brings the head down and positive up. Print a small cube see how much closer to the bed you need to be. Adjust the offset until you get a good distance. Then store with Control -> Store Settings to lock it in.

I tested movement in X, Y, and Z directions, and they were spot on as well as the extruders. I homed then did a 100mm move and checked with my caliper. This was done in all directions. For the extruder I disconnected the bowden tube, then heated up the hotend due to protection then extruded 100mm of filament.

Here are the 2 separate files. Full is full Arduino 1.6.8 portable setup and ready. Pretty much run it, connect printer and upload. The second is just the configuration files. If you need the configuration I assume a write up is not necessary.

  1. Full
  2. Only Configuration

First connect your printer to your PC, and let Windows find the drivers. In device manager you should see it show up under comm ports. The first time I plugged it in I had to right click and tell windows to update the drivers. It went to the web, and found and updated them. Next, start Arduino then navigate to the Marlin directory, then open Marlin.ino. Ensure you have the correct board, processor, and port selected, then press the arrow pointing to the right to upload.

Once uploaded add G28 to home then G29 in your slicer.

You’ll find the first part of review in “2017 Tevo Tarantula Dual Extruder 3D Printer Review – Part 1: Assembly and First Prints” post..

I would like to thank Gearbest for sending this printer. If you are interested, you can purchase it on their store for $418.59 includding worldwide shipping. If you use TEVODUAL coupon, price will go down to $349.99. Note that there are various models of Tevo Tarantula with 200×200 or 200×280 (large) beds, single or dual extruder, with or without auto-leveling, and the one reviewed here is the higher end model with all a large bed, dual extruder for bi-color prints, auto-leveling, and flexible filament.

How to Use Octoprint on Orange Pi Lite Board, Amlogic S905X and S912 TV Boxes

July 11th, 2017 12 comments

Karl here. This was article originally going to be how to setup Octoprint 3D printer server on an Orange Pi Lite. But after looking and running through the instructions it seemed like it would be too much so I created an img to simplify things. I also explored running Octoprint on an Amlogic S905x or S912 device and it turned out to be an even better solution. You get a case, power supply, and eMMC flash storage.

What is Octoprint?

I use Octoprint mainly for its ability to start and stop prints without having to use an sd card. Time lapse is also a nice feature. And one last thing is that I setup a pushbullet notification when it is complete. For a full list of features check out

What is needed?

Orange Pi Lite Kit – Click to Enlarge

Octoprint Setup

Common Instructions

  • Download Orange Pi Lite img from here and Amlogic img from here.
  • Burn to your micro SD card with Win32DiskImager, dd, or Etcher..


Login: root password: octoprint
Login: cnx password: cnx


Orange Pi Lite: orangeocto.local
Amlogic: amlogicocto.local

Amlogic Instructions

  1. Boot and find the update app
  2. Click Select
  3. Choose the
  4. Click Update
  5. Then Update again
  6. Once it boots log in with root and run “sudo /root/”
  7. Now we need to see if WiFi is working. Run “nmtui”. This should be self explanatory, and if you see your access point stop. Don’t bother to connect. Exit run “shutdown” wait for it shutdown, remove the SD card, and pull the power and power back on. You can skip the next few steps in this section.
  8. If you did not see your access point exit out of “nmtui” and run the command “sudo modprobe wifi_dummy” repeat looking for access point in step 7.
  9. If you still don’t see your access point run the command “sudo modprobe dhd” repeat looking for the access point in step 7.
  10. If you have to modprobe either to get wifi working once you boot from the internal storage log in with root and run the command “sudo nano /etc/rc.local” and add your “sudo modprobe xxxxxx“ command before exit 0. Cntrl X then y then enter to exit nano and save. Reboot and continue.

Orange Pi Lite Instructions

  1. Connect a keyboard and connect to a monitor or tv
  2. Login with root
  3. Run the command “sudo cfdisk /dev/mmcblk0”
  4. Delete /dev/mmcblk0p1 with the arrow keys
  5. Make a new one and it should fill in the full size of your sd card.
  6. Then finally write. It will prompt you are you sure and type out yes.
  7. Arrow over to quit and enter.
  8. Reboot with the command “sudo reboot” and wait for the Orange Pi to reboot.
  9. Log back in with root and run the command “sudo resize2fs /dev/mmcblk0p1
  10. Reboot again with the command “sudo reboot” and wait for the Orange Pi to reboot.

Remaining Octoprint detup instructions common to all devices

  1. Log back in and run the command “nmtui” to connect to your network. This should be self explanatory. After connecting to wifi if you choose to set a static IP address quit and go back in to nmtui and edit the connection to set the IP address. When setting the IP address suffix the IP address with a /24 to denote a subnet mask
  2. Finally quit and run the command “shutdown” and wait for it to turn off.
  3. Move the Octoprint server and connect to your printer.
  4. To log in open your browser and navigate to http://x.x.x.x:5000 or orangeocto.local:5000 or amlogicocto.local:5000.
  5. Run through the setup it is self explanatory and in settings add /home/pi/OctoPrint/ as your git update path.


I really recommend setting static IP addresses through your router if it has the ability. Or you can use the .local address above if you have zeroconf/avahi on your machines .

I also recommend the Amlogic server. You get a board, enclosure, power supply, and eMMC flash to run off of. You still need an SD card to get started, but it is not permanent. I ran into trouble on Orange Pi Lite, but it does work. I think the Orange Pi Lite board I received is flakey.

You have a lot of headroom on these to provide other services, e.g.. home automation, media server with no transcoding, NAS, Minecraft server, or anything else that runs on Linux.

Big thanks to balbes for making Linux work,  Jean-Luc, and Armbian forum members who tested Orange Pi Lite version.

Tested on

  • X96 1/8 S905X with wifi dummy
  • X96 2/16 S905X with wifi dummy
  • Tanix TX 5 Pro S905X with dhd
  • Yoka KB2 S912 with wifi dummy

It looks like Realtek (RTLxxxx) WiFi chips need the wifi dummy, and Ampak (apxxxx) chips need the dhd.


Cura 2.6 came out just just recently with the ability to connect directly to Octoprint. It is really cool feature.

To setup login to octoprint and grab API key.

Then open Cura 2.6 and go to manage printers. Highlight printer and press Connect Octoprint.

Add an Octoprint instance, set preferences, and input API key.

Now you can start prints directly from Cura and monitor prints.

Click to Enlarge

I would really like to thank Gearbest for sending the Orange Pi Lite board, power supply, and SD card, as well as Amlogic boxes and 3D printers from previous reviews. If you decide to do this project yourself, please think about ordering from Gearbest through our links. It helps us out to continue to experiment with different hardware and provide these articles.

Sonoff B1 is an $18 Hackable WiFi RGB LED E27 Light Bulb based on ESP8285 WiSoC

July 4th, 2017 6 comments

Earlier this year, I wrote about an ESP8266 based RGB LED “AI Light” lightbulb that was hacked to run ESPurna open source firmware. That’s all good, except some people tried to get one, and ended with a different hardware. So if you’d like something that’s more of a “sure thing”, ITEAD Studio has designed Sonoff B1 dimmable RGB LED E27 light bulb based on ESP8285 processor, and with a “4 pads” to allow for custom firmware flashing.

Sonoff B1 hardware specifications:

  • Typical Lumen Output – 600lm
  • Beam Angle – 120 degrees typ.
  • Color Temperature –  2800K-6500K & RGB full color
  • Connectivity – WiFi 802.11 b/g/n @ 2.4GHz
  • Power Supply – 90-260V AC 50/60Hz via E27 base
  • Power Consumption – Light off: 0.5W Max; rated power: 6W
  • Temperature Range – Operating: 0ºC~ 40ºC; storage: -20ºC~ 80ºC
  • Operating Humidity – 5%-90% RH

Sonoff B1 with stock firmware can be controlled using the usual eWelink Android / iOS app to turn the light on and off, define timers, select the color, and/or dim the light. The aopp also supports 4 scenes for resting, reading, partying and casual use that you can customize as you wish. The LED bulb is also compatible with Amazon Alexa, and Google Assistant services so you can use voice commands to control the light instead. Bear in mind that you may need to wait a little longer to get custom firmware working for it, unless you are willing to get your hands dirty. But this looks so similar to “AI Light”, that I’d expect a port not to be too difficult.

You can purchase Sonoff B1 light bulb for $18 + shipping on ITEAD Studio website.

H3Droid Android Firmware is Designed for Allwinner H3 Boards & Devices

June 30th, 2017 4 comments

Allwinner H3 boards such as Orange Pi PC and NanoPi NEO are mostly interesting due to their ability to run Linux and control I/Os, and while they also support Android, most people wanting to run Android are better served with TV boxes instead, as they come with enclosure, power supply, HDMI cable, and an IR remote control. That does not mean there’s no use case for Android on development boards, and that’s why probably KotCzarny, and other developers, have decided to work on H3Droid project to provide better Android images for Allwinner H3 boards and devices than the firmware released by manufacturers.

Some of the improvements include “sane DRAM/CPU settings”, support for Custom recovery system, Google Play Store and more USB network adapters, as well as the removal of apps and feature unusable for people outside out China. You’ll also be able to access the board via SSH if you add your public key to the image. You’ll need a Linux computer (or board) to install the image, as it relies on an installer and there are a few steps to complete the installation on the SD card:

  1. Download image from one of the mirrors
  2. Extract the tar file (tar -xf filename.tar) in a folder with enough space to hold the contents (~450MB)
  3. Update 00_conf file to set OUTDEV variable. It should contain either device or plain file path (ex: OUTDEV=/dev/mmcblkX or OUTDEV=/dev/sdX or OUTDEV=/some/path/to/somefile.img)
  4. Copy your PUBLIC SSH key(s) to the install folder (Optional, but required to have root access via SSH) (ex: cp /root/.ssh/ ./)
  5. Execute to write image to your SDCard or somefile.img (in case of a file, you can use it later with dd/etcher/winimager to write to real device)
  6. Note: run only 10.. script, other files are meant to be called from it in order. (for example 20.. prepares partitions.dat used in 30..)

[Update: A Windows installer called H3ii is now available]

The FAQ indicates that the image has been tested on Orange Pi PC, Orange Pi Plus 2E, Orange Pi PC Plus, and Orange Pi Lite, but it should also work on other Allwinner H3 boards as long as you change the FEX file (script.bin). Also note that the first boot may take a while, and H3droid is still considered beta with for example Bluetooth, and power off not working yet, and a few other bugs still lingering. If you try the image on your board, you can provided feedback on #H3droid IRC channel on Freenode, or via the website. There’s also a forum thread on Orange Pi forums.

Canonical Releases Ubuntu Core 16 for Raspberry Pi 3 Compute Module

June 29th, 2017 No comments

Now that Canonical has refocused its development efforts on Cloud and IoT, Ubuntu Core has become even more important for the company, which has just released Ubuntu Core 16 for the Raspberry Pi 3 Compute Module, which is better suited for industrial projects than Raspberry Pi boards, for example thanks to the more resilient built-in storage of CM3 module.

Ubuntu Core was already supported on Raspberry Pi 2 & 3, Intel Joule, DragonBoard 410c, Intel NUC, and Samsung Artik boards, as well as KVM to run Ubuntu Core in a virtual environment.

One of the advantages of running Ubuntu Core is the availability of snaps and branded app stores, making it easy to provide updates, and promote app for the platform. Screenly is one commercial project that will take advantage of Ubuntu Core on CM3 module for their digital signage applications. You’ll find instructions to get started with Ubuntu Core on Raspberry Pi 3 Compute Module on Ubuntu Developer website.