Mr Robot Badge

Creating hardware, and 'gonzo trade journalism'

Similar projects worth following
'Reporting' is writing about what other people did. I wanted to do more than that. Over the last few years, the independent badge scene at DefCon has gone off the rails. This year, it exploded. This is how I came up with the idea, created, and deployed the Mr.RobotBadge at Def Con 25.

In recent years, 'custom electronic badges' have been a thing at DEF CON. This is #badgelife, or a community based around building hardware on a very condensed schedule, deploying them at a conference that won't wait for hardware problems, and spending thousands of dollars of your own money out of pocket. It's guerrilla hardware engineering, and it's awesome.

Last year, I decided I had to get in on this. This is, effectively, gonzo trade journalism. I'm going to inject myself into #badgelife, build my own independent hardware badge, and describe what the process is like. It's one thing to report on something someone else did, it's another thing entirely to describe what and how you did something.

This is the inside story of nine months of work, a few hundred badges, and a single week in Vegas.

KiCad project of the badge, includes Gerbers

x-zip-compressed - 4.16 MB - 08/02/2017 at 02:51



PDF of schematic

Adobe Portable Document Format - 109.08 kB - 08/02/2017 at 02:50


Vector art for stickers, badge

postscript - 131.88 kB - 08/02/2017 at 02:49



The badge firmware

octet-stream - 237.38 kB - 08/02/2017 at 02:49


All the files from the ARG

