Raspberry Pi IP audio announcement: ippivox



So, you can ssh into your Raspberry Pi, even if you don’t have any HDMI-capable display equipment at hand.  The trick, though, is knowing what IP address gets assigned to the Pi so that you know what to feed into your ssh client.

Earlier, these pages addressed this problem using VNC to provide a remote Raspberry Pi display (eg, from your laptop).  It’s a good approach, well documented.

Alternately, with a little bit of prep work, perhaps using the above technique to get everything set up to start, you can program your Pi to announce its IP address via audio using text-to-speech.


Much cheaper output than a HDMI-capable monitor

The essence of this trick is to install a text-to-speech program, create a small script to extract the IP address, to pass that address to the text-to-speech program, and then finally to configure the initialization scripts to run the readout script shortly after booting.

I’m working with a rev B Raspberry Pi running Raspbian, but the approach should be generalizable to any distro for which a TTS package is available.

First, set up the Raspberry Pi with keyboard, mouse, wired networking, and video, either HDMI or analog.  If you use analog, you may need to increase the font size considerably even to be able to read the screen.  Open a terminal and install festival:

sudo apt-get install festival

Next, if you haven’t already done so, create a bin directory in your home directory to hold this and other small local scripts and programs:

mkdir ~/bin

Then, open your favorite editor to create a small script file containing the following:

/usr/bin/amixer cset numid=3 1
/sbin/ifconfig | /bin/grep -A3 eth0 | /bin/grep inet | \
/usr/bin/tr ':' ' ' | /usr/bin/cut -d\ -f 13 | \
/usr/bin/festival --tts

Be careful if you try to copy-and-paste that that a) you get the single-quotes carried over into the right place and b) that you don’t have any space or tab or other otherwise hard-to-see non-newline whitespace characters at the end of the lines with backslashes. If either error crops up, edit to fix.

(NB: ifconfig is a bit old school. Interlock HAM and rally enthusiast HoopyCat points out that to be fully kids-these-days compliant, one should use the ip command.)

Save the file as /home/pi/bin/ippixvox.sh and give it execute permissions with chmod a+x /home/pi/bin/ippixvox.sh

You can now test it by typing


into your terminal with a speaker or earphones plugged in. If you are connected to a network (and if not, how did you get festival downloaded?) you should hear the IPv4 address read off. If not, run ifconfig to check to make sure you do have IPv4 address (“inet”) assigned, and that it is assigned to eth0. If it’s assigned to something other than eth0, modify the script above to suit.

Finally, to make this work at boot time, open the file


in an editor and add at the very bottom this one line


Save, reboot, and listen for the IP address to be read to you.

If it works, then you can dispense with attaching a video output device when it comes time to hack on the Pi in favor of just logging in from a machine elsewhere on the same network using ssh.

I find it useful to play a short alert announcement before the IP address is read. I also use a second TTS program, flite, both to give me a second shot at hearing the IP and also in hopes that I’ll be better able to understand at least one of them.

My more lengthy approach to this is documented in the following github gist:


Thanks go Matt via the Raspberry Pi blog for this tip on configuring the audio.

from on June 24th, 2014Comments2 Comments

Filament Nudger for 3Doodler

For various reasons, the 3Doodler sometimes stops extruding. This can happen with any 3D Printer. However, the 3Doodler is exceptionally easy to get going again by giving the filament a gentle nudge. The Filament Nudger is a hack to reduce the number of times the 3Doodler stalls or jams by providing a continuously nudging force on the filament.

Nudger without handle

3Doodler with Filament Nudger

The Nudger works with or without the Phaser Handle described in a previous blog : How to 3D-print a Handle and Trigger for the 3Doodler (and to make it look like a Phaser)    If you have access to a 3D printer, you can build a Nudger yourself by downloading these files on Thingiverse.

With handle

3Doodler with Phaser Handle and Filament Nudger

The automatic Filament Nudger was designed to be powered by a pair of rubber bands,  and it is cocked by pulling back on the Filament Grabber mechanism.

Cocking the Nudger

Cocking the Filament Nudger

The Grabber works like a 1-way clutch, pulling the filament toward the 3Doodler but releasing the filament when pulled in the other direction or when the Grabber bumps the back of the 3Doodler. The force applied by the rubber bands is effective in keeping the extruder going, but is not strong enough to prevent the filament retraction which conveniently keeps the 3Doodler from oozing between extrusions like a glue gun does.

Filament Nudger works with filament provided by 3Doodler

