Optimizing AVR LCD Libraries

A while ago, [Paul Stoffregen], the creator of the Teensy family of microcontrollers dug into the most popular Arduino library for driving TFT LCDs. The Teensy isn’t an Arduino – it’s much faster – but [Paul]’s library does everything more efficiently.

Even when using a standard Arduino, there are still speed and efficiency gains to be made when driving a TFT. [Xark] recently released his re-mix of the Adafruit GFX library and LCD drivers. It’s several times faster than the Adafruit library, so just in case you haven’t moved on the Teensy platform yet, this is the way to use one of these repurposed cell phone displays.

After reading about [Paul]’s experience with improving the TFT library for the Teensy, [Xark] grabbed an Arduino, an LCD, and an Open Workbench Logic Sniffer to see where the inefficiencies in the Adafruit library were. These displays are driven via SPI, where the clock signal goes low for every byte shifted out over the data line. With the Adafruit library, there was a lot of wasted time in between each clock signal, and with the right code the performance could be improved dramatically.

The writeup on how [Xark] improved the code for these displays is fantastic, and the results are impressive; he can fill a screen with pixels at about 13FPS, making games that don’t redraw too much of the screen at any one time a real possibility.

Use A Lamp To See Into The Future

We’ve heard of magic lamps before, but this one is actually real. [Alex] has created a wall-mounted lamp that can tell you what the future will be like; at least as far as the weather is concerned. It is appropriately named “Project Aladdin” and allows you to tell a great deal about the weather at a glance as you walk out of the door.

The lamp consists of twelve LED strips arranged vertically. The bottom strip represents the current hour, and each strip above represents another hour in the future. The color of each strip indicates the temperature, and various animations of the LEDs within each strip indicate wind speed and precipitation.

The system uses a weather forecasting backend built-in Java, which is available on the project’s page. The LEDs are controlled by an application that is written in C, and the entire set of LEDs are enclosed in a translucent housing which gives it a very professional appearance. Be sure to check out the demo video after the break. Be sure to check out some other takes on weather lamps which use regular desk lamps instead of intricate scratch-made LED lamps.

Continue reading “Use A Lamp To See Into The Future”

Retro Edition: VCF East X This Weekend

It’s mid-April and time once again for the Vintage Computer Festival East X. The X means 10. It’s a three-day weekend full of interesting people, cool tech, and computers you’ve only heard about. We’ll be there all three days, and if you’re in New York or are unable to pump your own gas (Oregon excluded), it’s a great way to spend the weekend.

The sessions for this Friday will include everything from chiptunes to retr0bright to emulating vintage computers on FPGAs. Sessions of note include our own [Bil Herd] giving a talk on system architecture. Think of this as a bunch of engineers in a room with a whiteboard. How could you not have fun with that. There will also be the first meeting of the Quarternet committee, headed up by [Jim Brain]. This session will be a discussion of implementing a vintage networking protocol across different models and different brands of vintage computers. Confused? It’s a, “two-bit solution for an eight-bit world.” That’s all we know, and I’m pretty sure that’s all anyone knows. It will be interesting.

Saturday and Sunday will feature an incredible number of exhibits that includes everything from Atari 8-bits, Hollerith cards, mainframes, an amateur radio station (KC1CKV) and somehow a Fairlight CMI. Since this is the 50th anniversary of the PDP-8, there will be a few of these ancient machines on display. A freshly restored Straight-8 will be up and working, as will an incredible emulation from hackaday.io.

Just because there are exhibits doesn’t mean the talks end on Friday. On Saturday the guest speaker will be [Brian Kernighan], the guy who literally wrote the book on C. Sunday will feature [Bob Frankston], co-developer of VisiCalc. There will be very important people here all weekend.

Even if vintage computers aren’t your thing, there’s still plenty of stuff to see at the venue. The InfoAge science center has technological curiosities stretching back a century, and recently they’ve rehabbed an old satellite dish and turned it into a radio telescope. Registration happens here, and if the last few paragraphs haven’t sold you on the event, you can check out [The Guru Meditation]’s VCF preview video below. We will, of course, be posting a lot of stuff from the event.

Continue reading “Retro Edition: VCF East X This Weekend”

D-Link Fails at Strings

Small Office and Home Office (SOHO) wireless routers have terrible security. That’s nothing new. But it is somewhat sad that manufacturers just keep repurposing the same broken firmware. Case in point: D-Link’s new DIR-890L, which looks like a turtled hexapod. [Craig] looked behind the odd case and grabbed the latest firmware for this device from D-Link’s website. Then he found a serious vulnerability.

D-Link's DIR-890 Router

The usual process was applied to the firmware image. Extract it, run binwalk to find the various contents of the firmware image, and then extract the root filesystem. This contains all the code that runs the router’s various services.