x-zip-compressed - 12.42 kB - 06/02/2017 at 13:42


  • 1 × IS31FL3731 Interface and IO ICs / Display Interface
  • 1 × ESP8266
  • 144 × 0603 LED
  • 1 × LTR-239ALS-01 Lite On I2C ambient light sensor

  • How I Created The Mr. Robot Badge

    Benchoff08/02/2017 at 03:53 5 comments

    This is it. It's over. It's done. I'm writing this on August 1st, right after getting home from Def Con. All badges were deployed, I'm not getting sued by the creators of Mr. Robot, and everyone loved my work. I'm going to use this project log entry as a single wrap-up post, and also go over the issues that cropped up in the final days.

    But first, a badass pic:

    The official Def Con badges have been electronic works of art for more than a decade now, but only in the past few years have independent hives of hackers built their own electronic badges. This is Badgelife, a lifestyle that revolves around developing custom hardware for an entire year and having a lot of fun for one weekend. This year is the biggest year yet for Badgelife. There are dozens of groups designing, building, and deploying completely custom electronic badges this year at Def Con.

    For the last few months, I’ve been working on a very special project. I released this project this weekend at Defcon. Yes, I’m the guy behind the MrRobotBadge. If you’re reading this now, it means it’s finally time to end the MrRobotBadge ARG. I am MrRobotBadge. Right off the bat, I’m going to call this ‘gonzo trade journalism’. That’s not because this entire endeavor involved a trip to Vegas and electronic debauchery. It’s just that I can’t think of a better phrase to describe how I injected myself into a subculture built around electronic conference badges simply to write about electronic conference badges.

    The question I’m sure is on everyone’s minds right now is why I spent thousands of dollars and hundreds of hours to create a custom, unofficial badge for Defcon. Was it to promote the TV show Mr. Robot? Certainly not. Was this project sponsored in any way? No; everything here — including my trip to Vegas, ostensibly as a Hackaday journo — was done on my own dime. Was it to use conference badges as an attack vector and make WiFi completely unusable on the Vegas strip? That was the initial plan, but no. This was simply an experiment in gonzo trade journalism; an investigation into the inner workings of what it takes to build custom hardware on a very tight timeline.

    Read more »

  • Assembly done, it took 18 hours

    Benchoff07/09/2017 at 07:20 0 comments

    Last week I was assembling about 480 badges with the help of a pick and place machine. There are about 100,000 parts, and we completed everything in about five or six hours. After this, the only thing left to do was depanelize the boards and solder on the battery holders. There are two battery holders, so only 960 more parts to go.

    Depanelizing and soldering on those battery holders took 18 hours. My hands hurt now.

    What's left? Programming and putting all these badges in bags with lanyards and stickers. Then they're shipped off to Vegas. This means I need a programmer. Here's what I came up with:

    It's a standard off-brand FTDI adapter, some pogo pins I found on Amazon, and a 3D printed adapter. Completely custom work, and it'll get the job done.

    Oh, this is going to be on Engadget, so that's cool, I guess.

  • I Know A Guy

    Benchoff07/02/2017 at 20:59 0 comments

    I have a lot of stories that begin with the phrase, 'I know a guy'. Needless to say, assembly is done:

    How did I do it so quickly? I know a guy with a few machines:

    We got about 230 panels -- or 460 'faces' -- done in about four hours. It would have probably gone faster if we weren't drinking beer and eating pizza.

    So, why only 460 badges when I initially planned for 500? I'm an idiot. We ran out of buttons. To be fair, the AliExpress listing for the buttons I'm using said each reel would have 1500 buttons. There are seven buttons on each badge, so I needed 3500. Apparently there were only 1000 on each reel. I had some spare, fancy, Panasonic buttons that were amenable to hand-soldering, so I don't think we did that bad.

    This was fun as hell, and now I have the badges ready to solder battery holders, program, and ship. This is fun.

  • Assembling, Prototyping, and Planning

    Benchoff06/26/2017 at 11:30 0 comments

    Behold! The Finished Badge! In horrifically rendered GIF form!

    This is the first functional hand-assembled prototype, running a demo from Adafruit's IS31FL3731 led driver library. It's not much, but it does show the entire badge is functional, and that this entire endeavor will be a success.


    This board has just under 200 components, and hand-assembly takes about 30-40 minutes. That's assembly, and the rework for the QFN LED driver takes an additional half hour. It's possible, though.

    Of course, it's impractical to solder all of these by hand. That's at least 500 hours worth of work, and there are only 30 days left until defcon. I don't feel like pulling 17 hour days of soldering and reworking, so I called in a few favors. The entire assembly will be done by next week. After that, all I'll need to do is program the damn things and solder on the battery holders (the single through-hole component).


    Speaking of batteries, I knew from the outset obtaining batteries would be a problem. Each badge requires four AA cells, that's 2000 batteries, and the best price I could find was about $0.25 per cell. That's $500 in batteries alone.

    I was recently invited into the #badgelife slack, and one of the members pointed out an awesome deal on batteries, with free shipping:

    That's a great deal, and after spending $227, I had 1440 AA cells (30 packs of 48 batteries) shipped to krux in Vegas. Is that all the batteries I need? No, but it's three quarters of the way there, and that'll be enough to last through Friday afternoon. A trip to Fry's will be in order after that. You can source a lot of batteries with a wad of hundreds.

    So, all my sourcing is done, I have a plan for assembly, and all of this is going to happen. I need to spend a day or two working on the website ( before the media blitz. Everything is coming together.

  • Oh yeah, an ARG or some shit

    Benchoff06/02/2017 at 13:12 0 comments

    It has just occurred to me that this badge needs an augmented reality game of some sort. I can't compete with 1057 on this one, so I'm just going to throw this together.

    First, let's start with the winning condition. This image (all 1200 bytes of it, or something) will be stored in the firmware for the badge. Keep in mind the image below is a PNG, and I'll be using a BMP, but whatever:

    What could be a better reward?

    Now, the initial condition. Steganography - or hiding data in images - is popular for this sort of thing. That means I need an image. Here it is:

    Now, how to deliver that first image? I'm using twitter a lot, so I'm just going to schedule a bunch of tweets from the @MrRobotBadge account to hexdump that jpg onto the Twitter. That should get some people riled up. The tweets will end on the thursday of DEFCON. We'll do one tweet every thirty minutes or something like that.

    Right, so the steganography part. Inside the 'dawn of the first day' image will be a zip file. Inside that zip file will be a text file. On that text file will be the memory location of where to find the dickbutt pic.

    That's the ARG.

    No, wait, that's a terrible idea. The text file in the zip folder will be a web address ("") or something. The contents of that web site will be the memory address.

    There we go. Can't fail now. And I can set all of this up before the firmware is written.

    EDIT: wait a second. I just realized I can use this ARG thing to reveal who's actually behind this whole badge thing. I was planning on doing a Hackaday post (publishing Sunday afternoon of the con), so I'm just going to add a wordpress shortcode to the dickbutt pic:

    How did I come up with this? I was taking a shower, and my mind wandered over to the 1057 puzzles. Yes, I was thinking about 1057 in the shower. I realized I needed an ARG for this badge, hopefully one that would get me some followers on Twitter. That's it. Then it was just, 'oh yeah, zip files read in reverse, bmps read forward, blah blah blah'. This entire ARG took two hours to put together, and most of that was scheduling the tweets.

  • T Minus Sixty Days

    Benchoff05/25/2017 at 17:29 0 comments

    In two months, I'm going to be holed up in a hotel room in Vegas, overlooking the god damned Ferris wheel, frantically packing electrostatic bags with badges, lanyards, stickers, batteries, and fidget spinners. I should be concerned, but I'm not. I have this pretty much under control.

    Failures from the last revision

    There were two problems with the "final" hardware revision. First: the power supply sucked. The power supply for this badge is four AA batteries delivering 3V to a TI switching regulator. The spec for this regulator says it can deliver 1.2A, which it probably could, if you use an inductor that costs $3 in quantity one. Unfortunately, I used one of the 'recommended' inductors from the application notes. I can get maybe 300 mA out of this regulator before it shuts down. This is a problem, because we're blinking a lot of lights and sending WiFi packets everywhere. This requires power.

    Luckily, the firmware engineer for this project turned down the brightness of the LEDs (a handy feature of the charlieplex driver) and spent a few days pinging the badge while displaying IPs on the LEDs. Everything works. The bug is now a feature: we chose a shitty inductor on purpose so the battery lasts a long time. Sure. That's the story we're going with.

    Second problem: the badge shorted out when I pressed the right button. Guess why?

    Yeah, that was stupid as hell, but it's fixed now.


    From the get go, this had to be an amazing looking badge. Generally, there are two ways you can go with this. You can either throw a ton of blinky LEDs on it, or you can put a lot of time into the art of the board. Take a look at last year's Queercon squid badge for an example of the latter.

    One thing that hasn't been popularized is a custom color soldermask. Usually, boards are one of five colors: Green, Red, Blue, White, or Black. I wanted something different. The Mr. Robot Badge was designed around skin tone soldermask, with two colors of silk screen. It's simple, but effective.

    Now, after some talks with Seeed (they're great, really), I have the first proof that custom color soldermask and weird silkscreens actually work

    This is really, really fantastic. I couldn't have hoped for anything better.

    And now I have to build five hundred of them...

    Boards will be ordered from Seeed this week, and I have a Mouser cart with $1500 worth of stuff in it. Assembly? I have that taken care of. I know a guy. After that, it's a lot of programming badges, sticking them in bags, and shipping them off to somebody in Vegas.

    Until this point, the reality of getting this project done was up in the air. This is a lot of fucking work, and a lot of fucking money to spend on something that might not happen. Until a week ago, I didn't even know if this custom soldermask / multiple silk process was possible.

    Now, everything is lining up. I'm on time, under budget, and I even had a bit of money left over for some awesome (ly terrible) swag. This is it. This is the time when this project starts becoming real. It's only taken nine months and thousands of dollars so far, but here we are.

  • Final Proto, Hardware Lockdown, Buying Shit From China

    Benchoff03/17/2017 at 02:57 0 comments

    Final Prototype & Hardware Lockdown

    This is it. The final revision. Changes from the prototype badge that wasn't shaped like the Mr. Robot mask include the addition of a switching regulator, the addition of battery holders, and a few changes to which GPIOs are used for the buttons. I should have planned for that button thing - it was a floorplanning issue, and should have been taken into account from the get go.

    So, what does it look like now?

    We're almost done. There are a few *slight* problems with the badge - mashing the buttons resets the ESP, but that's probably because I'm using an SPI port as a GPIO. Should be fixed in firmware. I've edited a lot of the silkscreen on the front of the badge just to make it look a little cleaner.

    These completed badges will soon be in the hands of the firmware dev, and everything will be locked down by next week. After that, I need to panelize this board and shop around for a fab. Right now, it looks like I'm about a month ahead of schedule.

    Buying Shit From China

    Let's use the battery holders as an example of how much you can save by buying shit from China. This is what I need:

    It's a two AA battery holder with through-hole solder pins. Here it is on Mouser. It's $1.65 in quantity one, or $0.64 in quantity one thousand. Since I'm making five hundred badges and each badge will have four batteries, I need a thousand. What's $0.64 times one thousand? Ouch, that's $640 just for the things that *hold* the batteries.

    Lets see what AliBaba has to offer:

    Huh, that's exactly what I need. How much? Fifteen cents apiece in quantity one thousand. Add in $66 for express shipping, and I have a ton of battery holders for a third of the price as sourcing them from Mouser.

    Here's a neat bonus: the Mouser variety only have solder pins on one side. The Chinese versions have solder pins on both sides. This does require putting a trace from one positive lead to one negative lead, but it also means a more secure connection to the PCB. I don't have to epoxy this thing down now. Awesome.

    Other items of note from China: the LEDs. Each badge has 144 LEDs, and I'm making 500 badges. Do the math. LEDs come in reels of 4000, and the fancy expensive LEDs cost $144 a reel. I need twenty reels of LEDs. A reel of LEDs on AliExpress costs $10.05, a total of $240 for all the LEDs. That's literally a tenth the price.

    Buttons, too: I was prepared to spend about $1500 for the proper name brand Panasonic buttons. $90 on Aliexpress got me all the buttons I need, and they're good enough.

    Remember, this badge is only designed to last for three days. I can afford to cheap out, especially since I don't need to worry about anything complicated like 'technical support' or 'a good product'.

    LESSON: Holy crap electronics are cheap in China.

    Where we go from here

    Panelizing boards, sending them off to the fab, buying a whole lot of components, and getting them assembled. I'm ahead of schedule and right now under budget.

  • The Second To Last Board Spin

    Benchoff03/15/2017 at 04:09 0 comments

    This is it. Hopefully the second to last board spin. OSHPark Super Swift Service to the rescue.

    There are a few things going on here. First off, this is the first board that's 'mr robot mask' shaped. We've already worked the kinks out of the prototyping boards (and firmware development is going swimmingly). We're doing one last go to make sure everything works before dumping $$$ on the custom soldermask process.

    Secondly, we're moving to a better power regulator. The old version was a dumb linear piece of shit. This isn't going to fly with a battery powered badge that is supposed to last several days. This badge is using the MCP1640 boost regulator. It's simple, and it'll put out 3.3v for a while.


    The most difficult challenge for this badge is keeping it alive for an entire weekend.

    Using measurements from the prototype badge, the four AA cells should last about 16 hours. That's with the lights constantly blinking on full brighness (the chip can do 8-bit PWM, so that's great), and constantly transmitting. I'm thinking this will be fine. If we cut the duty cycle of the LEDs in half, we're getting more than a day. If we don't transmit WiFi all the time, the draw from the ESP goes from 140 mA to 15mA. This thing will make it through the weekend.

    By April, I should have an order in for the finished PCBs. Hopefully. By August, they'll all be sold.

  • LEDs and Stickers

    Benchoff03/01/2017 at 00:45 0 comments

    The LED matrix works...

    thanks to the amazing firmware developer. This was the entire reason to build prototype badges - to get hardware into the hands of the firmware dev quickly. This is more or less finalized hardware (with the exception of different buttons, and swapping out the SOIC led driver for a QFN), so development can continue up until DEFCON.


    This is not a 'technological' hack by any means. A few people have already built ESP8266-based game machines, and the 16x9 LED matrix chip I'm using can be found in an Adafruit product. As far as the tech goes, there's nothing new here.

    This is a social hack. Or marketing, if you want to be a little more accurate. I need to build a badge that people want. I need to make people want these badges first, so I need marketing materials:

    That's only $200 for five hundred of these stickers. The art is taken directly from the illustrator crap I came up with, with the webpage and twitter handle of this whole endeavor added on the side.

    I'll be distributing a few packs of these stickers to people who I know will redistribute them. I'll be saving a stockpile to add into the packaging for each individual badge.

  • This is how you do art in KiCad

    Benchoff02/25/2017 at 17:45 3 comments

    The entire point of building this badge is to build a desirable badge for DEFCON. There's an oppurtunity for guerrilla marketing and pop-up hardware startups here.

    Therefore, the killer feature for this badge is soldermask and silk screen. The soldermask will be beige, and there will be two processes of silk on the back of the badge. The back of the badge will look like this:

    This will be popular.

    I could easily do this in Eagle. It would take me about two hours. However, on a whim, I'm giving KiCad a try. This is a project far outside what I normally see coming from the KiCad camp. Usually, all the 'artistic' boards I see are made in Eagle or PCBmodE (and rarely Altium). KiCad is mostly functional, and artistic boards are nearly unheard of. That doesn't mean you can't do artistic boards in KiCad - it just takes about ten times longer than it does in Eagle. Here's how you do it.

    Vector Art to DXF Export

    Step one: have vector art. This is left as an exercise to the reader. I'm using Illustrator instead of Inkscape. I'm also doing this example/tutorial with a single eye/brow, because it's simpler.

    Step two: Convert your paths to straight lines. Do this by selecting your paths, then going through the Object -> Path -> Add Anchor Points. Do this many, many times. This adds an anchor point between all the other anchor points on your path. You're effectively doubling the number of anchor points every time you 'add anchor points'

    DXF files can't handle Bezier curves, so you need to convert your shape to straight lines. Click on Object -> Path -> Simplify. Check the 'straight lines' button. Click okay.

    Now your object is only straight lines. Export this do a DXF file with File -> Export -> Export As... and save it as a DXF. There are options, pay attention to them:

    DXF Import to KiCad

    Now that we have a DXF file KiCad will understand, we can import it directly into Pcbnew. From Pcbnew, select File -> Import -> DXF File. You can import a DXF file onto any layer, but I suggest selecting a single layer for importing images that you don't use for anything else.

    Here's what we get when we import:

    If your 'artistic board' consists only of an edge.cuts layer, you're done. If, however, you want artistic silk screen, there's one more thing to do. We need to trace over this import with a filled zone. Select the filled zone tool, and start making fills:

    There we go, "art" in KiCad. The process of turning this art into soldermask, silk screen, mask resist, or just plain copper is left as an exercise to Chris Gammell.

    A few tips and tricks:

    • Import the DXF onto a layer that is not used for anything else
    • Use Eco.1 and Eco.2 for your fills. KiCad doesn't really care what these are used for, and they're user-definable.

    That's it. This how you do art in KiCad.

View all 13 project logs

Enjoy this project?



Michael wrote 08/27/2018 at 07:05 point

Would you please explain how you applied a second colour of legend notation silkscreen ink to the PCB? I assume the substrate is dull grey, the soldermask white, the notation ink is black, and the second custom colour is beige?

  Are you sure? yes | no

5yndicate wrote 08/13/2017 at 22:14 point

Sad I missed these at DC25. Nice work. 

  Are you sure? yes | no

Elecrow wrote 08/03/2017 at 03:19 point

Attractive story about badgelife

  Are you sure? yes | no

Lucas Rangit MAGASWERAN wrote 08/03/2017 at 00:52 point

Can you post the source code?

  Are you sure? yes | no

oshpark wrote 08/02/2017 at 19:33 point

Impressive concept and execution.  Well done, @Benchoff!

  Are you sure? yes | no

danjovic wrote 11/28/2016 at 01:51 point

Will you use the audio modulation feature of the led matrix driver?

  Are you sure? yes | no

Lucas Rangit MAGASWERAN wrote 08/03/2017 at 17:43 point

Cool idea. You would have to connect to pin 17 of the IS31FL3731 chip. It's currently not connected according to the schematic. What is your idea for an audio signal to visualize?

  Are you sure? yes | no

jareklupinski wrote 11/28/2016 at 00:11 point

are each of these LED outputs tied to an optoisolater for a PWM-actuated gas pipe valve controlling a lit flame, turning your 144-pipe flame organ into a tempting capture-the-flag target where the first hacker to breach its walls gets to play with it for 5 minutes.

or something

  Are you sure? yes | no

Richard Aplin wrote 11/24/2016 at 01:26 point

..A secret? It's an internet-connected LED matrix display ; maybe a Christmas thing? That ISSI driver is a nice choice; easiest way to get quality PWM control of a lot of muxed LEDs, and pretty cheap too. I'm actually sitting here working with some of their other LED driver chips, quite by coincidence.  :-)

  Are you sure? yes | no

zakqwy wrote 11/25/2016 at 20:40 point

Agreed, that ISSI chip seems pretty neat! 8-bit PWM x 144 LEDs!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates