Archive by Author

New Product: BUB III


Future Technology Devices International makes many different TTL Serial to USB chips.
One model, the FT232R, is used in boards like the
The AdaFruit FTDI friend,
SparkFun FTDI Basic,
Modern Device BUB I and
Modern Device BUB II.
It’s not the cheapest, smallest, or most functional FTDI chip– just the most popular.

Presenting the BUB III, designed around the FT231X QFN-20, a 4x4x.075 (mm) chip.

You’ll notice it has a micro-USB jack, instead of a mini-USB one. Micro-USB jacks have a bad reputation for coming off boards, because they have less surface soldered on the board. We spent a fair amount of time finding a micro-USB jack with extra prongs and adding vias to reinforce the smd pads. Our destructive testing of a few of these boards shows that our efforts to toughen up the boards were successful. The jacks take quite a bit of muscle to break, and we think they will stand up to abuse as well as mini-USB jacks.

Moving the header to the bottom makes the board even smaller, and saves us time in production.
Both LEDs are reconfigurable (should you want to reconfigure them) with FTX-prog

It’s the BUB you love, smaller, slicker and reborn with an all-new brain.

Be one of the first 6 customers to use coupon code freebubiii and get a free BUB III with your order! (order total must be over $10)

Go check it out in the shop!

By Nadya on November 10, 2015.

New Product: SMD LCD 117


The original serial LCD117 was one of two boards that utilized a PIC chip running firmware developed by the late electrical engineer Peter Anderson (KZ3K), who taught in Baltimore, Maryland.

Peter made the firmware freely available before he passed away.
Both Brian Riley‘s K107 serial board and our LCD117 kit were based on these LCD117 chips.

We’ve sold several thousand of our through-hole serial LCD117 kits since we designed it in 2008, and received many orders for pre-assembled boards. Looking around the shop, most pre-assembled things are surface mount– it’s easier for everyone that way, as surface mount assembly is much cheaper. With that in mind, we created the SMD LCD117.

It receives TTL serial (optionally RS232) on one side and and drives an HD44780-compatible LCD, just as the older through-hole LCD117 kit did.

Solder on the included 3-pin and 16-pin headers and you’re ready to talk to any of our character displays, 3.3v or 5v.
We’ve also added an inverted logic mode, available via SMD solder jumper, for RS232 support.

Here’s how easy it is to use with Arduino– plug the RX line into your Arduino TX pin, and:

