[Matthew's] recent blog post does a good job explaining the basics of the Raspberry Pi’s file system. The Linux operating system installed on a Pi is generally installed on two different partitions on an SD card. The first partition is a small FAT partition. All of the files on this partition are used for the initial booting of the Pi. This partition also includes the kernel images. The second partition is the root file system and is generally formatted as ext4. This partition contains the rest of the operating system, user files, installed programs, etc.
With that in mind you can deduce that in order to backup your Pi, all you really need to do is backup all of these files. [Matt] has written some scripts to make this a piece of cake (or pie). The first script will simply copy all of the files into a gzipped archive. You can save this to an external SD card, USB drive, or network share.
The second script is perhaps more interesting. This script requires that you have one free USB port and a USB SD card reader. The script will automatically format the extra SD card to contain the two critical partitions. It will then copy the “boot” files to the new boot partition and the root file system files to the new SD card’s root partition. When all is said and done, you will end up with an SD card that is an exact copy of your current running file system.
This can be very handy if you have multiple Pi’s that you want to run the same software, such as in a Pi cluster. Another good example is if you have spent a lot of time tweaking your Pi installation and you want to make a copy for a friend. Of course there are many ways to skin this cat, but it’s always fun to see something custom-built by a creative hacker.
Here’s something that be of interest to anyone looking to hack up a router for their own connected project or IoT implementation: hardware based on a fairly standard router, loaded up with OpenWRT, with a ton of I/O to connect to anything.
It’s called the DPT Board, and it’s basically an hugely improved version of the off-the-shelf routers you can pick up through the usual channels. On board are 20 GPIOs, USB host, 16MB Flash, 64MB RAM, two Ethernet ports, on-board 802.11n and a USB host port. This small system on board is pre-installed with OpenWRT, making it relatively easy to connect this small router-like device to LED strips, sensors, or whatever other project you have in mind.
The board was designed by [Daan Pape], and he’s also working on something he calls breakoutserver There’s a uHTTP server written specifically for the board that allows any Internet connected device to control everything on the board. There’s also an HTML5 app they’re developing which could be pretty interesting.
All in all, it’s a pretty cool little device that fits nicely in between the relatively simplistic ‘Arduino with an Ethernet shield’ and a Raspi or BeagleBone.
Typically, you buy a single board Linux computer. [Henrik] had a better idea, build his own ARM based single board computer! How did he do it? By not being scared of ball grid array (BGA) ARM processors.
Everyone loves the Raspberry Pi and Beagle Board, but what is the fun in buying something that you can build? We have a hunch that most of our readers stay clear of BGA chips, and for good reason. Arguably, one of the most important aspects of [Henrik's] post is that you can easily solder BGAs with cheaply available tools. OSH Park provides the inexpensive high-quality PCBs, OSH Stencils provides the inexpensive stencils, and any toaster oven allows you to solder even the most difficult of components. Not only does he go over the PCB build, he also discusses the bootloader, u-boot, and how to get Linux running.
Everything worked out very well for [Henrik]. It’s a good thing too, cause we sure wouldn’t want to debug a PCB as complicated as this one. What projects have you built that use a BGA? Let us know how it went!
We’ve all been there. You are having fun walking around the carnival when you suddenly find yourself walking past the carnival games. The people working the booths are taunting you, trying to get you to play their games. You know the truth, though. Those games are rigged. You don’t know how they do it. You just know that they do… somehow.
Now you can put your worries to rest and build your own carnival game! [John] built his own “Bass Master 3000” style carnival game and posted an Instructable so you can make one too.
The game is pretty straightforward. You have a giant fish-shaped target with a wide open mouth. You take hold of a small fishing reel with a rubber ball on the end. Your goal is to cast the ball out and hit the fish in its big mouth. If you hit the mouth, you get to hear a loud buzzer and see some flashing lights. The system also uses a webcam to take a candid photo of the winner. A computer screen shows all of the winners of the day.
The brain of the system is an Arduino Yún. The Yún is similar to an Uno but it also has some extra features. Some good examples are an Ethernet port, a wireless adapter, and an SD card slot. The mouth sensors are just two piezo elements. Each sensor is hooked up to the Arduino through a small trim pot. This allows you to dial in the sensitivity of each sensor. The lights and the buzzer are controlled via a relay, triggered by a 5V digital pin on the Arduino.
The Yún actually has a small on-board Linux computer that you can communicate with from inside the Arduino environment. This allows [John] to use the Yún to actually take photos directly from a web cam, store them on the local SD card, and display them on a local web server. The web server runs a simple script that displays a slide show of all of the photos stored on the card.
The final piece of the game is the physical target itself. The target is painted using acrylic paint onto a small tarp. The tarp is then attached to a square frame made from PVC pipe. The mouth of the fish is cut out of the tarp. A large piece of felt is then placed behind the hole with the piezo sensors attached. A short length of copper pipe helps to weigh down the bottom of the felt and keep it in place. The important thing is to make sure the felt isn’t touching the tarp. If it touches, it might be overly sensitive and trigger even when a player misses.
Now you know how to build your own Bass Master 3000 carnival game. Whether you rig the game or not is up to you. Also, be sure to check out a video of the system working below. Continue reading “Build a Bass Master 3000 Carnival Game”
The ability to play music in your car over a Bluetooth connection is very handy. You can typically just leave your phone’s Bluetooth module turned on and it will automatically pair to your car. Then all you have to do is load up a music player app and press play. You don’t have to worry about physically tethering your phone to the car every time you get in and out of the vehicle. Unfortunately Bluetooth is not a standard option in many cars, and it can be expensive to buy an aftermarket adapter.
[parkerlreed] built his own solution to this problem using a Raspberry Pi. He first installed arch Linux on his Pi. He also had to install pulseaudio and bluez, which is trivial if you use a package manager. He then modified some of the Linux configuration files to automatically bring the Pi’s Bluetooth adapter online once it is initialized by the kernel.
At the end of the boot sequence, the Pi is configured to automatically log in to a virtual console as [parkerlreed's] user. The user’s bashrc file is then altered to start pulseaudio in daemon mode at the end of the login sequence. This allows the Pi to actually play the audio via the Pi’s sound card. The Pi’s stereo output jack is then plugged into the vehicle’s auxiliary input jack using a standard audio cable.
The Reddit post has all of the configuration details you would need to duplicate this setup. [parkerlreed] also includes some commands you will need to setup the initial pairing of the Raspberry Pi to your smart phone. Be sure to watch the video demonstration below. Continue reading “Raspberry Pi Bluetooth Receiver for your Car Stereo”
We live in a connected world where social media is ubiquitous and many people feel compelled to share every waking moment with anyone who will listen. In this type of world, wearable computers like Google Glass allow us to share experiences like never before. A Glass user can take photos, record video and audio, or potentially even stream video live on the Internet with the greatest of ease. That might be great for the Glass user, but what about the rest of us? As wearable computing becomes more and more mainstream, people are naturally going to become divided on the issue of privacy. Is it a good thing to have “cyborgs” with wearable computers and cameras constantly at the ready, or is it a privacy nightmare? The cyborg war is coming, and [Julian] has already chosen his side.
It would seem that [Julian] lands on the side of the privacy advocates, based on his “glasshole” script. Glasshole is a relatively simple bash script that relies on some other common network security tools to take care of the heavy lifting. The basic premise relies on the fact that every manufacturer of network interface devices is assigned their own MAC prefix. This is a piece of the MAC address that is unique to that manufacturer.
[Julian's] script uses a utility called arp-scan to obtain a list of all MAC addresses on a given wireless network. It then loops through each address and compares it to the known Google Glass MAC prefix. If it finds a match, it will make an audible beeping noise to alert the script user. The script then launches aireplay-ng in de-authentication mode. This will send spoofed disassociate packets to the client (in this case the Google Glass device), hopefully forcing them to disconnect from the access point. The script runs continuously, ensuring that once the device reconnects to the network it will get booted off once again. The script is designed to be run on a small Linux computer such as a Raspberry Pi or a BeagleBone black. This way, the user can carry it around with them as a sort of portable defense mechanism.
How do you fit into the cyborg war? Will you stand proudly with your computer on your face for all to see? If so, what kind of countermeasures would you deploy to prevent this type of attack from working on you? If not, what other types of interesting attacks can you think of to keep the cyborgs at bay?
[Andreas] has created this tutorial on real-time (RT) tasks in Linux. At first blush that sounds like a rather dry topic, but [Andreas] makes things interesting by giving us some real-world demos using a Raspberry Pi and a stepper motor. Driving a stepper motor requires relatively accurate timing. Attempting to use a desktop operating system for a task like this is generally ill-advised. Accurate timing is best left to a separate microcontroller. This is why we often see the Raspi paired with an Arduino here on Hackaday. The rationale behind this is not often explained.
[Andreas] connects a common low-cost 28BYJ-48 geared stepper motor with a ULN2003 driver board to a Raspberry Pi’s GPIO pins. These motors originally saw use moving the louvers of air conditioners. In general, they get the job done, but aren’t exactly high quality. [Andreas] uses a simple program to pulse the pins in the correct order to spin the motor. Using an oscilloscope, a split screen display, and a camera on the stepper motor, [Andreas] walks us through several common timing hazards, and how to avoid them.
The most telling hazard is shown last. While running his stepper program, [Andreas] runs a second program which allocates lots of memory. Eventually, Linux swaps out the stepper program’s memory, causing the stepper motor to stop spinning for a couple of seconds. All is not lost though, as the swapping can be prevented with an mlockall() call.
The take away from this is that Linux is not a hard real-time operating system. With a few tricks and extensions, it can do some soft real-time tasks. The best solution is to either use an operating system designed for real-time operation, or offload real-time operations to a separate controller.
Continue reading “A Tutorial on Using Linux for Real-Time Tasks”