| 1 | Kernel driver `matorb.o' |
|---|
| 2 | ======================= |
|---|
| 3 | |
|---|
| 4 | Status: 'Beta', but it's so simple that it may be in its final state |
|---|
| 5 | |
|---|
| 6 | Supported devices: |
|---|
| 7 | * Matrix-Orbital (www.matrix-orbital.com) displays. Developed and |
|---|
| 8 | tested on the LCD2041V, but should work with all their displays. |
|---|
| 9 | Prefix: `matorb' |
|---|
| 10 | Addresses scanned: I2C 0x2E |
|---|
| 11 | Datasheet: Publicly available at the Matrix-Orbital web site |
|---|
| 12 | (www.matrix-orbital.com) |
|---|
| 13 | |
|---|
| 14 | Author: Frodo Looijaard <frodol@dds.nl>, and Philip Edelbrock |
|---|
| 15 | <phil@netroege.com> |
|---|
| 16 | |
|---|
| 17 | Main Contact: Philip Edelbrock <phil@netroedge.com> |
|---|
| 18 | |
|---|
| 19 | Module Parameters |
|---|
| 20 | ----------------- |
|---|
| 21 | (I'm not positive about these, so don't take this as granite) |
|---|
| 22 | * force: short array (min = 1, max = 48) |
|---|
| 23 | List of adapter,address pairs to boldly assume to be present |
|---|
| 24 | * force_matorb: short array (min = 1, max = 48) |
|---|
| 25 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 26 | a `bt869' chip |
|---|
| 27 | * ignore: short array (min = 1, max = 48) |
|---|
| 28 | List of adapter,address pairs not to scan |
|---|
| 29 | * ignore_range: short array (min = 1, max = 48) |
|---|
| 30 | List of adapter,start-addr,end-addr triples not to scan |
|---|
| 31 | * probe: short array (min = 1, max = 48) |
|---|
| 32 | List of adapter,address pairs to scan additionally |
|---|
| 33 | * probe_range: short array (min = 1, max = 48) |
|---|
| 34 | List of adapter,start-addr,end-addr triples to scan additionally |
|---|
| 35 | |
|---|
| 36 | |
|---|
| 37 | Description |
|---|
| 38 | ----------- |
|---|
| 39 | This driver provides access to the Matrix-Orbital display devices. These |
|---|
| 40 | devices are usually in the form of a small LCD (20x4 is typical) screen |
|---|
| 41 | which is mounted in a carrier which is then mounted into a 5.25" drive bay |
|---|
| 42 | of a computer. |
|---|
| 43 | |
|---|
| 44 | This driver allows the user to send any data to the display to control or |
|---|
| 45 | display anything which the display supports. |
|---|
| 46 | |
|---|
| 47 | For more information on the displays or of particular features/command sets |
|---|
| 48 | go to: |
|---|
| 49 | |
|---|
| 50 | http://www.matrix-orbital.com |
|---|
| 51 | |
|---|
| 52 | |
|---|
| 53 | Use |
|---|
| 54 | --- |
|---|
| 55 | To use, just redirect the base-10 ordinal value of bytes (or chars) to the |
|---|
| 56 | display. For example, to clear the screen and write a simple message, you |
|---|
| 57 | could do this: |
|---|
| 58 | |
|---|
| 59 | # To clear the screen, send byte 0xFE and the char 'X' (ordinal 88) |
|---|
| 60 | echo "254 88" > /proc/sys/dev/sensors/matorb*/disp |
|---|
| 61 | |
|---|
| 62 | # To display "hi there" |
|---|
| 63 | echo "hi there" \ |
|---|
| 64 | | perl -e '$_=<STDIN>; while (/(.)/gc) { print ord($1)," "; }' \ |
|---|
| 65 | > /proc/sys/dev/sensors/matorb*/disp |
|---|
| 66 | |
|---|
| 67 | I've written a simple sample program (in Perl) to display a full screen |
|---|
| 68 | of text (which is fed in on standard-input) to the display. It is in the |
|---|
| 69 | prog/matorb folder of this project. |
|---|
| 70 | |
|---|
| 71 | I think the displays are very attractive and add a neat sort of 'status' |
|---|
| 72 | display to things like servers. It would be very simple to either |
|---|
| 73 | make a script daemon (or modify the healthd provided in this project) |
|---|
| 74 | to display a current status of health info (voltages, fans, temps, etc.) |
|---|
| 75 | on the display. Let's see Windoze do *THAT*! :') |
|---|
| 76 | |
|---|
| 77 | |
|---|
| 78 | Issues |
|---|
| 79 | ------ |
|---|
| 80 | Redirecting too long of a string (32 ordinals seem to be the max) to 'disp' |
|---|
| 81 | seems to cause problems. Keep things in small chunks (like lines). |
|---|
| 82 | |
|---|
| 83 | Built in functions (screen clearing, etc.) were initially planned to be |
|---|
| 84 | added as other device files (other than just 'disp'), but these functions |
|---|
| 85 | are just as easily done by sending the command sequences to disp (as shown |
|---|
| 86 | above when clearing the screen). This also ensures that the driver will |
|---|
| 87 | be compatible with all the displays. |
|---|
| 88 | |
|---|
| 89 | Detection is very poor (as of this writing, anyway). It looks for a device |
|---|
| 90 | at 0x2E and asumes it is a display. Unfortunately, the 'beta' firmware |
|---|
| 91 | the Matrix-Orbital people gave me doesn't have good detection abilities to |
|---|
| 92 | it (it ignores reads... it used to lock up the bus on reads, so at least |
|---|
| 93 | it doesn't do that any more! :'). If they provide an easy way to 'sense' |
|---|
| 94 | that it is a display (and what kind it is?) then I will add support for it. |
|---|
| 95 | |
|---|
| 96 | Let me know if you have problems which you can't figure out |
|---|
| 97 | (phil@netroedge.com). |
|---|