Friday, March 13, 2009

Linux and the Treo

I got a new notebook a while ago and put debian on it. While I had my treo running on my old notebook running debian without a problem I couldn't get my new notebook to synch using jpilot or any of the other standards. I just tried again and now I know what I was doing wrong.

I had jpilot and pilot-link etc and I'm running the 2.6.28-1 amd 64 debian standard linux kernel. Each time I would press the hotsync button on my palm, I'd get something like

[245227.264134] usb 6-1: USB disconnect, address 9
[245228.000084] usb 6-1: new full speed USB device using uhci_hcd and address 10
[245228.166546] usb 6-1: configuration #1 chosen from 1 choice
[245228.171749] usb 6-1: New USB device found, idVendor=0830, idProduct=0061
[245228.171755] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[245228.171761] usb 6-1: Product: Palm Handheld
[245228.171764] usb 6-1: Manufacturer: Palm, Inc.
[245228.171768] usb 6-1: SerialNumber: PalmSN12345678


And if I hotsynched again then the address would go up by 1. The instructions I found told me to select a /tty/usb? device with jpilot.

Today I found that I'm supposed to use usb:

Then it works fine :-) I don't know whether this option wasn't there last time I tried it with earlier versions of the kernel or whether I just found really old howto documents. Anyway now it's on this blog next time I forget I can find the answer...

Thursday, January 01, 2009

Twinhan Remote, Lirc and Freevo or How I spent my holidays

Ok Not all my holidays... We went home for a family Christmas and when I came back I decided to put the livepause plugin for our Freevo box. I'm spending a lot of time in a chair at the moment and it gave me something entertaining to play with.

Livepause Plugin

I followed the installation instructions on the freevo plugin page. Downloaded dvbstreamer, followed instructions, changed my freevo start up script (running debian) so that it started dvbstreamer and stopped it when I started and stopped freevo and I could pause live tv. Worked very well - thanks live pause writer :-)

Had to do a few tweaks:
- had to create the path to the buffer directory eg /tmp/freevo before starting freevo. Discovered that it would disappear on a reboot so I moved it to my /data directory.
- Looking in the log each time was very useful because it would show why it was failing eg typo, dvbstreamer not started, dvb card not released from last run etc.
- The instructions from the next section on the old dvbstreamer was useful too because it contained information on starting dvbstreamer etc.



All was not perfect in the livepause garden unfortunately. Key control was obviously coming from whatever player I was using and no keystrokes were getting to freevo which would allow me to rewind and fastforward, record and other funky features implemented by the kind livepause implementer.

After much fiddling around and searching I found a post which explained my problem. We are using our video through x11. This means that when we have mplayer, vlc or xine playing, they have the window focus and all commands are passed directly to them. Freevo is not being passed keystrokes.
There is a -win command for mplayer used by the mozilla plugin that could get around this (must explore).

A way for us to avoid this was to use a remote control with lirc. Happily we happened to have one handy so we could try it out. So I had to setup a twinhan remote control with lirc. This took several attempts.

Twinhan Remote and Lirc

The Twinhan remote control we have has a usb connector on the ir receiver. This is picked up as a keyboard and mouse event devices.

lsusb output:

Bus 003 Device 002: ID 6253:0100 TwinHan Technology Co., Ltd Ir reciver f. remote control



dmesg output

[ 6.465970] input: Twinhan Tech Remote Control as /class/input/input1
[ 6.487824] input,hidraw0: USB HID v1.10 Keyboard [Twinhan Tech Remote Control] on usb-0000:00:1a.2-2
[ 6.508907] input: Twinhan Tech Remote Control as /class/input/input2
[ 6.520802] input,hidraw1: USB HID v1.10 Mouse [Twinhan Tech Remote Control] on usb-0000:00:1a.2-2


When you plug it in it acts like a keyboard so you could just map the keys - except the ones that are more than one character and will not be passed into X. We needed lirc input to bypass the keyboard layer - this took my a while to put all the steps together. I don't know why what worked perfectly for other people did not work for me but I finally got it going :-)


I followed step 1 of these useful instructions from Adam Pierce. I installed his lircd.conf file and edited by hardward.conf file to include his settings etc.

This did not work - the twinhan remote is a usb device and it was still being intercepted as a keyboard.

I learnt that the lirc test program irw by default looks for a /dev/lircd and /dev/lirc. With usb devices the /dev/lirc is not created as it uses a link to the /dev/input event device created for the keyboard handler. When your run irw with no commands the first time it will kill your lircd and the second time you run it you will get

connection refused


I tried various other techniques which all failed.

Then I found this in the faq:

Start the daemon this way:
/usr/sbin/lircd -H dev/input -d /dev/input/eventn.


