Use it! - Upload images


The SpokePOV software allows you to easily upload, download, verify, manipulate, fold, spindle, etc. your SpokePOVs! The software is written in C++ and is available as a Windows / MacOS X executable (download here).

Note: Some people report it doesn't work on Intel Macs, will try to get this fixed soon and update the software.

The older, wxPython version documentation is here.

Don't forget: Even if you only want to display 1 image, the SpokePOV will always go through all the banks. So if you have 4, you must upload the same image to all four banks!

Don't forget...take the jumper out of the USB dongle if you've got one! Otherwise your batteries will go pop!


For windows users: download the zip file and uncompress it somewhere convenient. If you are using the parallel port, download and run/install giveio (from the Download page) to let the software talk to the parallel port.

For MacOS X download the SpokePOV dmg and copy the application to somewhere convenient.

Now, start up the software! You will see a blank screen, there are menus and a connect button. Don't connect yet, you must first configure the port.

First select USB, serial or parallel port (on Mac, you can only choose USB or serial).

Next, for serial or parallel, select which port to use.

Important Note: under MacOS X, using a USB/serial adapter, sometimes there are multiple names for one port (/dev/cu.KeySerial1 and/dev/cu.USA19H1b1P1.1 for example). Try both! I've found they act differently and get better reliability with some over others!

Check your Device Manager under windows, to verify what ports you have available, if you're not sure.

Next, select the Communcation Delay. This is only really important if you're using a USB/Serial adaptor. These are very slow devices (despite being USB) so we need a higher delay.

For USB, the delay is ignored so it doesn't matter what it's set to.

For parallel port as well as 'direct' serial (where the computer has a serial port right on the motherboard) use a delay of 1000 uS. Increase it up to 2000 uS if it's being flakey.

For USB/Serial adaptors, start at 4000 uS and increase it by 1000 until you get consistant results.
Lastly, select what size wheel you're using - BMX (22 LEDs) or MTB/Road (30 LEDs).
Finally, set the hub size. Measure your hub diameter. Better yet, measure how far the end of the attached SpokePOV is from the center of the wheel and then multiply by two to get the diameter. This will define how big the white space in the middle of the wheelpanel is and will give you the most precise images!

The configuration will be saved so you only have to do this once.

Testing the connection

A big problem for people is figuring out whether there's a problem with their spokePOV dongle or software. Therefore there is now a port testing feature that will help you debug the communications system using only a multimeter!

Dont forget...take the jumper out of the USB dongle if you've got one! Otherwise your batteries will go pop!

Select the Test Port feature from the configuration window.

Make sure that you are testing the right kind of port and the correct connection.
Now go thru all the steps, verifying the connection. You can Test Port... on the USB dongle but the pictures show the older parallel/serial interfaces. Just pay attention to the box header and ignore that the PCB looks different.

If it worked out, you should get this message!


Turn on the SpokePOV, preferrably by 'hard reset' - removing and replacing a battery. Make sure you have recharged/good batteries. Plug the dongle into the SpokePOV and click on the Connect button to connect to the SpokePOV.

Once you connect, you can see the graphical interface for editing what image will be displayed. The wheel panel shows a simulated image of what is in the SpokePOV.

The main controls for the SpokePOV are in a panel below the wheel panel. The three buttons are used to 1) write the image currently in the wheel panel to the connected SpokePOV 2) read the image currently in the connected SpokePOV into the wheel panel and 3) verify that what's in the wheel panel is also what's in the SpokePOV.

There are also 3 controls up top, these are configurations for the entire SpokePOV. The rotation offset control allows you to change what the offset from 0 is. What this means is: when you upload an image, you'll do it right side up. That means that the SpokePOV starts displaying from the top, rotating clockwise. However, you're likely to put the magnet not at 12 o'clock but rather somewhere else, depending on whether you put the magnet on the fork, or chainstay, etc. Here is a diagram of where these frame parts are located and some rough numbers you can start with. The numbers range from 0 to 255 starting at the top and rotating so that 255 is right next to 0 again.

Location Value
Fork 220
Chainstay 64
Seatstay 32

You can also set the animation timing, which is how many wheel rotations the spokePOV will spend at each animation frame before going to the next bank.

The images are stored in the 25Cxx EEPROM, each image takes 1Kbyte of storage. Therefore a 1K EEPROM (25C08) will store one image, a 2K EEPROM (25C16) will store two and a (25C32) will store four.

  1. The firmware in the microcontroller automatically goes through the EEPROM showing each image, without knowing how large the EEPROM is. Therefore, you can swap out a different EEPROM at any time you want.
  2. This also means that you have to fill all the banks with something. You can't just upload an image to the first bank and nothing to the other three, or the spokepov will display 'nothing' for 3 out of the 4 animation cycles.
  3. You can sync all the spokepovs by quickly resetting them before you start.
  4. Animation doesn't work great, but it does work. One way to improve it may be (assuming you have more than one spokepov) to leave out the hall effect sensor on all but one and wire the ground and sense wire (but not the VCC power wire) all together so that they are forced to sync together. You'll have to mess with the offset value though.

There is also a toggle for mirroring the images. Since SpokePOV is double sided, you can have the image on the opposite side either be mirrored (so that it looks backwards on the opposite side) or not (so it appears exactly the same on both sides). For example, if you have text you want to display, the image should not be mirrored. However, if you want an arrow that points in the direction you're biking, then you want it to be mirrored.

When you start up, and connect, the wheel panel is empty. You can click (and drag) in this window to 'draw' pixels.

This is a very slow process as the software isn't very fast, it's better to import a bitmap (.bmp file) from a different program and then edit it. The wheel panel has one square for every pixel of resolution. If you're using this with a BMX configuration, the wheel will have fewer LEDs so it will appear a little different. The empty spot in the middle corresponds to the hub size, the space where no image appears.

First thing you probably want to do is import a bitmap image. There are a couple example bitmaps distributed with the software.. Bitmaps must be monochrome or at least grayscale. The software assumes that 'white' pixels means no LED should be on and black pixel means a LED on. You'll get best performance if your bitmap is at least 600x600 pixels large.

When you import a bitmap, the software will automatically figure out what the image should look like. The imported image will appear in the background, the red lines show where the LEDs will be lit.
You can then move the image around (hand tool) and resize it (pull on the corner tabs, holding down shift will keep the image proportional).

The software tries to figure out what the image should look like, but as seen above, the bitmap isn't aligned perfectly. To touch up the image, click on pixels (or click and drag to draw & erase).

Now that you've done some edits, it might be good to save the image data file for later.

Now it's time to write the image data to your SpokePOV. Connect the dongle to your computer parallel/serial port. Perform a 'hard reset' on the SpokePOV (remove and replace a battery) and verify all the leds light up in order. Plug the programming cable into the SpokePOV. Press the reset button to make sure the SpokePOV is ready for upload.
Now click on the write button, and watch the ticker!

If all is well, the window will show the address incrementing and the LEDs on the SpokePOV will blink to show the progress. There are 1024 addresses, it should take 30-60s to write a full image. If you are using a USB/serial converter it may be much longer...You can manipulate the Comm delay to make it longer (less flakey) or shorter (faster).

You can also use the Read or Verify buttons to verify the contents, or read from the SpokePOV image bank into the panel.

Even if you only want to display 1 image, the SpokePOV will always go through all the banks. So if you have 4, you must upload the same image to all four banks!

Can't get it working? Don't worry, help is available in the forums!

Last updated on 2015-11-20 at 05.12.48 PM Published on 2014-04-17 at 04.10.04 PM