Filament Nudger works with filament provided by 3Doodler

When used with the filament sticks provided by 3Doodler, the Filament Nudger has the benefits of (1) reducing extruder stalls and also (2) it lets you install a new stick any time after the trailing end of a stick disappears into the 3Doodler. Without the Nudger, a new stick may fall out when the 3Doodler is tipped upward before the new stick is engaged, and this can be annoying.

Filament Nudger also works with longer 3mm filament

Filament Nudger also works with longer 3mm filament

With the Filament Nudger as a pre-feeder, Skip has been successfully using the same coiled filament that is used by MacGyvrBot (and other 3D printers). Warning: the use of such materials is not recommended by 3Doodler, and using any unauthorized materials will void the 3Doodler warranty!


Hinge pin



Create a hinge pin for the Grabber with small piece of filament, and put button heads on the pin with the 3Doodler.




2 Zip-tie Frame



Attach the Frame to the 3Doodler with a zip-tie.





3 Insert Skewers




Cut (2) 1/8 inch bamboo skewers to 7 inch lengths and insert them into the Frame (drilling out the holes if they are too tight, locking them in with small nails if they are too loose).




4 Insert Grabber



Insert the Grabber onto the filament and skewers as shown.






5 Insert Filament Guide




Insert Filament Guide over skewers and filament as shown (drilling out the holes if they are too tight, locking them in with small nails if they are too loose).




6 Hook rubber bands




Hook rubber bands over Grabber and attach them to Frame as shown.




 In our next post we will show how to use the 3Doodler to hack up accessories for itself!

Stay tuned!


from on May 9th, 2014Comments0 Comments

JAMMA Video Game Test Rig Box

I decided to package up my JAMMA test rig so that I could demo Crazy Otto at Rochester BarCamp for today.  My design was basically a box that would house the entire thing, with a nice control panel for player 1.  As you can see in the above image, I have the A/V cable going to an external monitor.  Broken out on the box are player 1 and 2 start, coin 1, and player 1 controls – joystick and 3 buttons.  On the right side of the box are the three “coin box” controls — Test, Tilt, and Service, for testing those functions of the board.  Also on that side is a nice handle to help it be portable.

This is a continuation of part 1, where I updated the AV connections of the rig.

This is about the extent of blueprints I have for this.  I knew I needed 14″ depth for the monitor, and that it needed about a 2″ rise from the back to the front to put it at a good angle.  I wanted it to be 18″ wide, and 24″ deep.  That would give enough room for a game board inside of it, as well as for a decent sized control panel.

 I started by cutting a sheet of plywood I’ve had in our garage for a while.  I also built the control panel using spare parts I had.  Thanks to members of Interlock to help me use the table saw, suggest tools and offer bits of wood.  :D

Some standard microswitch buttons, and a nice ball-top leaf-switch joystick.

The basic construction is that I glued some cleats on the inside of each side. Then the back, bottom, front and control panel will be screwed to it.  After that, it looked like this:


I also cut and drilled a small metal bracket to hold the power supply in place, which you can see in the above.  The coin 1 button on the front has a 12v light in it.  The old P2 controller is still attached to the JAMMA rig, in case I want to test/play 2 player games.  You can also see the 1 1/4″ fine thread drywall screws holding it together here.  From here, the only change is that I painted it, stinking up our garage in the process. heh.  The top lid hooks under the control panel, and has a cleat in the back to keep it from sliding off the back.  There’s a single screw to hold it in place, and to let it be carried withot the contents falling out.

The great thing about this thing is that it’s easy to tote this thing around to play/demo games and such.  It takes two trips since the monitor is cumbersome, and the box itself is pretty heavy, but it’s SIGNIFICANTLY easier than toting around a full arcade cabinet.

For reference, here’s the JAMMA pinout standard:  (Most games since the late 1980s use this or a variant of it — for example, Neo Geo adds additional buttons on unused pins, Rampart uses a trackball on the joystick pins, and Mortal Kombat has additional buttons on another interface harness.)

The power and ground at the top portion are wired directly to the old PC power supply.  Coin counters and lockout coils are not wired to anything.  The speaker wires are broken out to a RCA plug, and the Video (RGB,Sync) are out to a DIN connector, as seen in the previous post.  Service, Tilt, and Test are wired to the three switches on the side of the box.  Coin switch 1, and the two start buttons are on the control panel, as are all of the 1P controls (on the right).

from on April 19th, 2014Comments0 Comments