I modified it to use my device by id instead of the event which will keep changing.

lircd -H dev/input -d /dev/input/by-id/usb-Twinhan_Tech_Remote_Control_1111111-event-kbd


This gave me an irw that was displaying the keystrokes for everything but the power button.

I run debian and found what I needed to do to get the /etc/init.d/lirc start up file to use the settings from the hardware.conf file was to change the settings for the /etc/lirc/hardware.conf file from

REMOTE_DRIVER="devinput"
REMOTE_DEVCE="/dev/input/by-id/usb-Twinhan_Tech_Remote_Control_1111111-event-kbd"


which is what Adam Pierce had to

DRIVER="dev/input"
DEVCE="/dev/input/by-id/usb-Twinhan_Tech_Remote_Control_1111111-event-kbd"


Then I could start up automatically using
/etc/init.d/lirc start


On Adam Pierce's earlier version of his instructions a helpful poster had recommended adding this to the /etc/lirc/lircd.conf file to add the power button:

POWER 0×1001d


So I added it and it worked fine.

Now on to the freevo setup.

Wednesday, November 19, 2008

Nextwiki has new name

The TWiki fork has now decided on a name. They have decided on Foswiki. This is the most popular AND least hated of the names they'd decided to select from. Getting both of these is pretty impressive :-)

It's not the most scintillating name but it will not be embarrassing to mention to my managers so it meets my major wish list.

Sunday, November 02, 2008

x10 Automation and the cm15a

Haven't played with misterhouse for a while and since the last time we did, we upgraded the kernel on our freevo misterhouse media box.

Tried to turn on a light for a while and released that as we're using the usb cm15a as our pc interface, I needed to rebuild the module. Look at my last blog notes and found that they really weren't detailed enough for me to remember how it all worked. Bad bristley - should take better notes.

Searching google based on the sparse clues I'd left myself I found this useful post on the cm15a with the generic usb driver.

So a synopsis in case it disappears or I'm too lazy to look it up next time.

Doing cat /proc/bus/usb/devices shows me that I have the x10 usb device there but no driver.

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0bc7 ProdID=0001 Rev= 1.00
S: Manufacturer=X10 Wireless Technology Inc
S: Product=USB ActiveHome Interface
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=00(>ifc ) Sub=00 Prot=00 Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
E: Ad=02(O) Atr=03(Int.) MxPS= 8 Ivl=10ms


I already had the iplc driver code from this page sitting in my home directory from last time. I had already modified the code to work with the latest 2.6 kernels as recommended on the instruction page. I installed the kernel headers and kernel source (apt-get - I love Debian).

Then I built the cm15a driver - this is the bit I'd forgotten. I tried make -f Makefile.cm15a but what you're supposed to do is

make cm15a


This built the driver for me in /root/iplc/driver/linux-2.6/cm15a.d/cm15a.ko
From the cm15a.d directory I ran
insmod cm15a.ko


And then my at cat /proc/bus/usb/devices showed

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0bc7 ProdID=0001 Rev= 1.00
S: Manufacturer=X10 Wireless Technology Inc
S: Product=USB ActiveHome Interface
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=00(>ifc ) Sub=00 Prot=00 Driver=cm15a
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
E: Ad=02(O) Atr=03(Int.) MxPS= 8 Ivl=10ms


Note that Driver on the I line now says cm15a. And there is now a /dev/cm15a0 device.

Thursday, October 30, 2008

Watching the TWiki fork

I've been watching the TWiki fork for the last day with interest. Living with one of the "forkers" makes it more interesting but I also have to watch what is happening because we've used "The Project Formerly known as TWiki" at work for years. I need to make sure there will be an upgrade path for us.

What I hope is that they choose a name for the fork that doesn't turn up with search results about tv shows and puppies. A good example of why you should check trademarks and search engines before naming your project.

Sunday, August 03, 2008

X10 Automation

Last Sunday I was looking at lighting design on the web again. With our plan to get cover the dreaded vermiculite ceiling, we'll need lights. All the lighting sites say use a mix of lighting and we didn't just want to put in newer versions of the overhead dome lights when we finally got the new ceiling. We have these lamps around the room but it's quite awkward to get to the switches to turn them on and off because of other furniture in the way so we rarely use them.

So last Sunday I ordered 2 appliance modules, a TM13 appliance module/transceiver, a little x10 wireless remote control and a cm15a usb computer interface. The remote control was part of the kit with the appliance modules and was my backup plan if I couldn't get the usb driver working with linux very quickly.

The package arrived on Wednesday. As toys go it almost qualifies as a dismal failure - I plugged a lamp into the TM13, pressed the corresponding button on the remote control and it worked. Straight way. I didn't have to modify anything - that's no fun :-)

