33C3: Hunz Deconstructs the Amazon Dash Button

The Amazon Dash button is now in its second hardware revision, and in a talk at the 33rd Chaos Communications Congress, [Hunz] not only tears it apart and illuminates the differences with the first version, but he also manages to reverse engineer it enough to get his own code running. This opens up a whole raft of possibilities that go beyond the simple “intercept the IP traffic” style hacks that we’ve seen.

dash_block_diagramJust getting into the Dash is a bit of work, so buy two: one to cut apart and locate the parts that you have to avoid next time. Once you get in, everything is tiny! There are a lot of 0201 SMD parts. Hidden underneath a plastic blob (acetone!) is an Atmel ATSAMG55, a 120 MHz ARM Cortex-M4 with FPU, and a beefy CPU all around. There is also a 2.4 GHz radio with a built-in IP stack that handles all the WiFi, with built-in TLS support. Other parts include a boost voltage converter, a BTLE chipset, an LED, a microphone, and some SPI flash.

The strangest part of the device is the sleep mode. The voltage regulator is turned on by user button press and held on using a GPIO pin on the CPU. Once the microcontroller lets go of the power supply, all power is off until the button is pressed again. It’s hard to use any less power when sleeping. Even so, the microcontroller monitors the battery voltage and presumably phones home when it gets low.
Continue reading “33C3: Hunz Deconstructs the Amazon Dash Button”

Amazon Dash Reboots Your Pi

We all know feature creep can be a problem in almost any project. A simple idea can often become unusable if a project’s scope isn’t clearly defined in the beginning. However, the opposite problem sometimes presents itself: forgetting to include a key feature. [Zach] had this problem when he built a Raspberry Pi magic mirror and forgot to build a physical reset/shutoff switch. Luckily he had a spare Amazon Dash button and re-purposed it for use with his Pi.

The Raspberry Pi doesn’t include its own on/off switch. Without installing one yourself, the only way to turn off the device (without access to the terminal) is to unplug it, which can easily corrupt data on the SD card. Since [Zach]’s mirror was already complete, he didn’t want to take the entire thing apart just to install a button. There’s already a whole host of applications for the Dash button, so with a little Node.js work on the Raspberry Pi he was able to configure a remote-reset button for his mirror.

This is a similar problem for most Raspberry Pi owners, so if you want to follow [Zach]’s work he has done a great job detailing his process on his project site. If you’re looking for other uses for these convenient network-enabled buttons, he also links to a Github site with lots of other projects. This pizza button is probably our favorite, though.

Amazon Dash Button Finds Your Phone

This scene replays quite often in our house: my wife has misplaced her cell phone so she asks me to call her. But where did I leave my cell phone? And the race is on! Who will find their phone first to call the other?

[Zapta] solves this problem with his Phone Finder. The system comes in two parts: a base station with WiFi that’s also connected to the house’s phone line, and an arbitrary number of Amazon Dash buttons that trigger dialing commands.

[Zapta] presses a Dash button, which connects over WiFi to the base station. The base station recognizes the MAC address of the button, looks up and dials the corresponding missing cell phone. This solves the need-a-phone-to-find-a-phone problem very neatly, and since Dash buttons are dirt cheap they can be scattered liberally around the house. They’re clearly marked “his” and “hers” suggesting a similar domestic dynamic.

If we were implementing the base station from scratch, we’d probably try to figure out how a single ESP8266 could do all of the heavy lifting, but browsing through [Zapta]’s GitHub and the included circuit diagram (PDF) demystifies the phone-line interface.

In the early days of cordless phones, we used to joke that a solution to losing them would be to attach a string and tie them to the wall. (Luddites!) We’re glad to see [Zapta] take this project in the opposite direction — using technological overkill to solve the unintended problems that arise from technological progress.

Bending The New Amazon Dash Button To Your Will

Most Hackaday readers are familiar with the Amazon Dash button even if it has not yet made an appearance in their country or region. A WiFi enabled button emblazoned with a product logo, that triggers an Amazon order for that product when you press it. Stick it on your washing machine, press the button when you run out of laundry soap, and as if by magic some laundry soap appears. You still have to get out of your armchair to collect the soap from the delivery guy, but maybe they’re working on that problem too.

Of course the embedded computer concealed within the Dash button has been the subject of much interest within our community, and quite a few creative uses have been made of repurposed and reverse engineered examples.