The CGI scripts are an obvious place to poke for issues. [Colin] disassembled the single executable that handles all CGI requests and started looking at the code that handles Home Network Administration Protocol (HNAP) requests. The first find was that system commands were being built using HNAP data. The data wasn’t being sanitized, so all that was needed was a way to bypass authentication.

This is where D-Link made a major error. They wanted to allow one specific URL to not require authentication. Seems simple, compare string A to string B and ensure they match. But they used the strstr function. This will return true if string A contains string B. Oops.

So authentication can be bypassed, telnetd can be started, and voila: a root shell on D-Link’s most pyramid-shaped router. Oh, and you can’t disable HNAP. May we suggest OpenWrt or dd-wrt?

The Pi 2 Means Faster GPIO

The Raspberry Pi is a great machine to learn the ins and outs of blinking pins, but for doing anything that requires blinking pins fast, you’re better off going with a BeagleBone. This has been the conventional wisdom for years now, and now that the updated Raspberry Pi 2 is out, there’s the expectation that you’ll be able to blink a pin faster. The data are here, and yes, you can.

The method of testing was connecting a PicoScope 5444B to a pin on the GPIO pin and toggling between zero and one as fast as possible. The original test wasn’t very encouraging; Python maxed out at around 70 kHz, Ruby was terrible, and only C with the native library was useful for interesting stuff – 22MHz.

Using the same experimental setup, the Raspberry Pi 2 is about 2 to three times faster. The fastest is still the C native library, topping out at just under 42 MHz. Other languages and libraries are much slower, but the RPi.GPIO Python library stukk sees a 2.5x increase.

This Home-Made 6-Axis Robotic Arm is Quite the Looker

With a background in software engineering, [Kris Temmerman] decided to make a physical demonstration of his knowledge in the form of a six axis robotic arm… the final product is a delicious display of mechanical eye candy.

Built from mostly aluminum stock, [Kris] machined the bulk of his parts with a CNC mill which he picked up for cheap from China. These custom pieces coupled with some hefty stepper motors ensure the arm’s accuracy as it twists freely and slides along the gantry it’s mounted to. Though the majority of the arm is metal, the hand at the end of his robot was built with 3D printed parts and can be switched out with the future attachments [Kris] plans to design. This classic gripper piece is driven separately with its own Arduino brain controlling the individual servos in the fingers. loadcels

Each finger includes some load bearing sensors which [Kris] harvested from an old scale so that the gripper can tell whether or not it has a hold of an object without crushing it. To orchestrate the robot’s movement, he wrote some nice looking software in C++ which visualizes the inverse kinematics at work in each point of articulation. For the sake of demonstrating his creation in action, he whipped up a basic demo that can locate and move colored blocks laid at random on a surface. A small camera mounted on the hand determines the orientation of the blocks relative to the machine so that the wrist can rotate itself in the proper alignment in order to pick them up.

[Kris] documented the build of his robot in a fascinating speed video which includes footage of the finished arm in action at the end:

Continue reading “This Home-Made 6-Axis Robotic Arm is Quite the Looker”

Hackaday 10th Anniversary: Jon McPhalen and the Propeller

[Jon] came out to our 10th anniversary mini-con to talk about the Propeller, and judging from his short introduction, his hacker cred is through the roof. He has a page on IMDb, and his first computer was a COSMAC. Around 1993, he heard of a small company introducing the BASIC Stamp, and like us with most new technology was incredulous this device could perform as advertised. He tried it, though, and for a few years after that, he was programming the BASIC Stamp every single day.

Having a lot of blinky light project under his belt, [Jon] was always struggling with interrupts, figuring out a way to blink an LED exactly when he wanted it to blink. A lot has changed over at Parallax since 1993, and now they’re spending time with the Propeller, an 8-core microcontroller where interrupts are a thing of the past. He showed off a huge, 10-foot tall bear from League of Legends, all controlled with a single Propeller, using 1000 LEDs to look like fire and flames.

[Jon] shared the architecture of the Propeller, and the inside of this tiny plastic-encapsulated piece of silicon is wild; it’s eight 32-bit microcontrollers, all sharing some ROM and RAM, controlled by something called a Cog that gives each micro access to the address, data, and IO pins.

When the Propeller was first released, there were a few questions of how the chip would be programmed. C isn’t great for multicore work, so Parallax came up with a language called Spin. It’s written for multicore microcontrollers, and from [Jon]’s little session in demo hell, it’s not that much harder to pick up than Python. Remember that hour or two where you learned the syntax of Python? Yeah, learning Spin isn’t a huge time investment.

Even though you can program the Propeller in C and C++, there’s a reason for Spin being the official language of the Propeller. It isn’t even that hard, and if you want to dip your toes in multicore microcontroller programming, the Propeller is the way to do it. It’s an open source chip as well so you can give it a try with an FPGA board.