LinkM - USB to I2C

LinkM is a USB adapter that addresses two of the most frequently-requested BlinkM features. It enables you to program BlinkMs without setting up a separate I/O board, such as an Arduino. It also lets you program or control multiple BlinkMs simultaneously. Plug it in, plug in a BlinkM, fire up the BlinkM Multitrack Sequencer, and start programming BlinkMs. It requires no drivers (when used with most operating systems), additional software or hardware. BlinkM's sold separately.

  • Driverless. Identifies itself as a USB Human Interface (HID) class device, which nearly every operating system supports without requiring additional drivers.
  • Has no exposed components. Its hard plastic case makes it appropriate for long-term installation.
  • Synchronizes groups of BlinkMs with a metronome signal so that their patterns do not drift in time (this even works when the LinkM is only connected to a power supply, such as an iPod USB charger).
  • Works as a generic USB->I2C device, making it compatible with hundreds of standard I2C devices.
  • Contains an I2C buffer chip for driving longer I2C bus cables.
  • Open Source firmware, available from Google Code
  • Open Source libraries for C, Java and Processing that work on Mac OS X, Windows XP/7 and Ubuntu Linux, also available from Google Code.
  • Acts as an I2C master with built-in BlinkM metronome for synchronizing groups of BlinkMs so that their patterns do not drift with time
  • Additional I/O pins on the board. AVR hackers can crack open the case to get access to digital I/O pins and use LinkM as a standalone microcontroller platform.

LinkM - USB to I2C Product Help and Resources

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

3 Programming

Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

1 Electrical Prototyping

Skill Level: Noob - You don't need to reference a datasheet, but you will need to know basic power requirements.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • MrAureliusR / about 8 years ago / 1

    I don't understand, why wouldn't you just buy a Bus Pirate for the same price?

  • TheGreat837 / about 14 years ago / 2

    right when i headed for here from seeing this on ThingM's site, this showed up.
    MY LIFE IS COMPLETE, well except for maybe HTC dying...

  • Member #703173 / about 9 years ago / 1

    what kind of connector should i put on my LED strip to use this?

  • I don't have any GPIO pins available on my BeagleBone Black because I'm using the Octoscroller cape. Can this be used to communicate between the BBB's USB port and an Arduino's I2C pins?

  • Member #327032 / about 10 years ago / 1

    Does anyone know if you can change the I2C clock speed on this device from 100KHz to 10Khz?

  • Lord Wheezy / about 12 years ago / 1

    Can this be used to read and write to I2C EEPROMs?
    How hard would it be? (I'm fluent in c++, and c#; proficient at c and can make my way through java if necessary)

  • p.kusmierski / about 13 years ago / 1

    If you feel like a little hacking, you can also try to get I2C from your PC/Laptop's VGA connector:
    Interfacing I2C the easy way

  • Halibatsuiba / about 13 years ago / 1

    (New to i2c...) But what if I would like to use this adapter with i2c devices requiring much more power than what this can provide? For example few servos with "Openservo" ( Can I just hook up beefier power supply to i2c vcc and gnd lines or will it fry something?

  • EvanT / about 13 years ago / 1

    "Acts as an I2C master with built-in BlinkM metronome for synchronizing groups of BlinkMs so that their patterns do not drift with time"
    You have this twice

  • Member #185829 / about 13 years ago / 1

    Nice turnkey solution to interface with BlinkM...with a decent Java library available...which could use more JavaDoc. ;)
    My only complaint is the hardware packaging. This module could have been far shorter...and trying to stuff it and a female-to-female USB adapter into a small-sized illuminating device (e.g., build status orb, Munny) is difficult. I find that arrangement preferable to leaving the dongle plugged into my PC and then remoting to the illuminating device with a ribbon cable. In my config, you can use a standard USB cable to connect the illuminating device and your PC...but this dongle is far too long for that arrangement for most f my applications.
    Sure, I could bust out a soldering iron and solve the problem, but seriously, if I was inclined to do that, I probably wouldn't have bought this over and arduino mini in the first place. :)
    Wish that it was a third of it's length...and was USB female by default.

  • esmphoto / about 13 years ago / 1

    Hey I have a question about this nifty litte usb key,
    A quick search of HID on sfe turned these up, and I don't know much about I2c, Vusb, etc. But what I'm looking to do is emulate a keyboard in several win/mac machines... Such that I could send a serial string to something in the usb port of each computer and it would appear on the computer as if it had been typed.
    Possible with this? Love the form factor/price

  • Garthwebb / about 13 years ago / 1

    Let me say this is a great device! I'm working on a project that needs I2C support (happens to also be a LED driver, the PCA9635PW) and I'm using the LinkM as a generic laptop to I2C interface.
    One issue I'm having however is speed. I'm using the linkm-tool from the SVN checkout to control my devices. I've altered the source code for that tool to repeatedly call 'usbhidGetReport' with 3 bytes of control data for my devices. Adding timing calls around 256 iterations of this I'm seeing about 4 Kbit/s throughput.
    I'm sure there's some loss in translating the USB serial data into the I2C format, but given that the max speed for I2C is 3.4 Mbit/s and USB is at least 1.5 Mbit/s, that's at least 3 orders of magnitude difference.
    Am I missing something? Have others gotten faster transfer rates through this device? Thanks!

    • todbot / about 13 years ago / 1

      With the factory firmware, LinkM shows up as a USB HID device with 16-byte report packet size. Since USB HID places a limit on the report update rate of 50Hz (I think), this puts an upper limit on the throughput.
      However, the LinkM firmware is completely open source, based on the V-USB project. And LinkM has a USB bootloader on-board, and corresponding host-side command-line tool based on V-USB's BootloadHID. So updating the LinkM firmware with your own for higher throughput is very possible.

  • DMKitsch / about 13 years ago / 1

    Is there a stable, complete build of a program I can use this with that doesn't require much/any computer programming knowledge to use

    • MikeKuniavsky / about 13 years ago / 1

      You can use our Sequencer software to program up to 8 BlinkM device channels simultaneously through a LinkM. It doesn't require any programming knowledge to use. You can download it from

  • GotDOT.NET / about 14 years ago / 1

    Any one used this device with DOT.NET VB or C#?

    • ransomhall / about 13 years ago / 1

      pretty late on this one, but yes, you can use .NET MicroFramework to wrap the native calls. NETMF supports I2C out of the box. I wrote a wrapper in C# to run on a Fez Domino (also sold at SF). The code can be found here.

    • MikeKuniavsky / about 14 years ago / 1

      There are both Java/Processing and C APIs for it. If you can get VB or C# to talk to Java/C libraries, it should work. Also, the firmware is Open Source, so if you'd like to make a build that works with DOT.NET we'll certainly point people to it in the future. Thanks!

Customer Reviews

No reviews yet.