Posts Tagged “pogo”

Extra little update: since I bought my PoGo back in 2009, Polaroid have released a newer, bigger bluetooth printer called the Polaroid GL10 which prints on 3×4 inch zink paper. I expect everything I do here for the PoGo would also work for that. Anyway, on with the code…


Time to get down to business then. First to see if I can get the Pi to successfully send an image over bluetooth to the PoGo.

I’m using a TOPDIGI UA01 and the PoGo already has its own bluetooth hardware built in.

As an aside, the PoGo also has a USB port which you use when sending images straight from a digital camera to the printer. I’m sure it’d be possible to print from Pi to PoGo using this and maybe the cups package or similar but the advantage of bluetooth will be that in the final setup the Pi (and all its wires) can be hidden away in the corner away from the printer and the printer itself will only require a power cable, like in the setup Creature have created…

I believe Creature are using an Apple script to do the final push to the printer over bluetooth (rather than Python which the rest of their code is written in). Obviously we don’t have this luxury on the Pi so we’re going to have to do some of the bluetooth legwork ourselves…

…unfortunately the most popular bluetooth package for linux is something called Bluez which provides little to no documentation and for which most of the information on the internet is out of date. There is a way to work with Bluez through Python which I may end up switching to as I’ll probably code up the Instagram photo grabber in Python and I believe the whole process would be easier through an X GUI but for now I’m working only on the terminal.

Step 1: Download a test image file to print with something like

wget http://www.mytesturl.com/thisisatestimg.jpg -O testimage.jpg

(Note that I think the PoGo can only cope with jpgs and is sometimes even fussy about those)

Step 2: Install some bluetooth packages. Unfortunately I’ve been playing around with lots of ways to get this up and running and don’t know exactly which of the packages I’ve downloaded are the ones making it work! I started with this…

sudo apt-get install bluetooth bluez bluez-utils ussp-push

…but have subsequently removed bluetooth and bluez-utils and it still seems to be working (?).
Once that’s all installed, it’s worth checking that the dongle is being recognised. I rebooted the Pi with it plugged in and ran “lsusb” which shows the connected devices which included “Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)” in my case).

Step 3: Do some bluetooth checking…
Is bluetooth running?

/etc/init.d/bluetooth status

Can we find bluetooth devices? (Turn on the PoGo before this step so it can be found!)

hcitool scan

At this point we should get a list with and entry for the PoGo that looks like this (where Ys and Zs are numbers specific to your device)…

YY:YY:YY:YY:YY:YY Polaroid ZZ ZZ ZZ

Step 4: Attempt a print. I need to start again on all this with a fresh install to check exactly what’s required but it may now be as simple as these two lines…


sudo rfcomm bind /dev/rfcomm0 YY:YY:YY:YY:YY:YY 1
ussp-push /dev/rfcomm0 sourcefile.jpg destinationfile.jpg

If that says…


name=sourcefile.jpg, size=123456
Connection established

… you may be there and the PoGo may print your test picture. It does for me but that may be due to something I did and have forgotten and therefore isn’t in the steps above. If it’s not working here are some other things to try…

1. sudo rfcomm -a should show an entry for your device. If not the bind didn’t work. The binding of the device to rfcomm0 can be stored in /etc/bluetooth/rfcomm.conf which may help ensure it’s ready at start up.

2. I would expect the PoGo to require a pin code to be specified at some point along the way (it’s required when I print from my Windows laptop and is 6000 for all PoGos) but we haven’t specified one yet! I spent a long time struggling with obexftp thinking that not having specified a PIN was my problem. There’s a lot of out of date info around the web about how to provide Bluez with a PIN. The following is, I believe, the correct method now…

Create this file…

/var/lib/bluetooth/XX:XX:XX:XX:XX:XX/pincodes

…where XX:XX:XX:XX:XX:XX is the bdaddr of your bluetooth dongle which you can get from

hciconfig hci0 -a

Now in that file we write a line for our particular device we’re trying to pair with a PIN using the format…

YY:YY:YY:YY:YY:YY 1234

…where YY:YY:YY:YY:YY:YY is the MAC address of the device (PoGo/phone/etc) and 1234 is the PIN (6000 in the case of a PoGo).

3. There is some useful info here about pairing to a phone which uses some similar steps and may be of use…
https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto

Tags: , ,

Comments 2 Comments »

This thing called Instaprint caused a bit of a stir a little while back. The idea is it sits on the wall at a party/conference/whatever and then as people post photos to Instagram at the event, the printer finds and prints them automatically…

product_shot_2_v1_display

Pretty cool and it’ll cost you a cool $5000 to rent it for half a day at your event! So some people over at some other creative agency came up with a cheaper solution using a Polaroid PoGo, cunningly named Cheapstaprint

cheapstaprint

The great thing about the PoGo is that it’s designed to be wireless (unfortunately the battery life is terrible so it doesn’t really work out that way) so that you can send it photos from your mobile phone over bluetooth on the move. According to the blog post, they’re running some PHP (and maybe some Python?) on a nearby old computer (an Apple, I think) to do all the Instagram hunting and then push the photos to the PoGo over bluetooth. Simple enough and given the PoGo costs around £60, a much cheaper solution.

I’ve had the PoGo for a while and it doesn’t see a lot of use and now I have a Raspberry Pi and am looking for ways to play with it. Tiny computer + tiny printer = of course I’m gonna give it a go!

Tags: , ,

Comments No Comments »