Earlier this year a new Dash button model appeared. Largely similar on the outside, but sporting a comprehensive hardware update internally. Gone is the STM32 processor to be replaced by an Atmel part, and unfortunately since they also made changes to its communication protocol, gone also are most of the hacks for the device.

[Evan Allen] writes to us with his work on bending the new Dash button to his will. He goes into detail on the subject of retrieving their MAC addresses, and modifications to existing hacks to allow the buttons to be intercepted/redirected to trigger his MQTT server. It’s not by any means the end of the story and we’re sure we’ll see more accomplished uses of the new Dash button in due course, but it’s a start.

If the new button’s hardware interests you then [Matthew Petroff]’s teardown is definitely worth a look. As well as the Atmel chips — discovered to be a ATSAMG55J19A-MU with an ATWINC1500B wireless chip — the buttons now support power from a AA cell, and boast a significantly reduced power consumption. We really, really, need to pwn this tasty new hardware!

We’ve covered quite a few Dash button hacks before, from simply capturing button presses to cracking it wide open and running your own code. Let’s hope this new version will prove to be as versatile.

Amazon Dash Button Pwn3d

If you haven’t heard about the Amazon dash button yet we’re glad you quit watching cat videos and have joined us. Just to get you up to speed: the Amazon dash button is a small wireless device that lets your lazy ass order more laundry soap by pushing the “dash button” which should be affixed to something near your washing machine. The pushing of the button will set in motion the gut wrenching process that we used to know as “buying things we ran out of” but thanks to Amazon we can now just cover our entire lives with an assortment of buttons that take zero credentials to physically push. We can’t see that being a problem whatsoever.

Needless to say we as a community set out to find an actual use for these fantastic little devices. [maximus64] has done quite a nice job at enabling this hardware in a most usable way. Most of the hacks we have seen for the dash button remove the physical push button and add a sensor of some kind. Replacing the button with a sensor still uses the WiFi connection to send data from the button to the cloud. Instead of the button ordering more <<product>> from Amazon, a sensor might trigger the dash to increment a counter on your website letting you know that your dog went through the doggy door +1 more times.

[maximus64] has the dash button working in the reverse manner by porting the Broadcom IoT WICED SDK to the button. He is using the dash button as a receiver and when [maximus64] sends the “all good” signal from his laptop to the dash button his garage door opens which you can see in the video after the break. We find this extremely more useful than the dash button’s original intended use. [maximus64] has instructions in the readme.md file of the github repo so that you too can hack your dash button in this way.

Continue reading “Amazon Dash Button Pwn3d”

Amazon Giving Out (Sort Of) Hackable Amazon Dash Button

We’ve seen some interesting hacks of the Amazon Dash buttons, a neat device where you press a button and it orders a product from Amazon for you. Now, [Amazon] themselves are getting into the hacking fun with the AWS IoT Button. This is a Dash button that Amazon is giving out at events to promote their new Amazon Web Services (AWS) Internet of Things (IoT) service.

As part of their efforts to take over the world, the AWS IoT service allows you to create button-based services like ordering pizza or starting Netflix, but without running your own server. Instead, Amazon handles all of the hard stuff behind the scenes on their Lambda engine, which receives the small bit of JSON that the button sends and runs a Lambda function that orders pizza, kicks off Netflix, then starts World War III. Amazon provides sample actions for things like launching the missiles sending a text message over Twilio and writing to a database. Amazon isn’t selling these buttons: they only seem to be available as swag at events. Make a loud enough noise in the comments section and maybe they’ll allocate some for the Hackaday community.

Continue reading “Amazon Giving Out (Sort Of) Hackable Amazon Dash Button”

Press Amazon Dash Button, Summon Uber

Modern life is complicated. When you want to call an Uber car to pick you up, you have to open the app, sign in and set your pickup location. [Geoffrey Tisserand] uses Uber to commute to his job in San Francisco every day, so he came up with a neat way to automate this process, by reprogramming an Amazon Dash button to call an Uber. All he has to do is to hit the button, and a few minutes later an Uber rolls up to his door.

To do this, he used the intercept method, where a Python script running on another computer notices the Amazon Dash button joining his home WiFi network and posts the request to Uber. Because Uber uses the OAuth authentication system, he was able to easily log into the system using Expressjs. And because he is always following the same route, he could also automate the posting of the pickup and dropoff locations, as they don’t change. It’s a neat hack that saves him time, but it doesn’t get around the issue of letting you know how long the car will take to arrive, or if Uber is in Surge Pricing. Perhaps that would work for version 2: a small button with an LCD screen and a warning light.