You are not logged in.
I was eagerly awaiting kernel 3.2 as it has support for the usb bluetooth builtin adapter in my new laptop, a Fuijitsu Lifebook E751.
http://kernelnewbies.org/Linux_3.2_Driv … 13f328fb85
But to my disappointment the adapter doesn't seem to be recognized.
Output of usb-devices (only the part concerning this adapter):
T: Bus=02 Lev=02 Prnt=02 Port=03 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0489 ProdID=e031 Rev=01.12
S: Manufacturer=Broadcom Corp
S: Product=BCM20702A0
S: SerialNumber=3859F9CD2AEE
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
'hcitool dev' doesn't show any devices.
What am I doing wrong?
Harvey
Last edited by Harey (2012-01-06 15:46:23)
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
Bump. Anyone?
Or should I ask on the linux-bluetooth mailing list directly?
Harvey
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
which package are you using? 3.2-2 fixed this I believe.
CPU-optimized Linux-ck packages @ Repo-ck • AUR packages • Zsh and other configs
Offline
Sorry to break the bad news, but the newly supported device is 413c:8197 [1]. Your device is 0489:e031.
[1] http://lxr.linux.no/linux+v3.2/drivers/ … usb.c#L103
Edit: you can try (as root)
modprobe btusb
echo "0489 e031" >> /sys/bus/usb/drivers/btusb/new_id
Last edited by laloch (2012-01-08 16:47:59)
Offline
you can try (as root)
modprobe btusb echo "0489 e031" >> /sys/bus/usb/drivers/btusb/new_id
First, thank you for your answers. I can do as you suggested and a hcitool dev then shows my BT adapter's MAC. It seems to work but it does not find any other devices. I fear there is some firmware missing...
Harvey
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
What do the usb-devices and hciconfig hci0 -a show now?
Edit: I forgot rfkill list
Any relevant output in dmesg?
Last edited by laloch (2012-01-09 10:11:59)
Offline
@Harey: a patch for support of your device has just arrived at the linux-bluetooth mailing list.[1] You can see for yourself, that adding your device ID to the list should be sufficient.
Offline
@Harey: a patch for support of your device has just arrived at the linux-bluetooth mailing list
I know. I reported the device specific information to the mailing list myself
But still no joy.
relevant dmesg output:
Bluetooth: Generic Bluetooth USB driver ver 0.6
usbcore: registered new interface driver btusb
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
rfkill list:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
hciconfig hci0 -a
hci0: Type: BR/EDR Bus: USB
BD Address: 38:59:F9:CD:2A:EE ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN ISCAN
RX bytes:1244 acl:0 sco:0 events:70 errors:0
TX bytes:1274 acl:0 sco:0 commands:54 errors:0
Features: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'gruenix-0'
Class: 0x580100
Service Classes: Capturing, Object Transfer, Telephony
Device Class: Computer, Uncategorized
HCI Version: 4.0 (0x6) Revision: 0x0
LMP Version: 4.0 (0x6) Subversion: 0x2118
Manufacturer: Broadcom Corporation (15)
usb-devices:
T: Bus=04 Lev=02 Prnt=02 Port=03 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0489 ProdID=e031 Rev=01.12
S: Manufacturer=Broadcom Corp
S: Product=BCM20702A0
S: SerialNumber=3859F9CD2AEE
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
But wait a minute... /var/log/errors.log:
Jan 9 17:05:05 localhost bluetoothd[1718]: Unable to read extended local features: Network is down (100)
Jan 9 17:22:43 localhost bluetoothd[1718]: Inquiry Failed with status 0x12
On this laptop networkmanager cares about network connections. At the point of starting bluetooth in rc.conf networkmanager is already running. Even a restart with established wired network connection does not change anything. And network is not down, believe me. I am doing all this via a ssh shell
Just to be sure I disabled networkmanager and established a normal wired network connection via rc.conf on eth0. Everything works - except bluetooth..
Edit: I fear the second line is more frightening. From what I have found by searching the web this shows that the adapter is (maybe) in sleep mode?
Harvey
Last edited by Harey (2012-01-09 18:56:23)
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
A quick glimpse into the Windows .inf file reveals something that wan't make you happy. Fujitsu is listed there in a separate section called RAMUSBE031. There is also this "BCM20702A0_001.001.024.0023.0055.hex" file copied along with the driver, which is then referenced in the registry as "RAMPatchFileName"...
Sorry again for the bad news.
Offline
Just in case anyone is interested, following is a list of devices supported by the Windows driver (v6.5.0.2100) without a "RAM patch":
03F0:231D - 2070B1 HP SoftBreeze
03F0:2A1D - 2070B1 HP Cuvee
044E:3017 - ALPS-UGPZ9-BCM2046 - 2046A0 Sony Non-UHE
044E:301B - ALPS-UGPZ9-BCM2046 - 2046A0 Dell ALPS
0489:E00D - 2070B1 Lenovo China
0489:E00E - 2070B1 B1 SECWB Samsung
0489:E00F - FOXCONN-T77H114-BCM2070
0489:E010 - 2070B1 Acer
0489:E011 - 2046B1 Acer Module
0489:E012 - 43225 Acer
0489:E013 - 4312 Acer
0489:E014 - 2070B1 Combo Lenovo China
0489:E02F - 4313 for Asia
0489:E030 - 43225 for Asia - BluetootUsb43225BRCME030
0489:E033 - Acer 20702 Serial FLASH
0489:E039 - 4313 for Lenovo China
0930:0200 - TAIYO YUDEN Bluetooth Controller EYTFEBSAX-A
0930:020F - ASKEY Bluetooth Controller BTU1030
0930:0213 - 4313 Toshiba 2
0930:0214 - 4313 Toshiba
0930:0747 - Askey BT Slim Module
0A5C:2119 - 2070B1 Combo Generic 2119
0A5C:2145 - ThinkPad Bluetooth 2.1 with Enhanced Data Rate
0A5C:214D - BCM2046 Bluetooth Device
0A5C:2150 - 2046B1 Lenovo China Module
0A5C:2151 - 2046B1 Gateway module
0A5C:217D - HP Bluetooth module
0A5C:217F - ThinkPad Bluetooth 2.1 with Enhanced Data Rate II
0A5C:2184 - 2070B1 Gen3 3VOIT
0A5C:218C - 2070B1 Gen3 3V02
0A5C:2198 - 2070B1 Gen5 0V01
0A5C:219A - Broadcom BCM2070 Bluetooth 3.0+HS USB Device
0A5C:219B - 2070B1 Gen3 3V01
0A5C:219C - Broadcom BCM2070 Bluetooth 3.0 +HS USB Device
0A5C:21A2 - Lenovo China 21A2
0A5C:21B1 - 2070B1 HP Hawk
0A5C:21B4 - 4313 HP Matador
0A5C:21BC - 4313 for Dell
0A5C:21E4 - 20702A1 Serial Flash Dongle
0B05:1788 - BT-270 - 2070B1 Azurewave 1788
0B05:1789 - BT-270 - 2070B1 Azurewave 1789
0B05:178A - NB-290
0B05:178B - 43225 Azurewave NB-290
0DB0:6898 - 2070B1 MSI5 0V
0DB0:689A - 2070B1 MSI3 3V
10AB:0816 - 2070B1 USI
10AB:081A - 2070 Ref6
13D3:3286 - 2070B1 Azurewave 3286
13D3:3295 - 43225 Azurewave 3295
13D3:3300 - 2070B1 Azurewave 3300
13D3:3301 - 43225 Azurewave 3301
13D3:3302 - 2070B1 Combo Azurewave 3302
13D3:3303 - 2070B1 Combo Azurewave 3303
15A9:0016 - 2070B1 Gemtek
1690:0737 - 2070B1 Fujitsu IT
1690:0742 - 2070B1 Fujitsu ITSec
17EF:7201 - 2046B1 Lenovo Zero Touch UHE Dongle
18E8:6260 - Broadcom BCM2070 Bluetooth 3.0 USB Device
1D4D:0004 - 2046B1 ROM Pegatron
413C:02B0 - 2046B1 Dell Compal
413C:8156 - Dell Wireless 370 Bluetooth Mini-card
413C:8160 - Dell Wireless 365 Bluetooth Module
413C:8187 - Dell Wireless 375 Bluetooth Module
and devices with RAM patch:
0489:E031 - 20702 0489/E031 Fujitsu Standalone
0489:E032 - 20702 E032 Combo
0489:E046 - 20702A1 Acer 43228+20702 combo card
0489:E047 - 20702A1 4313
04CA:2003 - 20702A1 Lenovo China
0930:021A - 20702 0930/021A Standalone
0A5C:21C0 - 20702 Ref6D Tornado Standalone
0A5C:21C1 - 20702 Ref6D Radio Disable Standalone
0A5C:21C2 - 20702 Ref6D 21C2 Standalone
0A5C:21C3 - 20702 21C3 Combo
0A5C:21C4 - 20702 21C4 Combo
0A5C:21C6 - 20702 BCM943228HMB P303 Combo
0A5C:21C9 - 20702 BRCM Generic 4319SDHMB
0A5C:21CA - 20702 BRCM Generic 4319SDB
0A5C:21CC - 20702 4313HMGBLREF
0A5C:21E1 - 20702A1 non-UHE HP SoftSailing
0A5C:21E3 - 20702A1 non-UHE 4313 combo HP Valentine
0A5C:21E5 - 20702A1 REF6 OTP single chip module
0A5C:21E8 - 20702A1 dongles
0A5C:21EB - 20702A1 43227
0A5C:21EC - 20702A1 REF6 OTP module
0A5C:21ED - 20702A1 4313+20702 combo
Last edited by laloch (2012-01-10 02:06:30)
Offline
Edit: I fear the second line is more frightening. From what I have found by searching the web this shows that the adapter is (maybe) in sleep mode?
That reminds me of auto-suspend!
Could you please try one last thing:
# modprobe btusb
# echo "0489 e031" >> /sys/bus/usb/drivers/btusb/new_id
# for dpc in /sys/bus/usb/devices/*/power/control; do echo "on" > ${dpc}; done
# hciconfig hci0 up
# hcitool scan
btw, good tool for USB sniffing is usbmon+wireshark
Offline
Could you please try one last thing:
# modprobe btusb # echo "0489 e031" >> /sys/bus/usb/drivers/btusb/new_id # for dpc in /sys/bus/usb/devices/*/power/control; do echo "on" > ${dpc}; done # hciconfig hci0 up # hcitool scan
No luck There must be some kind of firmware loaded into the adapters ROM by the windows driver.
btw, good tool for USB sniffing is usbmon+wireshark
I fear I need a windows usb monitor - that's why I asked for a tip on the mailing list. Windows is so far away. I haven't really used it for years now... I have only one virtualbox vm to get the things done that I can't do with linux. And there's not much that can't be done here
BTW: I really appreciate your help here. Without you I would be lost...
Harvey
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
btw, good tool for USB sniffing is usbmon+wireshark
I fear I need a windows usb monitor - that's why I asked for a tip on the mailing list. Windows is so far away. I haven't really used it for years now... I have only one virtualbox vm to get the things done that I can't do with linux. And there's not much that can't be done here
VirtualBox uses the linux usb stack so the usbmon works even with virtualized Windows. The usage is quite simple:
- modprobe usbmon
- mount -t debugfs / /sys/kernel/debug
- run Wireshark as root, select some USB bus and start a capture
- launch Windows in VirtualBox
The analysis of captured data is much more fun tho ;-)
Offline
After fiddling around with usbmon, wireshark and virtualbox I have got at least two conclusions.
1. it is almost sure that the windows driver loads some kind of firmware/ROM fix into the adapter. Why? Because after using the adapter in windows it also works under linux. Unfortunately only until the next reboot.
2. Wireshark is a beast. It is a mighty tool but I have to figure out how to use it. Could take a while. I can capture the USB Port of the adapter but now I have a 240k capture file and no clue where to look at
Harvey
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
OK, I narrowed it down to a 29k file which I sent to the mailing list. Conclusion: there is clearly some binary download in the capture file, but it would need reverse engeneering to figure out what's going on. Although they say it should be pretty trivial I am not that gifted to know what to do now so I guess I just bought the wrong notebook
Harvey
Last edited by Harey (2012-01-11 11:20:52)
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
OK, I narrowed it down to a 29k file which I sent to the mailing list. Conclusion: there is clearly some binary download in the capture file, but it would need reverse engeneering to figure out what's going on. Although they say it should be pretty trivial I am not that gifted to know what to do now so I guess I just bought the wrong notebook
Nice work. I've seen the capture file and I agree, that there is definitely some firmware upload going on endpoint 02 starting at frame 62 and maybe initiated by a vendor specific HCI command 0xfc2e in frame 58. The data even do partialy match the content of the .hex file I extracted off the Fujitsu driver package. I will take a closer look at the capture later today. Don't give up yet ;-)
Offline
Hello Guys,
I have the same laptop..I am quite a newbie but if you need some help for whatever...
Thanks Harey and laloch for your work!!!
Kind Regards
Christophe
Offline
@Harey: Hi, I wrote a very basic firmware uploader script in python. It's completely untested, because I don't have one of those "ramusb" devices, so I don't expect it to work. If you are brave and wish to try, you can download it here: http://dl.dropbox.com/u/25169171/bcmfwup.tar.gz
I really hope it wan't eat you hamster.
You will need python2 and PyUSB from AUR: https://aur.archlinux.org/packages.php?ID=37791
Edit: You will still need the echo "0489 e031" >> /sys/bus/usb/drivers/btusb/new_id hack.
Last edited by laloch (2012-01-12 02:50:07)
Offline
Hello Laloch,
Do you think it is testable on a Kubuntu distrib?
and if Yes what are the steps beyond installing python2 and pyusb?
and 0489 e031" >> /sys/bus/usb/drivers/btusb/new_id hack.
Kind Regards
Chris
Offline
Do you think it is testable on a Kubuntu distrib?
and if Yes what are the steps beyond installing python2 and pyusb?
All you need is Python 2, libusb > 1.0.0 and PyUSB 1.0.0.
Once you have the prerequisites installed, untar bcmfwup.tar.gz. Then:
# ./bcmfwup.py
# modprobe btusb
# echo "0489 e031" >> /sys/bus/usb/drivers/btusb/new_id
But I strongly doubt, that you'll get past the ./bcmfwup.py. I still didn't get any of the bcm20702 based adapters, so I actually never ran the script.
btw, I have already started writing a driver module. When I'm done, I will need someone capable of building a custom, patched kernel for testing.
Offline
Hello,
I don think I will be able to build a modified kernel...So I will wait from Harey results....
Thank your very much for all the effort you are putting to it
Cheers
Chris
Offline
But I strongly doubt, that you'll get past the ./bcmfwup.py. I still didn't get any of the bcm20702 based adapters, so I actually never ran the script.
O.K., I did for you. This is the output for debugging:
[root@gruenix bcmfwup]# ./bcmfwup.py
event: array('B', [14, 4, 1, 3, 12, 0])
event: array('B', [14, 10, 1, 121, 252, 0, 20, 254, 255, 255, 0, 0])
event: array('B', [14, 4, 1, 46, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 78, 252, 0])
event: array('B', [255, 2, 30, 0])
event: array('B', [14, 10, 1, 121, 252, 0, 20, 254, 255, 255, 55, 0])
Exception in thread Thread-20:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "./bcmfwup.py", line 88, in run
self.result = self.dev.read(self.endpoint, 0xff)
File "/usr/lib/python2.7/site-packages/usb/core.py", line 654, in read
self.__get_timeout(timeout)
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 541, in bulk_read
timeout)
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 641, in __read
timeout))
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 403, in _check
raise USBError(_str_error[ret], ret, _libusb_errno[ret])
USBError: [Errno 110] Operation timed out
event: array('B', [14, 4, 1, 83, 252, 1])
Traceback (most recent call last):
File "./bcmfwup.py", line 137, in <module>
sys.exit(main())
File "./bcmfwup.py", line 133, in main
up.attach_drivers()
File "./bcmfwup.py", line 32, in attach_drivers
self.dev.attach_kernel_driver(intf.bInterfaceNumber)
File "/usr/lib/python2.7/site-packages/usb/core.py", line 718, in attach_kernel_driver
self._ctx.backend.attach_kernel_driver(self._ctx.handle, interface)
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 617, in attach_kernel_driver
_check(_lib.libusb_attach_kernel_driver(dev_handle, intf))
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 403, in _check
raise USBError(_str_error[ret], ret, _libusb_errno[ret])
usb.core.USBError: [Errno 2] Entity not found
Uff, if they get longer I will have to use a pastebin...
btw, I have already started writing a driver module. When I'm done, I will need someone capable of building a custom, patched kernel for testing.
I will try my best. My last kernel compile was still with SuSE linux 7.something, never needed a custom kernel for arch. Sounds like this could be fun
Harvey
Last edited by Harey (2012-01-13 12:55:10)
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
Thanks for the feedback. Did you check if the adapter works after this? Despite the exceptions in python code the download actually succeeded and
event: array('B', [14, 10, 1, 121, 252, 0, 20, 254, 255, 255, 55, 0])
this IMO means, that the firmware version changed.
Edit: It's not clear if the adapter passed through the final reset after the FW download finished. I've uploaded slightly modified version of the script with a bit less cluttered output.
Last edited by laloch (2012-01-13 14:06:46)
Offline
the output now looks like this:
[root@gruenix bcmfwup]# ./bcmfwup.py
event: array('B', [14, 4, 1, 3, 12, 0])
event: array('B', [14, 10, 1, 121, 252, 0, 20, 254, 255, 255, 0, 0])
event: array('B', [14, 4, 1, 46, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 76, 252, 0])
event: array('B', [14, 4, 1, 78, 252, 0])
event: array('B', [255, 2, 30, 0])
event: array('B', [14, 10, 1, 121, 252, 0, 20, 254, 255, 255, 55, 0])
event: array('B', [14, 4, 1, 83, 252, 1])
Traceback (most recent call last):
File "./bcmfwup.py", line 140, in <module>
sys.exit(main())
File "./bcmfwup.py", line 136, in main
up.attach_drivers()
File "./bcmfwup.py", line 32, in attach_drivers
self.dev.attach_kernel_driver(intf.bInterfaceNumber)
File "/usr/lib/python2.7/site-packages/usb/core.py", line 718, in attach_kernel_driver
self._ctx.backend.attach_kernel_driver(self._ctx.handle, interface)
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 617, in attach_kernel_driver
_check(_lib.libusb_attach_kernel_driver(dev_handle, intf))
File "/usr/lib/python2.7/site-packages/usb/backend/libusb10.py", line 403, in _check
raise USBError(_str_error[ret], ret, _libusb_errno[ret])
usb.core.USBError: [Errno 2] Entity not found
After that, the adapter works. YAY! Scanning shows my bt devices, I can pair with my cellphone and my headset!
This is very good news. I will test some data transfer later. You are my hero
Harvey
EDIT: Oh no! Data transfer is not working, neither sound output to the headset. But this seems to be a general problem of the actual bluetooth incarnation as I have the same errors on my desktop machine which was working flawlessly before. DOH!
Last edited by Harey (2012-01-13 15:25:01)
Linux is like a wigwam: No Gates, no Windows and an Apache inside
Offline
After that, the adapter works. YAY! Scanning shows my bt devices, I can pair with my cellphone and my headset!
This is very good news. I will test some data transfer later. You are my hero
That's great news indeed.
Oh no! Data transfer is not working, neither sound output to the headset. But this seems to be a general problem of the actual bluetooth incarnation as I have the same errors on my desktop machine which was working flawlessly before. DOH!
You can try this newer firmware taken from the 6.5.0.2100 driver package: http://dl.dropbox.com/u/25169171/BCM207 … 6.0204.hex
Rename in to fw.hex, place it in the bcmfwup directory and run the script.
Edit: Oh, and if you can, post the output please. It could prove my assumption about the firmware version HCI event.
Last edited by laloch (2012-01-13 16:04:21)
Offline