Just as a record of what information I found:

Then I plugged the usb module into my computer. We're using debian testing 64 bit for our tv box now. Found the module code on line thanks to Linux home automation. Got the linux headers kernel package for our kernel.
Found this post on modernizing the module a bit for a later 2.6 kernel.

Read the README code and built the module.

I found various versions of mh integration of the CM15a - and finally found what I think is the latest version which worked.
useful post

So it works - except for some reason the power point the tv is plugged into - probably the crappy old wiring in our apartment block.

Using misterhhouse by the way.

Saturday, April 19, 2008

Freevo and the Aver Tv Volar - 3 tv cards

The next task with setting up the new box is getting the new usb tv card to work. It was very cheap and we just thought we'd try it out. Luckily I'd just had to use the get_dvb_firmware script from the kernel source for the other tv card so this one was a doddle.

Plug it in and dmesg says:
usb 1-3: new high speed USB device using ehci_hcd and address 4
usb 1-3: configuration #1 chosen from 1 choice
dvb-usb: found a 'AVerMedia AVerTV DVB-T Volar' in cold state, will try to load a firmware
dvb-usb: did not find the firmware file. (dvb-usb-dib0700-1.10.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2)

Googled dvb-usb-dib0700-1.10.fw and found various sites where I could down load the fw file.
Put it in /lib/firmware. Unplugged the usb tv card. Plugged it back in again and got:

usb 1-3: new high speed USB device using ehci_hcd and address 5
usb 1-3: configuration #1 chosen from 1 choice
dvb-usb: found a 'AVerMedia AVerTV DVB-T Volar' in cold state, will try to load a firmware
dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.10.fw'
dib0700: firmware started successfully.
dvb-usb: found a 'AVerMedia AVerTV DVB-T Volar' in warm state.
dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
DVB: registering new adapter (AVerMedia AVerTV DVB-T Volar)
DVB: registering frontend 2 (DiBcom 7000MA/MB/PA/PB/MC)...
MT2060: successfully identified (IF1 = 1220)
input: IR-receiver inside an USB DVB receiver as /class/input/input7
dvb-usb: schedule remote query interval to 150 msecs.
dvb-usb: AVerMedia AVerTV DVB-T Volar successfully initialized and connected.


ran tzap and instantly got a lock.

My work here is done :-)

Now of course I have to make freevo work with one card watching and two cards taping.

Freevo and TV Card Again - Blogs are Useful

In October 2006 I blogged about setting up a new tv card to work with Freevo. Today I set up a new box and I referred to my own blog post to set it up. Isn't that cool.

We've got two digital tv cards and one was working and one wasn't. I could run scan and tzap and get a lock on adapter 1 but adapter 0 just said:

sylvia:/usr/share/doc/dvb-utils/examples/scan/dvb-t# tzap -a0 -c /tmp/channels.conf "ABC1"
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
tuning to 226500000 Hz
video pid 0x0200, audio pid 0x028a
status 00 | signal ffff | snr 0000 | ber 0001fffe | unc 00000000 |
status 00 | signal ffff | snr 0000 | ber 0001fffe | unc 00000000 |
status 00 | signal ffff | snr 0000 | ber 0001fffe | unc 00000000 |
status 00 | signal ffff | snr 0000 | ber 0001fffe | unc 00000000 |

The new tv box is called sylvia because she's silver :-)

Swapped the cables over - and same result. Looked in dmesg (which I should have done first) and found


tda1004x: found firmware revision 0 -- invalid
tda1004x: waiting for firmware upload (dvb-fe-tda10045.fw)...
tda1004x: no firmware upload (timeout or file not found?)
tda1004x: firmware upload failed

lspci says

04:00.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
04:00.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
04:01.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)


Found my block post and it helpfully told me to download the kernel source package (we use debian), look in the Documentation/dvb directory and run

get_dvb_firmware tda10045

This downloads the firmware and you then copy it to in our case /lib/firmware.

run tzap again:

tda1004x: found firmware revision 0 -- invalid
tda1004x: waiting for firmware upload (dvb-fe-tda10045.fw)...
tda1004x: no firmware upload (timeout or file not found?)
tda1004x: firmware upload failed
tda1004x: found firmware revision 0 -- invalid
tda1004x: waiting for firmware upload (dvb-fe-tda10045.fw)...
tda1004x: firmware upload complete
tda1004x: found firmware revision 2c -- ok


The other stuff I had to do then with blacklisting modules etc is no longer necessary.
we are running a 2.6.24 kernel.

tzaps happily now.
Now onto the usb tv card :-)