Reverse Engineering Altium Files

altium

Several times in the last few weeks, I’ve heard people say, ‘this will be the last PCB I design in Eagle.’ That’s bad news for CadSoft, but if there’s one thing Eagle has done right, its their switch to an XML file format. Now anyone can write their own design tools for Eagle without mucking about with binary files.

Not all EDA softwares are created equally, and a lot of vendors use binary file formats as a way to keep their market share. Altium is one of the worst offenders, but by diving into the binary files it’s possible to reverse engineer these proprietary file formats into something nearly human-readable.

[dstanko.au]‘s first step towards using an Altium file with his own tools was opening it up with a hex editor. Yeah, this is as raw as it can possibly get, but simply by scrolling through the file, he was able to find some interesting bits hanging around the file. It turns out, Altium uses something called a Compound Document File, similar to what Office uses for Word and PowerPoint files, to store all the information. Looking through the lens of this file format, [dstanko.au] found all the content was held in a stream called ‘FileHeader’, everything was an array of strings (yeah, everything is in text), and lines of text are separated by ‘|’ in name=value pairs.

With a little bit of code, [dstanko] managed to dump all these text records into a pseudo plain text format, then convert everything into JSON. You can check out all the code here.

Python script migrates from dying Google Reader to Evernote

google-reader-to-evernote

We’re sure you’ve heard by now that Google has decided to close its RSS feed aggregator service called Google Reader. We’ve got to remember to get our list of thousands of great hacking blog feeds off of there before it’s gone. But just preserving the list is rather easy. [Paul Kerchen] has a bit different problem. He’s got hundreds of articles starred and he wants to preserve a way to find those pages again. His solution was to write his own Python script to migrate starred Google Reader articles over to Evernote.

We’re not here to promote the Evernote service. But just so we’re on the same page, it’s an archiving system that lets you save things like webpages and text documents for access on a wide range of different platforms. So all that really needs to happen is for [Paul] to get the list of links from his starred articles folder formatted for import on Evernote. It starts by using Google Takeout to download an archive of his account data. Within this dump is a JSON formatted file called ‘starred.json’. His script parses the data and imports each article into Evernote. There’s even rate limiting to manage the daily import maximum of free accounts.

What you can do when a Raspberry Pi teams up with an Arduino

We thought that connecting an Arduino to a Raspberry Pi was overkill, but one thing caught our attention. [Jan Stevens] mentions that the RPi is less expensive than the Ethernet Shield. Interesting. As we looked into his writeup a bit more we began to think he’s onto something. [Jan] uses the PHP serial class to communicate between the RPi and Arduino. This ends up being a very inexpensive way to bring some of the more powerful web programming options to your hardware devices.

Sure, he’s just driving three RGB LEDs. But the demo video after the break gives us a glimpse as some of the interface options that become available when an embedded Linux machine is in play. He’s using jQuery, AJAX, PHP, and JSON to name a few. If you want to give this a try yourself you can grab the code from his Github repo. Of course we’re going to want to hear about any projects you develop from this starting point!

[Read more...]

Never miss your transport with this bus arrival notifier

[John Graham-Cumming] was all set to start a new project based on the Raspberry Pi. Well, that was until shipment was delayed due to manufacturing issues. Not to fret, he transitioned over to a router board which displays the arrival countdown for mass transit bus service.

He based the build on a web page the Transport for London provided. You can load it up and see if your bus is running on time or not. There’s no published API, but by studying the source code from the site [John] was able to figure out how the JSON commands were formatted.

The next step is building a standalone device to pull the data and display it. The board seen above is from a Linksys WRT54GL router. This longtime favorite has a serial port header which can be driven from the Linux kernel. He wired up a jack on the router’s case, and uses an extension cable to get from it to the 7-segment displays mounted in a model of the bus. Since there’s four digits the display can tell you minutes until the arrival of two different buses.

[Thanks Pseudo Lobster]

Wicked use of HTML5 to display sensor data

This project shows you one possible way to use HTML5 to fully integrate sensor data from a microcontroller into our technological lives. Now, when we saw this tip come through our inbox we thought it would be an interesting example to learn from but we weren’t ready for how truly cool the setup is. Take a look at the video after the break and you’ll see that scanning the QR code on the project box will immediately start a 10ms resolution live stream of the accelerometer data. Furthermore, the browser page that the phone loads allows you to send what you’re currently viewing to the main frame of a browser running on a different computer with the touch of a button. In this way you can build a dashboard of streaming sensor data. Talk about the future of home automation. Imagine a QR code on your thermostat that allows you gain access to your home’s heating, air conditioning, humidifier, and water heater performance and controls just by snapping a pic? The sky’s the limit on this one so let us know what you’d use it for by leaving a comment.

In this case an mbed microcontroller is handling the data acquisition and pushing that to a server via a WiFly module using the WebSockets library. This data is pushed in the form of a JSON packet which is distributed by the server as a data stream. Clients can access it via a browser through a page that makes use of JavaScript.

[Read more...]

Follow

Get every new post delivered to your Inbox.

Join 96,692 other followers