I²C-Bus for Linux
This page preserves one of the first open source projects Simon Vogl set up: The implementation of the i2c bus subsystem in the Linux kernel. The rest of the page saves the contents of the original I2C Bus driver homepage.
We are still providing near-to-hardware design and implementation services on host- and embedded systems, be it for FPGA integration, optimized video pipes, sensor integration and other needs. Contact us for further information.
Intro: What's it do?
The I²C-Bus is a simple 2-wire bus that allows micro-controllers and computers to connect to specialized IC's like videotext-decoders, DTMF generators, and many others. There is also a wide range of other I²C-bus chips that offer a more wide-range application like ad/da converters, switches, digital potentiometers et. al. Most of the frame grabber and TV tuner cards on the market use the bus, as another example.
The Software
- Finally! The driver has made it into the current development kernel: If you download a kernel >= 2.3.34, you get it nicely integrated in the main source tree :)
The CVS tree is of course in sync with the kernel sources, and should only be used if you need a driver for older kernels (2.2,2.0), or if you'd like to experiment - you'll find the latest changes there before they are stable enough to enter the kernel.
- The CVS-Sourcetree is up - thanks to the LM-Sensors developers! You can get the latest sources of the i2c bus driver from their cvs-Server. For details look at their download page!
If you want to have write access to the repository, please contact Philip Edelbrock phil@netroedge.com.
What needs to be done? - TODO:
- New: Rolf Offermanns has a Terratec Radio card and needs a driver for it! If anyone volonteers to write it, he donates a radio card - contact either me or him for it.
The Hardware
In former versions of this project page, I divided adapters into two groups: Those using the bit-banging algorithm and others, which use the PCF 8584 I²C-Bus controller. This division is still true, but needs additions, as other hardware types have been implemented by various people, like support for SMBus-controllers, or for the SAAA7146.
Therefore, here's a new division into several groups that show different application areas of adapters:
- Commercial I2C Controllers
You don't want to solder on your motherboard? Then these are for you....- Totalphase produces an I²C/SPI Host Adapter that connects to the USB bus and comes with Windows and Linux software libraries. For more information have a look at their website.
- Multimedia adapters
Have a look at your graphics card - I bet you find a tuner, eeprom or some other i2c-device.- BTTV
-based boards and other cards supported by the video4linux developers, they are currently porting the existing code to support my i2c modules.
- System Management
- LM-Sensors Have a look at the lm-sensors package, there are already a lot of hardware types (i.e. motherboards) supported - go to their homepage for details.
- Experimental adapters
For all the experimenters, there are several ways to get new busses to your box:- Philips parallel port adapter The device used by Philips, consisting of one TTL chip and some resistors to convert the signals for the parallel port.
- LM75-demoboard sent out by National Semiconductors. Here's a patch by David Armstron for this little device. The patch is against 2.4.1, but should be easily merged with other versions as well.
- PCF 8584 on EPP port A clever design developed by Johan Van Driessche: A PCF 8584 interface adapter sitting on an EPP port, note his additional line drivers that result in better pulse shapes.
- Pybe's PCF8584 ISA-Bus adapter:http://www.IAE.nl/users/pybe/weather/isa8584.htm
- Hans Berglund wrote the driver for the Elektor board
- Velleman K8000 Velleman K8000 parallel port interface
- ELV parallel port adapter
If you'd like to build this beast, here's the schematic. You may also read some comments on the circuit: a word from the designer.
This list is by no means complete - tell me if you want to see something mentioned.
Documentation
Here you'll find some useful documents regarding the driver and the i2c-bus in general.
- Linux-i2c mailing list: send mail to majordomo@tk.uni-linz.ac.at with a line saying
subscribe linux-i2c
to sign up to the mailing list!
- Pybe Faber has written an excellent page clarifying the structure of my driver. Thanks, Pybe!
- The I2C-Bus Specification by Philips Semiconductors (this is a local copy)
- Victor Himpe has his most comprehensive FAQ online.
- Le bus I2C - a FAQ for all the french speaking people around
- I wrote an article for the German Linux Magazin. You can read my online version, but keep in mind that it covers the old version of the driver!
Links of interest
In this section, you'll all sorts of links to different places around the world, that deal with the same topic. Just what makes Hypertext worthwile :)
- You can also send me an e-mail if you like: Replace the _at_ in the address, please
Although the driver is GPL'ed, donation of hardware is recommended, as I have only limited resources to test the code.
Projects
- Matthias Prinke developed a PCB-Version of the parallel port adapter, you can get the postscript files of the layout here.
He also wrote a program to display text on a LCD-display over a PCF 8574 (lcdtext-1.1.tgz) - Useful newsgroups for more general electronic questions:
- sci.electronics and subgroups,
- de.sci.electronics for the german speaking folks
For other hardware-related stuff, have a look into my bookmarks
last modified: 28 12 99