void setup() {
Serial.begin(9600); // 9600 baud is chip comm speed
Serial.print("?G216"); // set display geometry, 2x16 in this case
delay(500); // pause to allow LCD EEPROM to program

void loop() {
//Serial.print(“?y0?x00”); // cursor to beginning of line 0
Serial.print(“?f”); //clear the screen
Serial.print(“hello world”);
delay(1000); // refresh every second

In this configuration, Arduino Serial.<thing> debug statements print straight to the display!

Go check it out in the shop

Oh, one more thing. In honour of the debut of the SMD version, we’re putting the old through-hole LCD117 kits on sale. $8, matching the new SMD boards, while supplies last.

By Nadya on August 28, 2015.

Motion Plug code updates

Seb Madgwick IMU demoDemo by SebMadgwick

Our Dutch collaborator, Jean-Claude Wippler, recently pointed us to more polished code on GitHub for the MPU9250 (Motion Plug). This board uses the Invensense MPU9250 and includes 3 axis: accelerometers, gyros, and magnetometer. The software was written for something called rpicopter, work that appears to be significant group effort to us.

Screen shot 2015-04-01 at 2.39.57 PM

We have simplified the Arduino sketch and turned it into an Arduino library. The library only supports hardware I2C pins on whatever Arduino or Atmega chip you’re using, because it uses 400khz high speed I2C. There are settings for the low-pass filter which only affects the Gyro, as far as we can see. It default is 188Hz (defined in inv_mpu.cpp). The library also supports the Teensy.

The library outputs Yaw, Pitch, and Roll (standard orientation headings in the flying business) smoothed out in an almost magical way. This comes courtesy of some very fancy math functions.

“A quaternion is a four-dimensional complex number that can be used to represent the
orientation of a rigid body or coordinate frame in three-dimensional space.” says Sebastian O.H. Madgwick, who wrote the sensor fusion algorithms which bear his name.

In any case, all the quaternions are now hidden out of sight (in mpu.cpp), the library works really well, and the Arduino sketch is easier to read and modify.

By Nadya on March 31, 2015.

A hybrid power connector


You love screw terminals. You love barrel jacks.

These things seem so standard to you, so convenient, and you dream of their lovechild, a sweet hybrid of convenience, solder-free terminals coupled with that 2.1mm silver power plug that powers myriad devices (e.g. Arduinos and most of the boards we sell).

Believe or not – this slightly monstrous adapter lives!  Soldering standard barrel plugs onto wall-adapter and battery-pack wires is not rocket science, but there are two principle challenges:

  1. You have to put the barrel plug insulator onto the wires, in the correct direction, BEFORE you solder the wires.
    This simple act is cunningly easy to forget and evades me a fair percentage of the time I solder plugs on wall warts and guitar cords. So I end up with a perfect solder joint on the connector, and the insulating sleeve is lying on the bench, and I have to do it all twice.
  2. The other challenge is soldering well enough, and making tidy enough solder joints, so that the sleeve will slide down over the wires and screw on. This never bothers me anymore, but it often taxes my student’s soldering abilities.

This screw-terminal power plug eliminates both problems, perhaps at the expense of aesthetics. Also you don’t really have much strain relief with this jack, but it could easily be added with hot glue or epoxy putty. Perhaps at the further expense of aesthetics.

This also a great way to reuse all those power adapters in your junk box.

We have a short tutorial on using the plug below.



Unscrew the terminals,

Tin the wall-adapter or battery-holder wires, Tinning the wires is not strictly necessary but is a good idea.

Insert the wires into the adapter. The marked “+” terminal is positive. This is way more standard than center-negative. Center-negative adapters do exist, but not in Arduino land. Double check your specs and the polarity.


And screw the terminal back down again.


If you’re seeking permanence, the wires can be soldered in place, though it takes a while. (this iron is off, use a hot one for best results).



It’s ready to go in the shop here! It’s never too early for nerd gifts for the holidays.

By Nadya on September 30, 2014.

Modern Device and Facebook

Almost ten years ago, Modern Device was founded with the simple mission of making DIY electronics accessible to everyone.
Today, we’re happy to announce that we’ll be joining a similarly minded company, a company with the goal of bringing people together, a
company which is now a household name. We’ve always been happy to help people with their electronics projects, and we’re looking forward to
developing the products Mark and Cory proposed when they stopped by with an offer last Tuesday.
We can’t disclose anything quite yet, but let’s just say the day when you can “Like” something with your physical thumb isn’t too far off.
As for the Modern Device website, wiki, and forum, all will remain untouched– everything you love about Modern Device will remain. We’re excited
to see what opportunities this partnership produces.

Keep hacking!

Paul, Jeffrey, Noah, and the Modern Device toaster.

By Nadya on April 1, 2014.

Debian on the HP 110-210


We have a GNU/Linux box in the corner at Modern Device, it’s
an HP Pavilion 7955, an ancient machine, and it runs a suite of
bash scripts which set fuses and flash firmware using
avrdude and open terminals using screen. It has streamlined
the testing process for many of our products. It has also held up
for about a couple years since its conversion from Windows XP.

On Wednesday, we came in to Modern Device to find it refusing to boot
(kernel panicking), complaining about ext4 issues. We figured its drive
had died after all these years, we’d just boot into GNU/Linux from
another device, copy over the production scripts, drop in a
new machine, install Debian, and be ready to
go. A process which an optimistic person might assume would take
around half an hour, and I figured it might take around three.

Initial hangups

Things were, of course, not that easy. The Pavilion would not
boot from USB, so Paul went to Staples and bought some CD-Rs.
While he was there he picked up the the lowest cost box in sight,
an HP 210-110 for $300, slated as the replacement
for our now-dead production Debian box.
We soon learned that the DVD-ROM drive didn’t support CDs, and
the CD drive was broken. Paul ducked into the next room and
returned with an ancient eMachine, running windows XP.

At this point I hoped beyond hope that the HP 210-110
would be both new enough to boot off USB, but old enough to support IDE.
No such luck; it’s a netbook in a bulky case.

I’d rather not touch Windows XP, so I tried to boot the eMachine off USB–
which didn’t work either. I tried instead booting off a CD, but it turns
out the eMachine’s single lite-on combo drive was also completely dead.

Data recovery

At this point we were saved by ext2fsd, a filesystem driver for Windows
capable of reading ext4 drives. Ext2fsd was written by someone whose
idea of a Windows installer is a .bat script, which took me a little
while to figure out, but once I ran setup.bat in cmd, everything worked
fabulously– we installed the old HD in the eMachine and copied
the production scripts to a USB drive.

Installation on the new machine

The HP 110-210 doesn’t have onboard WiFi, so I shared the connection
from the nearby production Mac, which acted very well in its capacity
as a mentor for the confused fledgling reincarnation of the Debian machine.

At this point, I figured everything would be easy. A brand new $300
machine should be a breeze to throw Debian on, right? And we could
even get a Windows 8 refund, as we didn’t use it for anything.

With this misconception, I downloaded the Debian net install iso, copied
it to a flash drive from Mac OS:

diskutil list # Figure out which disk is the flash drive, in our case, disk3
dd if=debian-7.4.0-amd64-netinst.iso of=/dev/rdisk3 bs=1m # OSX uses lowercase m

Disabling secure boot

Modern machines come with a piece of software which sits on top of BIOS
called UEFI (now usually shortened to EFI) which prevents GNU/Linux
installation by default. To disable it on the HP 110:

  • Mash the F10 key until you get into the BIOS
  • Go into the Secure Boot menu (Security -> Secure Boot Configuration)
  • Turn off Secure Boot and Fast Boot
  • leave Legacy Support off, or Debian may install without UEFI support

The solution

We left the Debian installer running all night, came in the next morning,
and it still wouldn’t boot. I tried rEFInd, gummiboot, elilo, and almost
tried to install boot-repair (not yet in Debian). At this point I
had almost given up on Debian. I downloaded Ubuntu 12.04 LTS, but it
complained that it wanted a missing rtl8105e file, proprietary RealTek firmware.
HP was really scraping the floor for hardware on this one.
I figured I’d give Debian one last shot and found the solution in a post by
Rod Smith, author of rEFInd, on the Ubuntu forum:
how work around HP’s UEFI misimplementation.

HP’s EFI wants your grubx64.efi file to be called /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi.

mkdir /boot/efi/EFI/Microsoft/Boot/ # Debian overwrites this, back it up if it's still there
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

Finally, GRUB appeared! After that, a blank screen, but that was solved by
replacing ‘quiet’ with ‘nomodeset’ in the GRUB configuration (/boot/grub/grub.cfg)

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset radeon.modeset=0"

(the Radeon line is to prevent a problem with the Catalyst driver later.)

X didn’t start, so we install the latest AMD Catalyst driver.
(you can’t just grab it with wget– AMD uses Javascript to force you
to download it on a computer with a graphical web browser, defeating
the point entirely. Well played, AMD. Hopefully someday someone will
make a real driver for these cards.)

mount /dev/sdb1 /mnt/sd
cd ~
cp amd-catalyst-13.12-linux-x86.x86_64.
unzip amd-catalyst-13.12-linux-x86.x86_64.
chmod +x 
apt-get install linux-headers-`uname -r` build-essential
aticonfig --initial
nano /etc/default/grub

Shame on Microsoft for Secure Boot, HP for enabling it and misconfiguring
their UEFI, and RealTek and AMD for their proprietary firmware drivers.

It took a day or two, and it was painful, but we circumvented all of the obstacles,
thanks in very large part to Debian, the Ubuntu forum, and people willing to
write filesystem drivers for Windows. Too many hours later, had a Debian login
and took at victory lap. We tried to get a refund on the
vaporized Windows software, but that looks fairly unlikely after reading through
Microsoft’s policy concerning OEM refunds on Windows. We called HP and
they claim the software is “bundled”– an antitrust violation, but we don’t have
time to fight them on it.

We also hope this helps a person or two through the minefield on a way to a generic
Linux Box.

Author: Noah Bedford

Date: 2014-03-06 16:13:06 EST

HTML generated by org-mode 6.33x in emacs 23

By Nadya on March 6, 2014.