OpenOptimus
From OoKoo.org
acroacel
This project is intended to provide a generic linux driver for OLED-based hardware made by Art. Lebedev Studio.
The current goal is to support the Optimus Mini Three keyboard.
You can access the SVN at this url: http://ookoo.org/svn/openoptimus/ - Last release is 0.1.0 (SVN 52).
You can watch SVN commits on CIA.
Art. Lebedev Studio is OK for the developpement of an open-source driver.
You can submit bugs or feature requests via the Mantis bugtracker at http://openoptimus.org/mantis/ .
Contents |
Optimus Mini Three keyboard
Status
Currently in alpha stage. Lots of features are missing, and the driver is not usable in its current state. Please come back for news!
Can display 96x96 PNG images, and is also able to detect key press.
Current features
- Uses libusb to communicate with device (no specific kernel driver needed)
- As the kernel-provided module for pl2303 didn't work in our case, we recoded the driver with libusb
- Uses libpng to read PNG images, and display them
- Detects when a button is pressed
- Implements OLED_PROTOCOL_SET_IMAGE, OLED_PROTOCOL_POWER_ON, OLED_PROTOCOL_POWER_OFF, OLED_PROTOCOL_SHOW_OLED, OLED_PROTOCOL_GET_IDCODE, OLED_PROTOCOL_SET_IDCODE, OLED_PROTOCOL_SET_BRIGHTNESS.
- Support for more than one OLED Mini Three connected to the same computer
- All USB code is in a static library
- Now a perl module is available, since SVN 86 you can build the optimusclient library as a perl module.
- Run this command from the trunk:
make optimusclient.pm
- It will compile the optimusclient perl module, and the .so file, using swig (you'll have to install it to make this procedure work). You can now use the newly built extension in any perl program, by using use optimusclient (.so and .pm files must be either in current directory, or installed in a directory in the perl modules search path).
TODO
- Optimize USB code
- Create daemon-based system, with an UNIX socket for communications
- Use autoconf/automake (instead of a single Makefile)
- Better error treatment
- New peripheral detection (60% -> now have a optimususb_scan() function)
- A nice logo for the Linux driver, eg [Li] [Nu] [X] (or something like that)
- Implement a way to simulate keyboard actions (to associate with mini three buttons)
- Support for WindowMaker applets
BUGS
- Still need to find out how to prevent the OLED Mini Three from powering off (it does shutdown automatically after a few seconds). Need new logs with SnoopyPro, or some analyse on provided C/C# code.
Technical
The hardware seems to be a pl2303 chip, as its vendorid/productid are 067b:2303. This is confirmed during the windows installation as windows shows the name Prolific2 when new hardware is found.
This chip is a low-cost serial-port (RS232) which is used to communicate with the OLED Mini Three keyboard, using a simple protocol, available from Art. Lebedev Studio.
HowTo test this driver
First, checkout the SVN by typing :
svn co http://ookoo.org/svn/openoptimus/ -r52
Then cd to the source directory :
cd openoptimus/trunk
Then compile :
make
Then run :
./oledd
An image should appear on the 3 OLED displays of your Optimus Mini Three keyboard. Pressing keys should display an output on the console.
