For the 8/1-9/30 2006 Contest
Goals and Wishlist for LCDKuro
This project is to add an LCD display device to the kurobox. The display will be used to provide useful information and a handy console for logging in with a keyboard.
The goals I have set for this project are
- Provide a small console with a LCD display and a keyboard that can be used for logging in and running command line commands
- Provide the typical LCDProc functionality
- I would like to be able to provide multiple virtual consoles selected with alt-Fkey like on many typical linux distributions. This would ideally include switching between the console logins and the LCDProc functionality.
- I would like to have the LEDs on the side of my chosen LCD device to provide some useful information, e.g. flashing for disk activity, mimic the kurobox's LEDs, blink when new mail arrives, blink when a new topic is posted to the kurobox forums, whatever.
- Crystalfontz CFA635-TMF LCD Display
I have chosen the Crystalfontz CFA635-TMF (CFA635TMFKU1) for this project. It's a 20x4 display with a USB interface, has good support in LCDProc, has some nifty buttons that might prove useful and most of all, it looks cool. It is designed to fit in a typical 5-1/4 half-height PC bay on the front panel of a PC case. I am thinking I will install the display in a small box and attach it directly onto the keyboard or set it next to the keyboard. I ordered one through the crystalfontz web site ... it includes a USB cable with the proper connector. The total cost of $81.50 includes $9.00 for shipping. This seems a bit high, but considering the cool factor of the envisioned product, I can live with it.
- USB Keyboard
I already own a USB keyboard I am going to use for this project - if you don't have one, I think they can be had for around $10.
The latest version of LCDProc is 0.5.0 as of 4/15/2006. I use gentoo on my kurobox, and the latest version of LCDProc available in portage is 0.4.5 which is 2 years old. I think I want to use the latest 0.5.0 so I will either build from source or create a custom ebuild if I have enough time. As I am writing this, there is only a month left in the contest.
- Keyboard support
Using a keyboard on the kurobox will require support (I think) in the kernel. This support is not provided in the regular kurobox kernels so a custom kernel will have to be built or possibly just a module. Someone has created a virtual console driver for LCDProc, I am hoping this will work for the LCDKuro project. If not I may have some long nights ahead coding.
At the start of the project, I discovered my kernel does not have USB Keyboard support. In my .config file I have:
# # USB HID Boot Protocol drivers # # CONFIG_USB_KBD is not set
I am using Sylver's 18.104.22.168 uImage kernel I so I prepared the kernel source per his instructions he graciously provided in the kurobox forums. This is what I did to create a new kernel and keyboard modules:
# cd /usr/src # wget http://kernel.org/pub/linux/kernel/v2.6/linux-22.214.171.124.tar.bz2 # wget http://genbako.vodapone.com/kurobox-sources-2.6.17.patch # wget http://www.holtmann.org/linux/kernel/patch-2.6.17-mh1.gz # tar xjf linux-126.96.36.199.tar.bz2 # cd linux-188.8.131.52 # patch -Np1 < ../kurobox-sources-2.6.17.patch # gzcat ../patch-2.6.17-mh1.gz | patch -Np1 # vi (or nano) Makefile # add -mh1 to EXTRAVERSION = .1, result: EXTRAVERSION = .1-mh1 # cp /boot/.config .config # export ARCH=ppc # make oldconfig # this step may be uneccessary but I did it anyway # make menuconfig # select Device Drivers -> USB support # # navigate down to USB Human Interface Device (full HID) support # # press 'M' to select support as a kernel module # # Exit # # Exit # # Exit Yes (Save configuration) # make vmlinux && make modules && make modules_install
Also, to be sure since I didn't know which compiler Sylver used to build the kernel, I re-built my uImage kernel like this:
# wget http://www.kurobox.com/sylver/u-boot/mkimage # chmod 0755 mkimage # mv mkimage /usr/bin/ # make uImage # mv /boot/uImage /boot/uImage.bak # cp arch/ppc/boot/images/uImage /boot/ # mv /boot/System.map /boot/System.map.bak # mv /boot/.config /boot/.config.bak # cp System.map /boot # cp .config /boot
The newly built usb module is usbhid. With the new module in place in /lib/modules/kernel/184.108.40.206-mh1_kuro-box (from make modules_install), the driver can be checked with the following command:
# modprobe usbhid # # now plug in your keyboard # dmesg usb 2-1: new low speed USB device using ohci_hcd and address 3 usb 2-1: configuration #1 chosen from 1 choice input: Logitech USB Receiver as /class/input/input2 input: USB HID v1.10 Keyboard [Logitech USB Receiver] on usb-0000:00:0e.0-1 input: Logitech USB Receiver as /class/input/input3 input: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:0e.0-1
My dmesg is now showing a keyboard and a mouse (I'm using a wireless logitec combo, I won't be using the mouse for this project).
Connecting the Display
The day the display arrived. Wow, it looks great. I connected the display to my kurobox with the provided USB cable. Output in dmesg:
usb 2-1: new full speed USB device using ohci_hcd and address 5 usb 2-1: configuration #1 chosen from 1 choice
That's it. I did not expect more than that. It lit up and looked just like the picture above. Next step is to get LCDProc talking to the display.