* ext2 on flash memory @ 2007-06-11 10:13 DervishD 2007-06-11 11:11 ` Eduard-Gabriel Munteanu ` (4 more replies) 0 siblings, 5 replies; 47+ messages in thread From: DervishD @ 2007-06-11 10:13 UTC (permalink / raw) To: Linux-kernel Hi all :) I was wondering: is there any reason not to use ext2 on an USB pendrive? Really my question is not only about USB pendrives, but any device whose storage is flash based. Let's assume that the device has a good quality flash memory with wear leveling and the like... Thanks a lot in advance :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 10:13 ext2 on flash memory DervishD @ 2007-06-11 11:11 ` Eduard-Gabriel Munteanu 2007-06-11 11:57 ` USB remote control missing keycodes Islam Amer 2007-06-11 17:36 ` ext2 on flash memory DervishD 2007-06-11 14:58 ` alan ` (3 subsequent siblings) 4 siblings, 2 replies; 47+ messages in thread From: Eduard-Gabriel Munteanu @ 2007-06-11 11:11 UTC (permalink / raw) To: DervishD; +Cc: linux-kernel *This message was transferred with a trial version of CommuniGate(r) Pro* DervishD wrote: > *This message was transferred with a trial version of CommuniGate(r) Pro* > *This message was transferred with a trial version of CommuniGate(r) Pro* > Hi all :) > > I was wondering: is there any reason not to use ext2 on an USB > pendrive? Really my question is not only about USB pendrives, but any > device whose storage is flash based. Let's assume that the device has a > good quality flash memory with wear leveling and the like... > > Thanks a lot in advance :) > > Raúl Núñez de Arenas Coronado > Your USB pendrive will wear faster if you use an inappropriate filesystem. Such filesystems require frequent writes and change their internal state often. This could be alleviated by COWing the filesystem somehow and flushing writes when you're finished. But the modifications will be lost if crashes occur. The filesystem structures will still change a lot and require big writes to update it. Really, why don't you try a more suitable fs for your pendrive, one that changes itself less than usual fs's? ^ permalink raw reply [flat|nested] 47+ messages in thread
* USB remote control missing keycodes 2007-06-11 11:11 ` Eduard-Gabriel Munteanu @ 2007-06-11 11:57 ` Islam Amer 2007-06-11 15:02 ` Jiri Kosina 2007-06-15 17:55 ` Phillip Susi 2007-06-11 17:36 ` ext2 on flash memory DervishD 1 sibling, 2 replies; 47+ messages in thread From: Islam Amer @ 2007-06-11 11:57 UTC (permalink / raw) To: linux-kernel Hello all. I have a remote control device, with an IR transciever that plugs into a USB port and registers as an input device. All the buttons on the remote work fine except for the back , text , and three grey buttons at the top. Here is the relevant /proc/bus/input/devices entry : I: Bus=0003 Vendor=18b1 Product=0037 Version=0100 N: Name="ELMAK.pl irMAKbd pl" P: Phys=usb-0000:00:03.1-2/input0 S: Sysfs=/class/input/input4 H: Handlers=kbd mouse1 event4 ts1 B: EV=12000f B: KEY=f 42c53b7 bf0d4400 0 0 70001 10004 3c007 ff8763fa c140dfff febeffdf ffefffff ffffffff fffffffe B: REL=103 B: ABS=7ff01 0 B: LED=1f I did a little investigation using evbug and inputlircd and it seems that these buttons generate codes that get dropped somewhere in the input layer. They work fine on windows. I used a modified inputlircd to get all the raw keycodes using irw : Here's what I get for the down key : 6c 0 KEY_DOWN event4 0 0 KEY_RESERVED event4 29 0 KEY_GRAVE event4 0 0 KEY_RESERVED event4 6c 0 KEY_DOWN event4 0 0 KEY_RESERVED event4 and volume+ 73 0 KEY_VOLUMEUP event4 0 0 KEY_RESERVED event4 29 0 KEY_GRAVE event4 0 0 KEY_RESERVED event4 73 0 KEY_VOLUMEUP event4 0 0 KEY_RESERVED event4 As compared to the non-functional keys like back : 29 0 KEY_GRAVE event4 0 0 KEY_RESERVED event4 As you can see it is sending only the reserved and GRAVE codes, and no special codes. Next point of debugging is inside the kernel, using the evbug module : sudo modprobe evbug pressed the Volume+ key look in dmesg : [ 2815.891865] evbug.c: Connected device: "Macintosh mouse button emulation", <NULL> [ 2815.891874] evbug.c: Connected device: "AT Translated Set 2 keyboard", isa0060/serio0/input0 [ 2815.891878] evbug.c: Connected device: "cx88 IR (Hauppauge Nova-S-Plus ", pci-0000:00:05.0/ir0 [ 2815.891883] evbug.c: Connected device: "PC Speaker", isa0061/input0 [ 2815.891887] evbug.c: Connected device: "ELMAK.pl irMAKbd pl", usb-0000:00:03.1-2/input0 [ 2815.891892] evbug.c: Connected device: "Power Button (FF)", ACPI_FPB/button/input0 [ 2815.891896] evbug.c: Connected device: "Power Button (CM)", PNP0C0C/button/input0 [ 2820.988865] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 1, Code: 115, Value: 1 [ 2820.988875] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 [ 2820.996844] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 3, Code: 41, Value: 144 [ 2820.996854] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 [ 2821.212577] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 1, Code: 115, Value: 0 [ 2821.212587] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 pressed the Back button the extra lines are : [ 2856.041526] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 3, Code: 41, Value: 35 [ 2856.041537] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 I just need a pointer to where to start looking at the problem. Here's the website for the remote http://www.elmak.pl/index.php?option=com_phpshop&page=shop.browse&category_id=14&ext=opis&lang=en I am running ubuntu fiesty Linux ubuntu 2.6.20-15-generic #2 SMP Thanks in advance. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-11 11:57 ` USB remote control missing keycodes Islam Amer @ 2007-06-11 15:02 ` Jiri Kosina 2007-06-13 14:08 ` Islam Amer 2007-06-15 17:55 ` Phillip Susi 1 sibling, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-11 15:02 UTC (permalink / raw) To: Islam Amer; +Cc: linux-kernel On Mon, 11 Jun 2007, Islam Amer wrote: > I have a remote control device, with an IR transciever that plugs into a > USB port and registers as an input device. All the buttons on the remote > work fine except for the back , text , and three grey buttons at the > top. Could you please recompile your kernel with CONFIG_HID_DEBUG (2.6.21-rc1 or any newer) and send me the output both from the time you connect the device in the USB port, and also when you press the non-functional keys? Thanks, -- Jiri Kosina ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-11 15:02 ` Jiri Kosina @ 2007-06-13 14:08 ` Islam Amer 2007-06-13 14:58 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Islam Amer @ 2007-06-13 14:08 UTC (permalink / raw) To: Jiri Kosina; +Cc: linux-kernel On Mon, 2007-06-11 at 17:02 +0200, Jiri Kosina wrote: > On Mon, 11 Jun 2007, Islam Amer wrote: > > > I have a remote control device, with an IR transciever that plugs into a > > USB port and registers as an input device. All the buttons on the remote > > work fine except for the back , text , and three grey buttons at the > > top. > > Could you please recompile your kernel with CONFIG_HID_DEBUG (2.6.21-rc1 > or any newer) and send me the output both from the time you connect the > device in the USB port, and also when you press the non-functional keys? > > Thanks, > Sorry for the late reply, here's the output I got with 2.6.21.4 and CONFIG_HID_DEBUG .. [ 706.108243] usb 1-3: new low speed USB device using ohci_hcd and address 2 [ 706.321518] PM: Adding info for usb:1-3 [ 706.321616] PM: Adding info for No Bus:usbdev1.2_ep00 [ 706.321642] usb 1-3: configuration #1 chosen from 1 choice [ 706.324518] PM: Adding info for usb:1-3:1.0 [ 706.337449] drivers/usb/input/hid-core.c: report descriptor (size 246, read 246) = 15 00 25 01 05 01 09 80 a1 01 85 01 19 81 29 83 75 01 95 03 81 02 75 05 95 01 81 01 c0 05 0c 09 01 a1 01 85 04 19 00 2a f5 00 0a 09 02 0a 30 02 0a 2d 02 0a 2e 02 0a 24 02 15 00 26 f9 00 75 08 95 01 81 00 c0 05 01 09 02 a1 01 85 03 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 75 01 95 03 81 02 75 05 95 01 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 09 38 95 01 81 06 c0 c0 05 01 09 06 a1 01 85 02 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 19 00 2a ff 00 15 00 26 ff 00 75 08 95 03 81 00 05 08 25 01 19 01 29 05 75 01 95 05 91 02 75 03 95 01 91 01 c0 06 bc ff 09 88 a1 01 85 05 19 00 29 f0 15 00 26 f0 00 75 08 95 01 81 00 c0 06 80 ff 09 00 a1 01 85 06 75 08 95 04 15 00 26 ff 00 09 01 b1 82 09 01 81 82 95 07 09 02 91 82 c0 vol+ ( works ) [ 764.661651] drivers/hid/hid-core.c: report (size 5) (numbered) [ 764.661659] drivers/hid/hid-core.c: report 4 (size 4) = e9 00 00 00 [ 764.661667] hid-debug: input Consumer.0000 = 0 [ 764.661675] hid-debug: input Consumer.00e9 = 1 [ 764.669634] drivers/hid/hid-core.c: report (size 5) (numbered) [ 764.669642] drivers/hid/hid-core.c: report 6 (size 4) = 01 90 00 00 [ 764.669653] hid-debug: input ff80.0001 = 1 [ 764.669685] hid-debug: input ff80.0001 = 144 [ 764.669694] hid-debug: input ff80.0001 = 0 [ 764.669701] hid-debug: input ff80.0001 = 0 [ 764.781267] drivers/hid/hid-core.c: report (size 5) (numbered) [ 764.781275] drivers/hid/hid-core.c: report 4 (size 4) = 00 00 00 00 [ 764.781284] hid-debug: input Consumer.00e9 = 0 [ 764.781306] hid-debug: input Consumer.0000 = 1 vol- ( works ) [ 991.475577] drivers/hid/hid-core.c: report (size 5) (numbered) [ 991.475583] drivers/hid/hid-core.c: report 4 (size 4) = ea 00 00 00 [ 991.475592] hid-debug: input Consumer.0000 = 0 [ 991.475600] hid-debug: input Consumer.00ea = 1 [ 991.483553] drivers/hid/hid-core.c: report (size 5) (numbered) [ 991.483561] drivers/hid/hid-core.c: report 6 (size 4) = 01 91 00 00 [ 991.483572] hid-debug: input ff80.0001 = 1 [ 991.483588] hid-debug: input ff80.0001 = 145 [ 991.483605] hid-debug: input ff80.0001 = 0 [ 991.483613] hid-debug: input ff80.0001 = 0 [ 991.595188] drivers/hid/hid-core.c: report (size 5) (numbered) [ 991.595196] drivers/hid/hid-core.c: report 4 (size 4) = 00 00 00 00 [ 991.595204] hid-debug: input Consumer.00ea = 0 [ 991.595225] hid-debug: input Consumer.0000 = 1 back ( not working ) [ 829.897373] drivers/hid/hid-core.c: report (size 5) (numbered) [ 829.897380] drivers/hid/hid-core.c: report 4 (size 4) = fa 00 00 00 [ 829.897389] hid-debug: input Consumer.0000 = 0 [ 829.905338] drivers/hid/hid-core.c: report (size 5) (numbered) [ 829.905343] drivers/hid/hid-core.c: report 6 (size 4) = 01 23 00 00 [ 829.905350] hid-debug: input ff80.0001 = 1 [ 829.905360] hid-debug: input ff80.0001 = 35 [ 829.905373] hid-debug: input ff80.0001 = 0 [ 829.905383] hid-debug: input ff80.0001 = 0 [ 830.001028] drivers/hid/hid-core.c: report (size 5) (numbered) [ 830.001033] drivers/hid/hid-core.c: report 6 (size 4) = 01 23 00 00 [ 830.001039] hid-debug: input ff80.0001 = 1 [ 830.001047] hid-debug: input ff80.0001 = 35 [ 830.001053] hid-debug: input ff80.0001 = 0 [ 830.001058] hid-debug: input ff80.0001 = 0 [ 830.128620] drivers/hid/hid-core.c: report (size 5) (numbered) [ 830.128626] drivers/hid/hid-core.c: report 4 (size 4) = 00 00 00 00 [ 830.128633] hid-debug: input Consumer.0000 = 1 txt ( not working ) [ 900.156751] drivers/hid/hid-core.c: report (size 5) (numbered) [ 900.156762] drivers/hid/hid-core.c: report 5 (size 4) = 5a 00 00 00 [ 900.156771] hid-debug: input ffbc.0000 = 0 [ 900.156781] hid-debug: input ffbc.005a = 1 [ 900.164708] drivers/hid/hid-core.c: report (size 5) (numbered) [ 900.164713] drivers/hid/hid-core.c: report 6 (size 4) = 01 aa 00 00 [ 900.164725] hid-debug: input ff80.0001 = 1 [ 900.164734] hid-debug: input ff80.0001 = 170 [ 900.164748] hid-debug: input ff80.0001 = 0 [ 900.164755] hid-debug: input ff80.0001 = 0 [ 900.276344] drivers/hid/hid-core.c: report (size 5) (numbered) [ 900.276349] drivers/hid/hid-core.c: report 5 (size 4) = 00 00 00 00 [ 900.276355] hid-debug: input ffbc.005a = 0 [ 900.276362] hid-debug: input ffbc.0000 = 1 Thank you :) ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-13 14:08 ` Islam Amer @ 2007-06-13 14:58 ` Jiri Kosina 2007-06-13 15:17 ` Dmitry Torokhov 0 siblings, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-13 14:58 UTC (permalink / raw) To: Islam Amer; +Cc: linux-kernel On Wed, 13 Jun 2007, Islam Amer wrote: > back ( not working ) > [ 829.897373] drivers/hid/hid-core.c: report (size 5) (numbered) > [ 829.897380] drivers/hid/hid-core.c: report 4 (size 4) = fa 00 00 00 > [ 829.897389] hid-debug: input Consumer.0000 = 0 [...] > txt ( not working ) > [ 900.156751] drivers/hid/hid-core.c: report (size 5) (numbered) > [ 900.156762] drivers/hid/hid-core.c: report 5 (size 4) = 5a 00 00 00 > [ 900.156771] hid-debug: input ffbc.0000 = 0 > [ 900.156781] hid-debug: input ffbc.005a = 1 Oh my, another 'creative' vendor :( We really desperately need the hidbus, so that we could handle those misbehaving vendors in cleaner way, I am constantly moving that up in my todo :) Does the patch below fix the behavior for you? (against 2.6.21) Also, how about the three remaining buttons you stated previously to be not working? diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index c843402..9fb8845 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -474,6 +474,11 @@ static void hidinput_configure_usage(str case 0x0e5: map_key_clear(KEY_BASSBOOST); break; case 0x0e9: map_key_clear(KEY_VOLUMEUP); break; case 0x0ea: map_key_clear(KEY_VOLUMEDOWN); break; + + /* reserved in HUT 1.12. Reported on Elmak MAXTER + * 0x18b1/0x0037 remote control */ + case 0x0fa: map_key_clear(KEY_BACK); break; + case 0x183: map_key_clear(KEY_CONFIG); break; case 0x184: map_key_clear(KEY_WORDPROCESSOR); break; case 0x185: map_key_clear(KEY_EDITOR); break; @@ -592,7 +597,8 @@ static void hidinput_configure_usage(str } break; - case HID_UP_LOGIVENDOR: /* Reported on Logitech Ultra X Media Remote */ + case HID_UP_LOGIVENDOR: /* Reported on Logitech Ultra X Media Remote + * and Elmak MAXTER Remote */ set_bit(EV_REP, input->evbit); switch(usage->hid & HID_USAGE) { @@ -613,6 +619,10 @@ static void hidinput_configure_usage(str case 0x04d: map_key_clear(KEY_SUBTITLE); break; case 0x051: map_key_clear(KEY_RED); break; case 0x052: map_key_clear(KEY_CLOSE); break; + + /* Reported on Elmak 0x18b1/0x0037 remote control */ + case 0x05a: map_key_clear(KEY_TEXT); break; + default: goto ignore; } break; ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-13 14:58 ` Jiri Kosina @ 2007-06-13 15:17 ` Dmitry Torokhov 2007-06-13 15:44 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Dmitry Torokhov @ 2007-06-13 15:17 UTC (permalink / raw) To: Jiri Kosina; +Cc: Islam Amer, linux-kernel On 6/13/07, Jiri Kosina <jikos@jikos.cz> wrote: > On Wed, 13 Jun 2007, Islam Amer wrote: > > > back ( not working ) > > [ 829.897373] drivers/hid/hid-core.c: report (size 5) (numbered) > > [ 829.897380] drivers/hid/hid-core.c: report 4 (size 4) = fa 00 00 00 > > [ 829.897389] hid-debug: input Consumer.0000 = 0 > [...] > > txt ( not working ) > > [ 900.156751] drivers/hid/hid-core.c: report (size 5) (numbered) > > [ 900.156762] drivers/hid/hid-core.c: report 5 (size 4) = 5a 00 00 00 > > [ 900.156771] hid-debug: input ffbc.0000 = 0 > > [ 900.156781] hid-debug: input ffbc.005a = 1 > > Oh my, another 'creative' vendor :( We really desperately need the > hidbus, so that we could handle those misbehaving vendors in cleaner > way, I am constantly moving that up in my todo :) > Actually this one does not need hidbus and can be easily handled from userspace now that we have setkeycodes support for HID. -- Dmitry ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-13 15:17 ` Dmitry Torokhov @ 2007-06-13 15:44 ` Jiri Kosina 2007-06-13 15:58 ` Islam Amer 0 siblings, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-13 15:44 UTC (permalink / raw) To: Dmitry Torokhov; +Cc: Islam Amer, linux-kernel On Wed, 13 Jun 2007, Dmitry Torokhov wrote: > Actually this one does not need hidbus and can be easily handled from > userspace now that we have setkeycodes support for HID. Sure, thanks for reminding. Islam, if you'd like to write an userspace 'driver' (really trivial few-liner) for the missing keys, you can use a new functionality in recent kernels, which allows you to use EVIOCSKEYCODE ioctl() on evdev to create a proper mapping between the usage codes that are not handled by hid-input, and keycodes. -- Jiri Kosina ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-13 15:44 ` Jiri Kosina @ 2007-06-13 15:58 ` Islam Amer 2007-06-13 16:17 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Islam Amer @ 2007-06-13 15:58 UTC (permalink / raw) To: Jiri Kosina; +Cc: Dmitry Torokhov, linux-kernel On Wed, 2007-06-13 at 17:44 +0200, Jiri Kosina wrote: > On Wed, 13 Jun 2007, Dmitry Torokhov wrote: > > > Actually this one does not need hidbus and can be easily handled from > > userspace now that we have setkeycodes support for HID. > > Sure, thanks for reminding. > > Islam, if you'd like to write an userspace 'driver' (really trivial > few-liner) for the missing keys, you can use a new functionality in recent > kernels, which allows you to use EVIOCSKEYCODE ioctl() on evdev to create > a proper mapping between the usage codes that are not handled by > hid-input, and keycodes. > Interesting.. I assumed since evbug was not producing usable codes for these keys then the evdev layer would not get any codes at all. Starting from what version did this ioctl get added and is it documented anywhere ? Nevertheless the patch you sent got the "TXT" key to work but not the "BACK" key. Here are the codes for all of the non-functioning keys ( TXT , BACK , 4 COLOR keys ): RED button [ 1076.800000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1076.800000] drivers/hid/hid-core.c: report 5 (size 4) = 5b 00 00 00 [ 1076.800000] hid-debug: input ffbc.0000 = 0 [ 1076.800000] hid-debug: input ffbc.005b = 1 [ 1076.808000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1076.808000] drivers/hid/hid-core.c: report 6 (size 4) = 01 2b 00 00 [ 1076.808000] hid-debug: input ff80.0001 = 1 [ 1076.808000] hid-debug: input ff80.0001 = 43 [ 1076.808000] hid-debug: input ff80.0001 = 0 [ 1076.808000] hid-debug: input ff80.0001 = 0 [ 1076.904000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1076.904000] drivers/hid/hid-core.c: report 6 (size 4) = 01 2b 00 00 [ 1076.904000] hid-debug: input ff80.0001 = 1 [ 1076.904000] hid-debug: input ff80.0001 = 43 [ 1076.904000] hid-debug: input ff80.0001 = 0 [ 1076.904000] hid-debug: input ff80.0001 = 0 [ 1077.024000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1077.024000] drivers/hid/hid-core.c: report 5 (size 4) = 00 00 00 00 [ 1077.024000] hid-debug: input ffbc.005b = 0 [ 1077.024000] hid-debug: input ffbc.0000 = 1 GREEN button [ 1196.060000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1196.060000] drivers/hid/hid-core.c: report 5 (size 4) = 5c 00 00 00 [ 1196.060000] hid-debug: input ffbc.0000 = 0 [ 1196.060000] hid-debug: input ffbc.005c = 1 [ 1196.068000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1196.068000] drivers/hid/hid-core.c: report 6 (size 4) = 01 2c 00 00 [ 1196.068000] hid-debug: input ff80.0001 = 1 [ 1196.068000] hid-debug: input ff80.0001 = 44 [ 1196.068000] hid-debug: input ff80.0001 = 0 [ 1196.068000] hid-debug: input ff80.0001 = 0 [ 1196.164000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1196.164000] drivers/hid/hid-core.c: report 6 (size 4) = 01 2c 00 00 [ 1196.164000] hid-debug: input ff80.0001 = 1 [ 1196.164000] hid-debug: input ff80.0001 = 44 [ 1196.164000] hid-debug: input ff80.0001 = 0 [ 1196.164000] hid-debug: input ff80.0001 = 0 [ 1196.292000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1196.292000] drivers/hid/hid-core.c: report 5 (size 4) = 00 00 00 00 [ 1196.292000] hid-debug: input ffbc.005c = 0 [ 1196.292000] hid-debug: input ffbc.0000 = 1 YELLOW button [ 1222.552000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1222.552000] drivers/hid/hid-core.c: report 5 (size 4) = 5d 00 00 00 [ 1222.552000] hid-debug: input ffbc.0000 = 0 [ 1222.552000] hid-debug: input ffbc.005d = 1 [ 1222.560000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1222.560000] drivers/hid/hid-core.c: report 6 (size 4) = 01 ad 00 00 [ 1222.560000] hid-debug: input ff80.0001 = 1 [ 1222.560000] hid-debug: input ff80.0001 = 173 [ 1222.560000] hid-debug: input ff80.0001 = 0 [ 1222.560000] hid-debug: input ff80.0001 = 0 [ 1222.656000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1222.656000] drivers/hid/hid-core.c: report 6 (size 4) = 01 ad 00 00 [ 1222.656000] hid-debug: input ff80.0001 = 1 [ 1222.656000] hid-debug: input ff80.0001 = 173 [ 1222.656000] hid-debug: input ff80.0001 = 0 [ 1222.656000] hid-debug: input ff80.0001 = 0 [ 1222.776000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1222.776000] drivers/hid/hid-core.c: report 5 (size 4) = 00 00 00 00 [ 1222.776000] hid-debug: input ffbc.005d = 0 [ 1222.776000] hid-debug: input ffbc.0000 = 1 BLUE button [ 1472.908000] drivers/hid/hid-core.c: report 5 (size 4) = 5e 00 00 00 [ 1472.908000] hid-debug: input ffbc.0000 = 0 [ 1472.908000] hid-debug: input ffbc.005e = 1 [ 1472.916000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1472.916000] drivers/hid/hid-core.c: report 6 (size 4) = 01 ae 00 00 [ 1472.916000] hid-debug: input ff80.0001 = 1 [ 1472.916000] hid-debug: input ff80.0001 = 174 [ 1472.916000] hid-debug: input ff80.0001 = 0 [ 1472.916000] hid-debug: input ff80.0001 = 0 [ 1473.036000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1473.036000] drivers/hid/hid-core.c: report 5 (size 4) = 00 00 00 00 [ 1473.036000] hid-debug: input ffbc.005e = 0 [ 1473.036000] hid-debug: input ffbc.0000 = 1 BACK key [ 1573.316000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1573.316000] drivers/hid/hid-core.c: report 4 (size 4) = fa 00 00 00 [ 1573.316000] hid-debug: input Consumer.0000 = 0 [ 1573.324000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1573.324000] drivers/hid/hid-core.c: report 6 (size 4) = 01 23 00 00 [ 1573.324000] hid-debug: input ff80.0001 = 1 [ 1573.324000] hid-debug: input ff80.0001 = 35 [ 1573.324000] hid-debug: input ff80.0001 = 0 [ 1573.324000] hid-debug: input ff80.0001 = 0 [ 1573.436000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1573.436000] drivers/hid/hid-core.c: report 4 (size 4) = 00 00 00 00 [ 1573.436000] hid-debug: input Consumer.0000 = 1 TXT key [ 1635.116000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1635.116000] drivers/hid/hid-core.c: report 5 (size 4) = 5a 00 00 00 [ 1635.116000] hid-debug: input ffbc.0000 = 0 [ 1635.116000] hid-debug: input ffbc.005a = 1 [ 1635.124000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1635.124000] drivers/hid/hid-core.c: report 6 (size 4) = 01 aa 00 00 [ 1635.124000] hid-debug: input ff80.0001 = 1 [ 1635.124000] hid-debug: input ff80.0001 = 170 [ 1635.124000] hid-debug: input ff80.0001 = 0 [ 1635.124000] hid-debug: input ff80.0001 = 0 [ 1635.236000] drivers/hid/hid-core.c: report (size 5) (numbered) [ 1635.236000] drivers/hid/hid-core.c: report 5 (size 4) = 00 00 00 00 [ 1635.236000] hid-debug: input ffbc.005a = 0 [ 1635.236000] hid-debug: input ffbc.0000 = 1 Thanks a million. :) ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-13 15:58 ` Islam Amer @ 2007-06-13 16:17 ` Jiri Kosina 2007-06-14 12:19 ` Islam Amer 0 siblings, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-13 16:17 UTC (permalink / raw) To: Islam Amer; +Cc: Dmitry Torokhov, linux-kernel On Wed, 13 Jun 2007, Islam Amer wrote: > Nevertheless the patch you sent got the "TXT" key to work but not the > "BACK" key. Here are the codes for all of the non-functioning keys ( TXT > , BACK , 4 COLOR keys ): You should also be obtaining hid-debug dump of usage code -> input mapping when the kernel is compiled with CONFIG_HID_DEBUG, just after the report descriptor is dumped, something like drivers/hid/usbhid/hid-core.c: report descriptor (size 55, read 55) = 05 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 08 15 00 25 01 75 01 95 08 81 02 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 81 06 05 0c 0a 38 02 95 01 81 06 c0 c0 INPUT[INPUT] Field(0) Physical(GenericDesktop.Pointer) Usage(8) Button.0001 Button.0002 Button.0003 Button.0004 ... etc. Could you please send it to me, it wasn't included in your previous dump you sent me? Thanks, -- Jiri Kosina ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-13 16:17 ` Jiri Kosina @ 2007-06-14 12:19 ` Islam Amer 2007-06-14 12:30 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Islam Amer @ 2007-06-14 12:19 UTC (permalink / raw) To: Jiri Kosina; +Cc: Dmitry Torokhov, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1182 bytes --] On Wed, 2007-06-13 at 18:17 +0200, Jiri Kosina wrote: > On Wed, 13 Jun 2007, Islam Amer wrote: > > > Nevertheless the patch you sent got the "TXT" key to work but not the > > "BACK" key. Here are the codes for all of the non-functioning keys ( TXT > > , BACK , 4 COLOR keys ): > > You should also be obtaining hid-debug dump of usage code -> input mapping > when the kernel is compiled with CONFIG_HID_DEBUG, just after the report > descriptor is dumped, something like > > drivers/hid/usbhid/hid-core.c: report descriptor (size 55, read 55) = 05 > 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 08 15 00 25 01 75 01 95 08 81 02 > 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 81 06 05 0c 0a 38 02 95 01 > 81 06 c0 c0 > INPUT[INPUT] > Field(0) > Physical(GenericDesktop.Pointer) > Usage(8) > Button.0001 > Button.0002 > Button.0003 > Button.0004 > ... etc. > > Could you please send it to me, it wasn't included in your previous dump > you sent me? > > Thanks, > Ok here is everything from dmesg after the point of plugging in the usb IR receiver, which is quite lengthy so as an attachment. Thanks for all the help. [-- Attachment #2: dmesg --] [-- Type: text/plain, Size: 73983 bytes --] [ 578.581094] usb 1-3: new low speed USB device using ohci_hcd and address 4 [ 578.794364] PM: Adding info for usb:1-3 [ 578.794456] PM: Adding info for No Bus:usbdev1.4_ep00 [ 578.794485] usb 1-3: configuration #1 chosen from 1 choice [ 578.797374] PM: Adding info for usb:1-3:1.0 [ 578.810297] drivers/usb/input/hid-core.c: report descriptor (size 246, read 246) = 15 00 25 01 05 01 09 80 a1 01 85 01 19 81 29 83 75 01 95 03 81 02 75 05 95 01 81 01 c0 05 0c 09 01 a1 01 85 04 19 00 2a f5 00 0a 09 02 0a 30 02 0a 2d 02 0a 2e 02 0a 24 02 15 00 26 f9 00 75 08 95 01 81 00 c0 05 01 09 02 a1 01 85 03 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 75 01 95 03 81 02 75 05 95 01 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 09 38 95 01 81 06 c0 c0 05 01 09 06 a1 01 85 02 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 19 00 2a ff 00 15 00 26 ff 00 75 08 95 03 81 00 05 08 25 01 19 01 29 05 75 01 95 05 91 02 75 03 95 01 91 01 c0 06 bc ff 09 88 a1 01 85 05 19 00 29 f0 15 00 26 f0 00 75 08 95 01 81 00 c0 06 80 ff 09 00 a1 01 85 06 75 08 95 04 15 00 26 ff 00 09 01 b1 82 09 01 81 82 95 07 09 02 91 82 c0 [ 588.777799] drivers/usb/input/hid-core.c: usb_submit_urb(ctrl) failed [ 588.777811] drivers/usb/input/hid-core.c: timeout initializing reports [ 588.777817] INPUT(1)[INPUT] [ 588.777823] Field(0) [ 588.777828] Usage(3) [ 588.777834] GenericDesktop.SystemPowerDown [ 588.777845] GenericDesktop.SystemSleep [ 588.777855] GenericDesktop.SystemWakeUp [ 588.777866] Logical Minimum(0) [ 588.777874] Logical Maximum(1) [ 588.777881] Report Size(1) [ 588.777915] Report Count(3) [ 588.777926] Report Offset(0) [ 588.777933] Flags( Variable Absolute ) [ 588.777967] INPUT(4)[INPUT] [ 588.777972] Field(0) [ 588.778000] Usage(251) [ 588.778029] Consumer.0000 [ 588.778038] Consumer.0001 [ 588.778047] Consumer.0002 [ 588.778055] Consumer.0003 [ 588.778064] Consumer.0004 [ 588.778073] Consumer.0005 [ 588.778082] Consumer.0006 [ 588.778090] Consumer.0007 [ 588.778122] Consumer.0008 [ 588.778131] Consumer.0009 [ 588.778139] Consumer.000a [ 588.778148] Consumer.000b [ 588.778157] Consumer.000c [ 588.778165] Consumer.000d [ 588.778174] Consumer.000e [ 588.778182] Consumer.000f [ 588.778191] Consumer.0010 [ 588.778200] Consumer.0011 [ 588.778209] Consumer.0012 [ 588.778217] Consumer.0013 [ 588.778226] Consumer.0014 [ 588.778258] Consumer.0015 [ 588.778266] Consumer.0016 [ 588.778274] Consumer.0017 [ 588.778283] Consumer.0018 [ 588.778315] Consumer.0019 [ 588.778324] Consumer.001a [ 588.778332] Consumer.001b [ 588.778341] Consumer.001c [ 588.778350] Consumer.001d [ 588.778358] Consumer.001e [ 588.778367] Consumer.001f [ 588.778376] Consumer.0020 [ 588.778407] Consumer.0021 [ 588.778416] Consumer.0022 [ 588.778425] Consumer.0023 [ 588.778433] Consumer.0024 [ 588.778442] Consumer.0025 [ 588.778451] Consumer.0026 [ 588.778460] Consumer.0027 [ 588.778469] Consumer.0028 [ 588.778478] Consumer.0029 [ 588.778486] Consumer.002a [ 588.778494] Consumer.002b [ 588.778526] Consumer.002c [ 588.778535] Consumer.002d [ 588.778543] Consumer.002e [ 588.778552] Consumer.002f [ 588.778561] Consumer.0030 [ 588.778569] Consumer.0031 [ 588.778578] Consumer.0032 [ 588.778587] Consumer.0033 [ 588.778596] Consumer.0034 [ 588.778605] Consumer.0035 [ 588.778613] Consumer.0036 [ 588.778622] Consumer.0037 [ 588.778631] Consumer.0038 [ 588.778663] Consumer.0039 [ 588.778672] Consumer.003a [ 588.778680] Consumer.003b [ 588.778689] Consumer.003c [ 588.778720] Consumer.003d [ 588.778729] Consumer.003e [ 588.778761] Consumer.003f [ 588.778770] Consumer.0040 [ 588.778778] Consumer.0041 [ 588.778786] Consumer.0042 [ 588.778795] Consumer.0043 [ 588.778804] Consumer.0044 [ 588.778813] Consumer.0045 [ 588.778821] Consumer.0046 [ 588.778830] Consumer.0047 [ 588.778839] Consumer.0048 [ 588.778847] Consumer.0049 [ 588.778855] Consumer.004a [ 588.778864] Consumer.004b [ 588.778896] Consumer.004c [ 588.778905] Consumer.004d [ 588.778913] Consumer.004e [ 588.778922] Consumer.004f [ 588.778930] Consumer.0050 [ 588.778939] Consumer.0051 [ 588.778948] Consumer.0052 [ 588.778980] Consumer.0053 [ 588.779011] Consumer.0054 [ 588.779020] Consumer.0055 [ 588.779029] Consumer.0056 [ 588.779038] Consumer.0057 [ 588.779046] Consumer.0058 [ 588.779054] Consumer.0059 [ 588.779085] Consumer.005a [ 588.779094] Consumer.005b [ 588.779103] Consumer.005c [ 588.779112] Consumer.005d [ 588.779121] Consumer.005e [ 588.779130] Consumer.005f [ 588.779139] Consumer.0060 [ 588.779170] Consumer.0061 [ 588.779202] Consumer.0062 [ 588.779234] Consumer.0063 [ 588.779243] Consumer.0064 [ 588.779252] Consumer.0065 [ 588.779283] Consumer.0066 [ 588.779291] Consumer.0067 [ 588.779323] Consumer.0068 [ 588.779331] Consumer.0069 [ 588.779340] Consumer.006a [ 588.779372] Consumer.006b [ 588.779380] Consumer.006c [ 588.779389] Consumer.006d [ 588.779398] Consumer.006e [ 588.779407] Consumer.006f [ 588.779439] Consumer.0070 [ 588.779447] Consumer.0071 [ 588.779456] Consumer.0072 [ 588.779465] Consumer.0073 [ 588.779498] Consumer.0074 [ 588.779507] Consumer.0075 [ 588.779515] Consumer.0076 [ 588.779523] Consumer.0077 [ 588.779578] Consumer.0078 [ 588.779586] Consumer.0079 [ 588.779595] Consumer.007a [ 588.779603] Consumer.007b [ 588.779611] Consumer.007c [ 588.779619] Consumer.007d [ 588.779628] Consumer.007e [ 588.779636] Consumer.007f [ 588.779667] Consumer.0080 [ 588.779698] Consumer.0081 [ 588.779729] Consumer.0082 [ 588.779737] Consumer.0083 [ 588.779746] Consumer.0084 [ 588.779754] Consumer.0085 [ 588.779762] Consumer.0086 [ 588.779794] Consumer.0087 [ 588.779802] Consumer.0088 [ 588.779811] Consumer.0089 [ 588.779819] Consumer.008a [ 588.779828] Consumer.008b [ 588.779837] Consumer.008c [ 588.779845] Consumer.008d [ 588.779853] Consumer.008e [ 588.779862] Consumer.008f [ 588.779870] Consumer.0090 [ 588.779878] Consumer.0091 [ 588.779886] Consumer.0092 [ 588.779894] Consumer.0093 [ 588.779903] Consumer.0094 [ 588.779912] Consumer.0095 [ 588.779920] Consumer.0096 [ 588.779928] Consumer.0097 [ 588.779937] Consumer.0098 [ 588.779945] Consumer.0099 [ 588.779954] Consumer.009a [ 588.779986] Consumer.009b [ 588.779994] Consumer.009c [ 588.780003] Consumer.009d [ 588.780012] Consumer.009e [ 588.780020] Consumer.009f [ 588.780028] Consumer.00a0 [ 588.780036] Consumer.00a1 [ 588.780044] Consumer.00a2 [ 588.780053] Consumer.00a3 [ 588.780084] Consumer.00a4 [ 588.780092] Consumer.00a5 [ 588.780101] Consumer.00a6 [ 588.780109] Consumer.00a7 [ 588.780118] Consumer.00a8 [ 588.780127] Consumer.00a9 [ 588.780159] Consumer.00aa [ 588.780167] Consumer.00ab [ 588.780199] Consumer.00ac [ 588.780207] Consumer.00ad [ 588.780215] Consumer.00ae [ 588.780224] Consumer.00af [ 588.780232] Consumer.00b0 [ 588.780240] Consumer.00b1 [ 588.780248] Consumer.00b2 [ 588.780257] Consumer.00b3 [ 588.780266] Consumer.00b4 [ 588.780274] Consumer.00b5 [ 588.780282] Consumer.00b6 [ 588.780313] Consumer.00b7 [ 588.780322] Consumer.00b8 [ 588.780331] Consumer.00b9 [ 588.780339] Consumer.00ba [ 588.780347] Consumer.00bb [ 588.780356] Consumer.00bc [ 588.780364] Consumer.00bd [ 588.780374] Consumer.00be [ 588.780382] Consumer.00bf [ 588.780390] Consumer.00c0 [ 588.780399] Consumer.00c1 [ 588.780431] Consumer.00c2 [ 588.780462] Consumer.00c3 [ 588.780471] Consumer.00c4 [ 588.780502] Consumer.00c5 [ 588.780534] Consumer.00c6 [ 588.780542] Consumer.00c7 [ 588.780551] Consumer.00c8 [ 588.780559] Consumer.00c9 [ 588.780614] Consumer.00ca [ 588.780622] Consumer.00cb [ 588.780631] Consumer.00cc [ 588.780639] Consumer.00cd [ 588.780648] Consumer.00ce [ 588.780656] Consumer.00cf [ 588.780688] Consumer.00d0 [ 588.780696] Consumer.00d1 [ 588.780704] Consumer.00d2 [ 588.780713] Consumer.00d3 [ 588.780721] Consumer.00d4 [ 588.780729] Consumer.00d5 [ 588.780738] Consumer.00d6 [ 588.780747] Consumer.00d7 [ 588.780755] Consumer.00d8 [ 588.780764] Consumer.00d9 [ 588.780772] Consumer.00da [ 588.780781] Consumer.00db [ 588.780789] Consumer.00dc [ 588.780798] Consumer.00dd [ 588.780829] Consumer.00de [ 588.780838] Consumer.00df [ 588.780846] Consumer.00e0 [ 588.780855] Consumer.00e1 [ 588.780864] Consumer.00e2 [ 588.780872] Consumer.00e3 [ 588.780881] Consumer.00e4 [ 588.780888] Consumer.00e5 [ 588.780897] Consumer.00e6 [ 588.780905] Consumer.00e7 [ 588.780913] Consumer.00e8 [ 588.780922] Consumer.00e9 [ 588.780930] Consumer.00ea [ 588.780939] Consumer.00eb [ 588.780947] Consumer.00ec [ 588.780956] Consumer.00ed [ 588.780965] Consumer.00ee [ 588.780973] Consumer.00ef [ 588.780981] Consumer.00f0 [ 588.780990] Consumer.00f1 [ 588.780999] Consumer.00f2 [ 588.781007] Consumer.00f3 [ 588.781015] Consumer.00f4 [ 588.781046] Consumer.00f5 [ 588.781055] Consumer.0209 [ 588.781064] Consumer.0230 [ 588.781072] Consumer.022d [ 588.781080] Consumer.022e [ 588.781089] Consumer.0224 [ 588.781097] Logical Minimum(0) [ 588.781104] Logical Maximum(249) [ 588.781110] Report Size(8) [ 588.781116] Report Count(1) [ 588.781144] Report Offset(0) [ 588.781150] Flags( Array Absolute ) [ 588.781161] INPUT(3)[INPUT] [ 588.781190] Field(0) [ 588.781195] Physical(GenericDesktop.Pointer) [ 588.781203] Usage(3) [ 588.781231] Button.0001 [ 588.781239] Button.0002 [ 588.781271] Button.0003 [ 588.781279] Logical Minimum(0) [ 588.781308] Logical Maximum(1) [ 588.781314] Report Size(1) [ 588.781320] Report Count(3) [ 588.781325] Report Offset(0) [ 588.781331] Flags( Variable Absolute ) [ 588.781341] Field(1) [ 588.781346] Physical(GenericDesktop.Pointer) [ 588.781377] Usage(2) [ 588.781383] GenericDesktop.X [ 588.781414] GenericDesktop.Y [ 588.781422] Logical Minimum(-127) [ 588.781428] Logical Maximum(127) [ 588.781434] Report Size(8) [ 588.781440] Report Count(2) [ 588.781445] Report Offset(8) [ 588.781451] Flags( Variable Relative ) [ 588.781484] Field(2) [ 588.781489] Physical(GenericDesktop.Pointer) [ 588.781520] Usage(1) [ 588.781526] GenericDesktop.Wheel [ 588.781534] Logical Minimum(-127) [ 588.781540] Logical Maximum(127) [ 588.781545] Report Size(8) [ 588.781551] Report Count(1) [ 588.781557] Report Offset(24) [ 588.781563] Flags( Variable Relative ) [ 588.781596] INPUT(2)[INPUT] [ 588.781625] Field(0) [ 588.781629] Usage(8) [ 588.781635] Keyboard.00e0 [ 588.781643] Keyboard.00e1 [ 588.781675] Keyboard.00e2 [ 588.781684] Keyboard.00e3 [ 588.781692] Keyboard.00e4 [ 588.781701] Keyboard.00e5 [ 588.781732] Keyboard.00e6 [ 588.781741] Keyboard.00e7 [ 588.781749] Logical Minimum(0) [ 588.781755] Logical Maximum(1) [ 588.781768] Report Size(1) [ 588.781774] Report Count(8) [ 588.781780] Report Offset(0) [ 588.781786] Flags( Variable Absolute ) [ 588.781798] Field(1) [ 588.781803] Usage(256) [ 588.781809] Keyboard.0000 [ 588.781817] Keyboard.0001 [ 588.781826] Keyboard.0002 [ 588.781835] Keyboard.0003 [ 588.781843] Keyboard.0004 [ 588.781852] Keyboard.0005 [ 588.781861] Keyboard.0006 [ 588.781869] Keyboard.0007 [ 588.781877] Keyboard.0008 [ 588.781886] Keyboard.0009 [ 588.781918] Keyboard.000a [ 588.781926] Keyboard.000b [ 588.781935] Keyboard.000c [ 588.781944] Keyboard.000d [ 588.781952] Keyboard.000e [ 588.781961] Keyboard.000f [ 588.781969] Keyboard.0010 [ 588.781978] Keyboard.0011 [ 588.781986] Keyboard.0012 [ 588.781995] Keyboard.0013 [ 588.782027] Keyboard.0014 [ 588.782035] Keyboard.0015 [ 588.782044] Keyboard.0016 [ 588.782053] Keyboard.0017 [ 588.782062] Keyboard.0018 [ 588.782070] Keyboard.0019 [ 588.782079] Keyboard.001a [ 588.782087] Keyboard.001b [ 588.782096] Keyboard.001c [ 588.782104] Keyboard.001d [ 588.782112] Keyboard.001e [ 588.782121] Keyboard.001f [ 588.782130] Keyboard.0020 [ 588.782140] Keyboard.0021 [ 588.782148] Keyboard.0022 [ 588.782157] Keyboard.0023 [ 588.782188] Keyboard.0024 [ 588.782220] Keyboard.0025 [ 588.782228] Keyboard.0026 [ 588.782237] Keyboard.0027 [ 588.782245] Keyboard.0028 [ 588.782253] Keyboard.0029 [ 588.782262] Keyboard.002a [ 588.782271] Keyboard.002b [ 588.782279] Keyboard.002c [ 588.782288] Keyboard.002d [ 588.782296] Keyboard.002e [ 588.782304] Keyboard.002f [ 588.782312] Keyboard.0030 [ 588.782344] Keyboard.0031 [ 588.782352] Keyboard.0032 [ 588.782383] Keyboard.0033 [ 588.782392] Keyboard.0034 [ 588.782401] Keyboard.0035 [ 588.782409] Keyboard.0036 [ 588.782418] Keyboard.0037 [ 588.782449] Keyboard.0038 [ 588.782458] Keyboard.0039 [ 588.782466] Keyboard.003a [ 588.782475] Keyboard.003b [ 588.782484] Keyboard.003c [ 588.782492] Keyboard.003d [ 588.782501] Keyboard.003e [ 588.782533] Keyboard.003f [ 588.782541] Keyboard.0040 [ 588.782550] Keyboard.0041 [ 588.782559] Keyboard.0042 [ 588.782567] Keyboard.0043 [ 588.782576] Keyboard.0044 [ 588.782584] Keyboard.0045 [ 588.782593] Keyboard.0046 [ 588.782601] Keyboard.0047 [ 588.782610] Keyboard.0048 [ 588.782618] Keyboard.0049 [ 588.782627] Keyboard.004a [ 588.782635] Keyboard.004b [ 588.782643] Keyboard.004c [ 588.782652] Keyboard.004d [ 588.782660] Keyboard.004e [ 588.782669] Keyboard.004f [ 588.782677] Keyboard.0050 [ 588.782685] Keyboard.0051 [ 588.782694] Keyboard.0052 [ 588.782702] Keyboard.0053 [ 588.782711] Keyboard.0054 [ 588.782720] Keyboard.0055 [ 588.782728] Keyboard.0056 [ 588.782738] Keyboard.0057 [ 588.782746] Keyboard.0058 [ 588.782755] Keyboard.0059 [ 588.782764] Keyboard.005a [ 588.782772] Keyboard.005b [ 588.782804] Keyboard.005c [ 588.782813] Keyboard.005d [ 588.782821] Keyboard.005e [ 588.782829] Keyboard.005f [ 588.782838] Keyboard.0060 [ 588.782847] Keyboard.0061 [ 588.782855] Keyboard.0062 [ 588.782864] Keyboard.0063 [ 588.782872] Keyboard.0064 [ 588.782880] Keyboard.0065 [ 588.782889] Keyboard.0066 [ 588.782897] Keyboard.0067 [ 588.782906] Keyboard.0068 [ 588.782914] Keyboard.0069 [ 588.782922] Keyboard.006a [ 588.782931] Keyboard.006b [ 588.782939] Keyboard.006c [ 588.782947] Keyboard.006d [ 588.782979] Keyboard.006e [ 588.782987] Keyboard.006f [ 588.782995] Keyboard.0070 [ 588.783027] Keyboard.0071 [ 588.783035] Keyboard.0072 [ 588.783044] Keyboard.0073 [ 588.783098] Keyboard.0074 [ 588.783107] Keyboard.0075 [ 588.783115] Keyboard.0076 [ 588.783124] Keyboard.0077 [ 588.783132] Keyboard.0078 [ 588.783141] Keyboard.0079 [ 588.783149] Keyboard.007a [ 588.783158] Keyboard.007b [ 588.783166] Keyboard.007c [ 588.783175] Keyboard.007d [ 588.783183] Keyboard.007e [ 588.783192] Keyboard.007f [ 588.783224] Keyboard.0080 [ 588.783255] Keyboard.0081 [ 588.783287] Keyboard.0082 [ 588.783295] Keyboard.0083 [ 588.783304] Keyboard.0084 [ 588.783312] Keyboard.0085 [ 588.783321] Keyboard.0086 [ 588.783329] Keyboard.0087 [ 588.783338] Keyboard.0088 [ 588.783347] Keyboard.0089 [ 588.783355] Keyboard.008a [ 588.783364] Keyboard.008b [ 588.783372] Keyboard.008c [ 588.783381] Keyboard.008d [ 588.783389] Keyboard.008e [ 588.783397] Keyboard.008f [ 588.783405] Keyboard.0090 [ 588.783415] Keyboard.0091 [ 588.783423] Keyboard.0092 [ 588.783432] Keyboard.0093 [ 588.783440] Keyboard.0094 [ 588.783448] Keyboard.0095 [ 588.783458] Keyboard.0096 [ 588.783466] Keyboard.0097 [ 588.783475] Keyboard.0098 [ 588.783483] Keyboard.0099 [ 588.783492] Keyboard.009a [ 588.783500] Keyboard.009b [ 588.783509] Keyboard.009c [ 588.783518] Keyboard.009d [ 588.783526] Keyboard.009e [ 588.783534] Keyboard.009f [ 588.783543] Keyboard.00a0 [ 588.783575] Keyboard.00a1 [ 588.783584] Keyboard.00a2 [ 588.783593] Keyboard.00a3 [ 588.783601] Keyboard.00a4 [ 588.783610] Keyboard.00a5 [ 588.783618] Keyboard.00a6 [ 588.783627] Keyboard.00a7 [ 588.783635] Keyboard.00a8 [ 588.783643] Keyboard.00a9 [ 588.783652] Keyboard.00aa [ 588.783683] Keyboard.00ab [ 588.783715] Keyboard.00ac [ 588.783724] Keyboard.00ad [ 588.783732] Keyboard.00ae [ 588.783740] Keyboard.00af [ 588.783748] Keyboard.00b0 [ 588.783780] Keyboard.00b1 [ 588.783789] Keyboard.00b2 [ 588.783820] Keyboard.00b3 [ 588.783829] Keyboard.00b4 [ 588.783837] Keyboard.00b5 [ 588.783846] Keyboard.00b6 [ 588.783854] Keyboard.00b7 [ 588.783886] Keyboard.00b8 [ 588.783894] Keyboard.00b9 [ 588.783926] Keyboard.00ba [ 588.783934] Keyboard.00bb [ 588.783943] Keyboard.00bc [ 588.783974] Keyboard.00bd [ 588.783983] Keyboard.00be [ 588.783992] Keyboard.00bf [ 588.784000] Keyboard.00c0 [ 588.784009] Keyboard.00c1 [ 588.784017] Keyboard.00c2 [ 588.784049] Keyboard.00c3 [ 588.784057] Keyboard.00c4 [ 588.784066] Keyboard.00c5 [ 588.784075] Keyboard.00c6 [ 588.784083] Keyboard.00c7 [ 588.784091] Keyboard.00c8 [ 588.784099] Keyboard.00c9 [ 588.784108] Keyboard.00ca [ 588.784116] Keyboard.00cb [ 588.784126] Keyboard.00cc [ 588.784180] Keyboard.00cd [ 588.784213] Keyboard.00ce [ 588.784244] Keyboard.00cf [ 588.784252] Keyboard.00d0 [ 588.784261] Keyboard.00d1 [ 588.784269] Keyboard.00d2 [ 588.784278] Keyboard.00d3 [ 588.784287] Keyboard.00d4 [ 588.784295] Keyboard.00d5 [ 588.784326] Keyboard.00d6 [ 588.784358] Keyboard.00d7 [ 588.784366] Keyboard.00d8 [ 588.784374] Keyboard.00d9 [ 588.784383] Keyboard.00da [ 588.784392] Keyboard.00db [ 588.784400] Keyboard.00dc [ 588.784409] Keyboard.00dd [ 588.784418] Keyboard.00de [ 588.784427] Keyboard.00df [ 588.784436] Keyboard.00e0 [ 588.784444] Keyboard.00e1 [ 588.784452] Keyboard.00e2 [ 588.784484] Keyboard.00e3 [ 588.784492] Keyboard.00e4 [ 588.784500] Keyboard.00e5 [ 588.784508] Keyboard.00e6 [ 588.784540] Keyboard.00e7 [ 588.784572] Keyboard.00e8 [ 588.784605] Keyboard.00e9 [ 588.784636] Keyboard.00ea [ 588.784644] Keyboard.00eb [ 588.784676] Keyboard.00ec [ 588.784684] Keyboard.00ed [ 588.784693] Keyboard.00ee [ 588.784725] Keyboard.00ef [ 588.784756] Keyboard.00f0 [ 588.784765] Keyboard.00f1 [ 588.784774] Keyboard.00f2 [ 588.784782] Keyboard.00f3 [ 588.784791] Keyboard.00f4 [ 588.784799] Keyboard.00f5 [ 588.784807] Keyboard.00f6 [ 588.784816] Keyboard.00f7 [ 588.784825] Keyboard.00f8 [ 588.784834] Keyboard.00f9 [ 588.784865] Keyboard.00fa [ 588.784874] Keyboard.00fb [ 588.784882] Keyboard.00fc [ 588.784891] Keyboard.00fd [ 588.784922] Keyboard.00fe [ 588.784931] Keyboard.00ff [ 588.784939] Logical Minimum(0) [ 588.784945] Logical Maximum(255) [ 588.784951] Report Size(8) [ 588.784957] Report Count(3) [ 588.784963] Report Offset(8) [ 588.784969] Flags( Array Absolute ) [ 588.784979] INPUT(5)[INPUT] [ 588.784986] Field(0) [ 588.784991] Usage(241) [ 588.784996] ffbc.0000 [ 588.785007] ffbc.0001 [ 588.785017] ffbc.0002 [ 588.785026] ffbc.0003 [ 588.785036] ffbc.0004 [ 588.785046] ffbc.0005 [ 588.785055] ffbc.0006 [ 588.785065] ffbc.0007 [ 588.785097] ffbc.0008 [ 588.785107] ffbc.0009 [ 588.785116] ffbc.000a [ 588.785126] ffbc.000b [ 588.785158] ffbc.000c [ 588.785167] ffbc.000d [ 588.785177] ffbc.000e [ 588.785209] ffbc.000f [ 588.785219] ffbc.0010 [ 588.785252] ffbc.0011 [ 588.785262] ffbc.0012 [ 588.785272] ffbc.0013 [ 588.785304] ffbc.0014 [ 588.785314] ffbc.0015 [ 588.785323] ffbc.0016 [ 588.785333] ffbc.0017 [ 588.785343] ffbc.0018 [ 588.785352] ffbc.0019 [ 588.785362] ffbc.001a [ 588.785372] ffbc.001b [ 588.785403] ffbc.001c [ 588.785413] ffbc.001d [ 588.785423] ffbc.001e [ 588.785433] ffbc.001f [ 588.785442] ffbc.0020 [ 588.785452] ffbc.0021 [ 588.785462] ffbc.0022 [ 588.785472] ffbc.0023 [ 588.785482] ffbc.0024 [ 588.785491] ffbc.0025 [ 588.785500] ffbc.0026 [ 588.785533] ffbc.0027 [ 588.785566] ffbc.0028 [ 588.785576] ffbc.0029 [ 588.785585] ffbc.002a [ 588.785595] ffbc.002b [ 588.785604] ffbc.002c [ 588.785613] ffbc.002d [ 588.785623] ffbc.002e [ 588.785655] ffbc.002f [ 588.785665] ffbc.0030 [ 588.785675] ffbc.0031 [ 588.785707] ffbc.0032 [ 588.785767] ffbc.0033 [ 588.785777] ffbc.0034 [ 588.785786] ffbc.0035 [ 588.785795] ffbc.0036 [ 588.785805] ffbc.0037 [ 588.785814] ffbc.0038 [ 588.785823] ffbc.0039 [ 588.785832] ffbc.003a [ 588.785842] ffbc.003b [ 588.785851] ffbc.003c [ 588.785861] ffbc.003d [ 588.785870] ffbc.003e [ 588.785880] ffbc.003f [ 588.785912] ffbc.0040 [ 588.785922] ffbc.0041 [ 588.785931] ffbc.0042 [ 588.785941] ffbc.0043 [ 588.785950] ffbc.0044 [ 588.785959] ffbc.0045 [ 588.785968] ffbc.0046 [ 588.785979] ffbc.0047 [ 588.785988] ffbc.0048 [ 588.785998] ffbc.0049 [ 588.786008] ffbc.004a [ 588.786016] ffbc.004b [ 588.786026] ffbc.004c [ 588.786035] ffbc.004d [ 588.786045] ffbc.004e [ 588.786077] ffbc.004f [ 588.786087] ffbc.0050 [ 588.786096] ffbc.0051 [ 588.786106] ffbc.0052 [ 588.786115] ffbc.0053 [ 588.786124] ffbc.0054 [ 588.786134] ffbc.0055 [ 588.786144] ffbc.0056 [ 588.786152] ffbc.0057 [ 588.786163] ffbc.0058 [ 588.786217] ffbc.0059 [ 588.786227] ffbc.005a [ 588.786237] ffbc.005b [ 588.786247] ffbc.005c [ 588.786256] ffbc.005d [ 588.786266] ffbc.005e [ 588.786298] ffbc.005f [ 588.786308] ffbc.0060 [ 588.786340] ffbc.0061 [ 588.786350] ffbc.0062 [ 588.786359] ffbc.0063 [ 588.786369] ffbc.0064 [ 588.786401] ffbc.0065 [ 588.786411] ffbc.0066 [ 588.786420] ffbc.0067 [ 588.786430] ffbc.0068 [ 588.786438] ffbc.0069 [ 588.786448] ffbc.006a [ 588.786457] ffbc.006b [ 588.786467] ffbc.006c [ 588.786476] ffbc.006d [ 588.786486] ffbc.006e [ 588.786518] ffbc.006f [ 588.786527] ffbc.0070 [ 588.786559] ffbc.0071 [ 588.786569] ffbc.0072 [ 588.786579] ffbc.0073 [ 588.786589] ffbc.0074 [ 588.786621] ffbc.0075 [ 588.786653] ffbc.0076 [ 588.786662] ffbc.0077 [ 588.786695] ffbc.0078 [ 588.786704] ffbc.0079 [ 588.786713] ffbc.007a [ 588.786723] ffbc.007b [ 588.786731] ffbc.007c [ 588.786764] ffbc.007d [ 588.786773] ffbc.007e [ 588.786783] ffbc.007f [ 588.786792] ffbc.0080 [ 588.786802] ffbc.0081 [ 588.786811] ffbc.0082 [ 588.786821] ffbc.0083 [ 588.786830] ffbc.0084 [ 588.786840] ffbc.0085 [ 588.786848] ffbc.0086 [ 588.786881] ffbc.0087 [ 588.786890] ffbc.0088 [ 588.786900] ffbc.0089 [ 588.786910] ffbc.008a [ 588.786919] ffbc.008b [ 588.786929] ffbc.008c [ 588.786938] ffbc.008d [ 588.786970] ffbc.008e [ 588.786980] ffbc.008f [ 588.787013] ffbc.0090 [ 588.787022] ffbc.0091 [ 588.787032] ffbc.0092 [ 588.787042] ffbc.0093 [ 588.787051] ffbc.0094 [ 588.787061] ffbc.0095 [ 588.787071] ffbc.0096 [ 588.787081] ffbc.0097 [ 588.787090] ffbc.0098 [ 588.787100] ffbc.0099 [ 588.787109] ffbc.009a [ 588.787118] ffbc.009b [ 588.787127] ffbc.009c [ 588.787136] ffbc.009d [ 588.787146] ffbc.009e [ 588.787155] ffbc.009f [ 588.787188] ffbc.00a0 [ 588.787197] ffbc.00a1 [ 588.787207] ffbc.00a2 [ 588.787216] ffbc.00a3 [ 588.787226] ffbc.00a4 [ 588.787235] ffbc.00a5 [ 588.787244] ffbc.00a6 [ 588.787254] ffbc.00a7 [ 588.787264] ffbc.00a8 [ 588.787296] ffbc.00a9 [ 588.787306] ffbc.00aa [ 588.787314] ffbc.00ab [ 588.787347] ffbc.00ac [ 588.787380] ffbc.00ad [ 588.787390] ffbc.00ae [ 588.787399] ffbc.00af [ 588.787408] ffbc.00b0 [ 588.787440] ffbc.00b1 [ 588.787450] ffbc.00b2 [ 588.787482] ffbc.00b3 [ 588.787491] ffbc.00b4 [ 588.787500] ffbc.00b5 [ 588.787511] ffbc.00b6 [ 588.787520] ffbc.00b7 [ 588.787529] ffbc.00b8 [ 588.787539] ffbc.00b9 [ 588.787548] ffbc.00ba [ 588.787558] ffbc.00bb [ 588.787567] ffbc.00bc [ 588.787577] ffbc.00bd [ 588.787587] ffbc.00be [ 588.787596] ffbc.00bf [ 588.787606] ffbc.00c0 [ 588.787639] ffbc.00c1 [ 588.787648] ffbc.00c2 [ 588.787658] ffbc.00c3 [ 588.787667] ffbc.00c4 [ 588.787677] ffbc.00c5 [ 588.787686] ffbc.00c6 [ 588.787718] ffbc.00c7 [ 588.787751] ffbc.00c8 [ 588.787760] ffbc.00c9 [ 588.787770] ffbc.00ca [ 588.787780] ffbc.00cb [ 588.787789] ffbc.00cc [ 588.787821] ffbc.00cd [ 588.787853] ffbc.00ce [ 588.787863] ffbc.00cf [ 588.787872] ffbc.00d0 [ 588.787881] ffbc.00d1 [ 588.787891] ffbc.00d2 [ 588.787901] ffbc.00d3 [ 588.787933] ffbc.00d4 [ 588.787943] ffbc.00d5 [ 588.787952] ffbc.00d6 [ 588.787961] ffbc.00d7 [ 588.787970] ffbc.00d8 [ 588.787981] ffbc.00d9 [ 588.788012] ffbc.00da [ 588.788045] ffbc.00db [ 588.788078] ffbc.00dc [ 588.788088] ffbc.00dd [ 588.788097] ffbc.00de [ 588.788130] ffbc.00df [ 588.788139] ffbc.00e0 [ 588.788149] ffbc.00e1 [ 588.788181] ffbc.00e2 [ 588.788214] ffbc.00e3 [ 588.788223] ffbc.00e4 [ 588.788233] ffbc.00e5 [ 588.788242] ffbc.00e6 [ 588.788252] ffbc.00e7 [ 588.788260] ffbc.00e8 [ 588.788270] ffbc.00e9 [ 588.788302] ffbc.00ea [ 588.788335] ffbc.00eb [ 588.788344] ffbc.00ec [ 588.788377] ffbc.00ed [ 588.788387] ffbc.00ee [ 588.788397] ffbc.00ef [ 588.788429] ffbc.00f0 [ 588.788439] Logical Minimum(0) [ 588.788445] Logical Maximum(240) [ 588.788451] Report Size(8) [ 588.788480] Report Count(1) [ 588.788508] Report Offset(0) [ 588.788514] Flags( Array Absolute ) [ 588.788525] INPUT(6)[INPUT] [ 588.788531] Field(0) [ 588.788535] Usage(4) [ 588.788541] ff80.0001 [ 588.788596] ff80.0001 [ 588.788628] ff80.0001 [ 588.788638] ff80.0001 [ 588.788648] Logical Minimum(0) [ 588.788653] Logical Maximum(255) [ 588.788659] Report Size(8) [ 588.788664] Report Count(4) [ 588.788693] Report Offset(0) [ 588.788698] Flags( Variable Absolute Volatile ) [ 588.788710] OUTPUT(2)[OUTPUT] [ 588.788715] Field(0) [ 588.788719] Usage(5) [ 588.788725] LED.NumLock [ 588.788733] LED.CapsLock [ 588.788741] LED.ScrollLock [ 588.788773] LED.Compose [ 588.788804] LED.Kana [ 588.788812] Logical Minimum(0) [ 588.788818] Logical Maximum(1) [ 588.788824] Report Size(1) [ 588.788830] Report Count(5) [ 588.788836] Report Offset(0) [ 588.788865] Flags( Variable Absolute ) [ 588.788875] OUTPUT(6)[OUTPUT] [ 588.788881] Field(0) [ 588.788885] Usage(7) [ 588.788891] ff80.0002 [ 588.788900] ff80.0002 [ 588.788910] ff80.0002 [ 588.788919] ff80.0002 [ 588.788952] ff80.0002 [ 588.788984] ff80.0002 [ 588.788994] ff80.0002 [ 588.789026] Logical Minimum(0) [ 588.789032] Logical Maximum(255) [ 588.789038] Report Size(8) [ 588.789043] Report Count(7) [ 588.789049] Report Offset(0) [ 588.789054] Flags( Variable Absolute Volatile ) [ 588.789088] FEATURE(6)[FEATURE] [ 588.789094] Field(0) [ 588.789098] Usage(4) [ 588.789104] ff80.0001 [ 588.789113] ff80.0001 [ 588.789123] ff80.0001 [ 588.789132] ff80.0001 [ 588.789142] Logical Minimum(0) [ 588.789171] Logical Maximum(255) [ 588.789177] Report Size(8) [ 588.789182] Report Count(4) [ 588.789188] Report Offset(0) [ 588.789193] Flags( Variable Absolute Volatile ) [ 588.789257] Mapping: GenericDesktop.SystemPowerDown ---> Key.Power [ 588.789268] Mapping: GenericDesktop.SystemSleep ---> Key.Sleep [ 588.789298] Mapping: GenericDesktop.SystemWakeUp ---> Key.WakeUp [ 588.789307] Mapping: Consumer.0000 ---> IGNORED [ 588.789313] Mapping: Consumer.0001 ---> IGNORED [ 588.789320] Mapping: Consumer.0002 ---> IGNORED [ 588.789326] Mapping: Consumer.0003 ---> IGNORED [ 588.789332] Mapping: Consumer.0004 ---> IGNORED [ 588.789339] Mapping: Consumer.0005 ---> IGNORED [ 588.789346] Mapping: Consumer.0006 ---> IGNORED [ 588.789353] Mapping: Consumer.0007 ---> IGNORED [ 588.789359] Mapping: Consumer.0008 ---> IGNORED [ 588.789365] Mapping: Consumer.0009 ---> IGNORED [ 588.789372] Mapping: Consumer.000a ---> IGNORED [ 588.789378] Mapping: Consumer.000b ---> IGNORED [ 588.789384] Mapping: Consumer.000c ---> IGNORED [ 588.789391] Mapping: Consumer.000d ---> IGNORED [ 588.789398] Mapping: Consumer.000e ---> IGNORED [ 588.789404] Mapping: Consumer.000f ---> IGNORED [ 588.789411] Mapping: Consumer.0010 ---> IGNORED [ 588.789417] Mapping: Consumer.0011 ---> IGNORED [ 588.789424] Mapping: Consumer.0012 ---> IGNORED [ 588.789430] Mapping: Consumer.0013 ---> IGNORED [ 588.789437] Mapping: Consumer.0014 ---> IGNORED [ 588.789443] Mapping: Consumer.0015 ---> IGNORED [ 588.789450] Mapping: Consumer.0016 ---> IGNORED [ 588.789457] Mapping: Consumer.0017 ---> IGNORED [ 588.789486] Mapping: Consumer.0018 ---> IGNORED [ 588.789493] Mapping: Consumer.0019 ---> IGNORED [ 588.789500] Mapping: Consumer.001a ---> IGNORED [ 588.789529] Mapping: Consumer.001b ---> IGNORED [ 588.789536] Mapping: Consumer.001c ---> IGNORED [ 588.789542] Mapping: Consumer.001d ---> IGNORED [ 588.789549] Mapping: Consumer.001e ---> IGNORED [ 588.789555] Mapping: Consumer.001f ---> IGNORED [ 588.789562] Mapping: Consumer.0020 ---> IGNORED [ 588.789568] Mapping: Consumer.0021 ---> IGNORED [ 588.789574] Mapping: Consumer.0022 ---> IGNORED [ 588.789581] Mapping: Consumer.0023 ---> IGNORED [ 588.789587] Mapping: Consumer.0024 ---> IGNORED [ 588.789594] Mapping: Consumer.0025 ---> IGNORED [ 588.789600] Mapping: Consumer.0026 ---> IGNORED [ 588.789607] Mapping: Consumer.0027 ---> IGNORED [ 588.789613] Mapping: Consumer.0028 ---> IGNORED [ 588.789620] Mapping: Consumer.0029 ---> IGNORED [ 588.789626] Mapping: Consumer.002a ---> IGNORED [ 588.789633] Mapping: Consumer.002b ---> IGNORED [ 588.789640] Mapping: Consumer.002c ---> IGNORED [ 588.789646] Mapping: Consumer.002d ---> IGNORED [ 588.789653] Mapping: Consumer.002e ---> IGNORED [ 588.789660] Mapping: Consumer.002f ---> IGNORED [ 588.789666] Mapping: Consumer.0030 ---> IGNORED [ 588.789673] Mapping: Consumer.0031 ---> IGNORED [ 588.789680] Mapping: Consumer.0032 ---> IGNORED [ 588.789687] Mapping: Consumer.0033 ---> IGNORED [ 588.789693] Mapping: Consumer.0034 ---> Key.Sleep [ 588.789724] Mapping: Consumer.0035 ---> IGNORED [ 588.789730] Mapping: Consumer.0036 ---> Key.Btn0 [ 588.789743] Mapping: Consumer.0037 ---> IGNORED [ 588.789749] Mapping: Consumer.0038 ---> IGNORED [ 588.789756] Mapping: Consumer.0039 ---> IGNORED [ 588.789762] Mapping: Consumer.003a ---> IGNORED [ 588.789769] Mapping: Consumer.003b ---> IGNORED [ 588.789775] Mapping: Consumer.003c ---> IGNORED [ 588.789781] Mapping: Consumer.003d ---> IGNORED [ 588.789788] Mapping: Consumer.003e ---> IGNORED [ 588.789794] Mapping: Consumer.003f ---> IGNORED [ 588.789800] Mapping: Consumer.0040 ---> Key.Menu [ 588.789807] Mapping: Consumer.0041 ---> IGNORED [ 588.789814] Mapping: Consumer.0042 ---> IGNORED [ 588.789820] Mapping: Consumer.0043 ---> IGNORED [ 588.789826] Mapping: Consumer.0044 ---> IGNORED [ 588.789833] Mapping: Consumer.0045 ---> Key.Radio [ 588.789840] Mapping: Consumer.0046 ---> IGNORED [ 588.789847] Mapping: Consumer.0047 ---> IGNORED [ 588.789853] Mapping: Consumer.0048 ---> IGNORED [ 588.789859] Mapping: Consumer.0049 ---> IGNORED [ 588.789866] Mapping: Consumer.004a ---> IGNORED [ 588.789896] Mapping: Consumer.004b ---> IGNORED [ 588.789902] Mapping: Consumer.004c ---> IGNORED [ 588.789908] Mapping: Consumer.004d ---> IGNORED [ 588.789915] Mapping: Consumer.004e ---> IGNORED [ 588.789921] Mapping: Consumer.004f ---> IGNORED [ 588.789928] Mapping: Consumer.0050 ---> IGNORED [ 588.789934] Mapping: Consumer.0051 ---> IGNORED [ 588.789940] Mapping: Consumer.0052 ---> IGNORED [ 588.789946] Mapping: Consumer.0053 ---> IGNORED [ 588.789953] Mapping: Consumer.0054 ---> IGNORED [ 588.789959] Mapping: Consumer.0055 ---> IGNORED [ 588.789966] Mapping: Consumer.0056 ---> IGNORED [ 588.789972] Mapping: Consumer.0057 ---> IGNORED [ 588.789978] Mapping: Consumer.0058 ---> IGNORED [ 588.789985] Mapping: Consumer.0059 ---> IGNORED [ 588.789991] Mapping: Consumer.005a ---> IGNORED [ 588.789997] Mapping: Consumer.005b ---> IGNORED [ 588.790003] Mapping: Consumer.005c ---> IGNORED [ 588.790009] Mapping: Consumer.005d ---> IGNORED [ 588.790016] Mapping: Consumer.005e ---> IGNORED [ 588.790022] Mapping: Consumer.005f ---> IGNORED [ 588.790029] Mapping: Consumer.0060 ---> IGNORED [ 588.790035] Mapping: Consumer.0061 ---> IGNORED [ 588.790041] Mapping: Consumer.0062 ---> IGNORED [ 588.790048] Mapping: Consumer.0063 ---> IGNORED [ 588.790054] Mapping: Consumer.0064 ---> IGNORED [ 588.790060] Mapping: Consumer.0065 ---> IGNORED [ 588.790067] Mapping: Consumer.0066 ---> IGNORED [ 588.790073] Mapping: Consumer.0067 ---> IGNORED [ 588.790079] Mapping: Consumer.0068 ---> IGNORED [ 588.790085] Mapping: Consumer.0069 ---> IGNORED [ 588.790092] Mapping: Consumer.006a ---> IGNORED [ 588.790098] Mapping: Consumer.006b ---> IGNORED [ 588.790105] Mapping: Consumer.006c ---> IGNORED [ 588.790111] Mapping: Consumer.006d ---> IGNORED [ 588.790118] Mapping: Consumer.006e ---> IGNORED [ 588.790124] Mapping: Consumer.006f ---> IGNORED [ 588.790131] Mapping: Consumer.0070 ---> IGNORED [ 588.790138] Mapping: Consumer.0071 ---> IGNORED [ 588.790144] Mapping: Consumer.0072 ---> IGNORED [ 588.790150] Mapping: Consumer.0073 ---> IGNORED [ 588.790157] Mapping: Consumer.0074 ---> IGNORED [ 588.790163] Mapping: Consumer.0075 ---> IGNORED [ 588.790170] Mapping: Consumer.0076 ---> IGNORED [ 588.790176] Mapping: Consumer.0077 ---> IGNORED [ 588.790182] Mapping: Consumer.0078 ---> IGNORED [ 588.790189] Mapping: Consumer.0079 ---> IGNORED [ 588.790195] Mapping: Consumer.007a ---> IGNORED [ 588.790201] Mapping: Consumer.007b ---> IGNORED [ 588.790208] Mapping: Consumer.007c ---> IGNORED [ 588.790214] Mapping: Consumer.007d ---> IGNORED [ 588.790221] Mapping: Consumer.007e ---> IGNORED [ 588.790227] Mapping: Consumer.007f ---> IGNORED [ 588.790233] Mapping: Consumer.0080 ---> IGNORED [ 588.790240] Mapping: Consumer.0081 ---> IGNORED [ 588.790246] Mapping: Consumer.0082 ---> IGNORED [ 588.790252] Mapping: Consumer.0083 ---> Key.Last [ 588.790260] Mapping: Consumer.0084 ---> IGNORED [ 588.790266] Mapping: Consumer.0085 ---> IGNORED [ 588.790271] Mapping: Consumer.0086 ---> IGNORED [ 588.790277] Mapping: Consumer.0087 ---> IGNORED [ 588.790284] Mapping: Consumer.0088 ---> Key.PC [ 588.790292] Mapping: Consumer.0089 ---> Key.TV [ 588.790298] Mapping: Consumer.008a ---> Key.WWW [ 588.790306] Mapping: Consumer.008b ---> Key.DVD [ 588.790313] Mapping: Consumer.008c ---> Key.Phone [ 588.790320] Mapping: Consumer.008d ---> Key.Program [ 588.790327] Mapping: Consumer.008e ---> Key.? [ 588.790335] Mapping: Consumer.008f ---> Key.? [ 588.790342] Mapping: Consumer.0090 ---> Key.Memo [ 588.790349] Mapping: Consumer.0091 ---> Key.CD [ 588.790356] Mapping: Consumer.0092 ---> Key.VCR [ 588.790363] Mapping: Consumer.0093 ---> Key.Tuner [ 588.790370] Mapping: Consumer.0094 ---> Key.Exit [ 588.790377] Mapping: Consumer.0095 ---> Key.Help [ 588.790408] Mapping: Consumer.0096 ---> Key.Tape [ 588.790415] Mapping: Consumer.0097 ---> Key.TV2 [ 588.790422] Mapping: Consumer.0098 ---> Key.Sat [ 588.790429] Mapping: Consumer.0099 ---> IGNORED [ 588.790436] Mapping: Consumer.009a ---> Key.PVR [ 588.790443] Mapping: Consumer.009b ---> IGNORED [ 588.790449] Mapping: Consumer.009c ---> Key.ChannelUp [ 588.790456] Mapping: Consumer.009d ---> Key.ChannelDown [ 588.790464] Mapping: Consumer.009e ---> IGNORED [ 588.790470] Mapping: Consumer.009f ---> IGNORED [ 588.790476] Mapping: Consumer.00a0 ---> Key.VCR2 [ 588.790483] Mapping: Consumer.00a1 ---> IGNORED [ 588.790490] Mapping: Consumer.00a2 ---> IGNORED [ 588.790495] Mapping: Consumer.00a3 ---> IGNORED [ 588.790502] Mapping: Consumer.00a4 ---> IGNORED [ 588.790508] Mapping: Consumer.00a5 ---> IGNORED [ 588.790515] Mapping: Consumer.00a6 ---> IGNORED [ 588.790522] Mapping: Consumer.00a7 ---> IGNORED [ 588.790529] Mapping: Consumer.00a8 ---> IGNORED [ 588.790535] Mapping: Consumer.00a9 ---> IGNORED [ 588.790541] Mapping: Consumer.00aa ---> IGNORED [ 588.790547] Mapping: Consumer.00ab ---> IGNORED [ 588.790554] Mapping: Consumer.00ac ---> IGNORED [ 588.790560] Mapping: Consumer.00ad ---> IGNORED [ 588.790566] Mapping: Consumer.00ae ---> IGNORED [ 588.790572] Mapping: Consumer.00af ---> IGNORED [ 588.790579] Mapping: Consumer.00b0 ---> Key.Play [ 588.790587] Mapping: Consumer.00b1 ---> Key.Pause [ 588.790616] Mapping: Consumer.00b2 ---> Key.Record [ 588.790624] Mapping: Consumer.00b3 ---> Key.FastForward [ 588.790630] Mapping: Consumer.00b4 ---> Key.Rewind [ 588.790638] Mapping: Consumer.00b5 ---> Key.NextSong [ 588.790644] Mapping: Consumer.00b6 ---> Key.PreviousSong [ 588.790652] Mapping: Consumer.00b7 ---> Key.StopCD [ 588.790659] Mapping: Consumer.00b8 ---> Key.EjectCD [ 588.790665] Mapping: Consumer.00b9 ---> IGNORED [ 588.790672] Mapping: Consumer.00ba ---> IGNORED [ 588.790701] Mapping: Consumer.00bb ---> IGNORED [ 588.790707] Mapping: Consumer.00bc ---> IGNORED [ 588.790713] Mapping: Consumer.00bd ---> IGNORED [ 588.790720] Mapping: Consumer.00be ---> IGNORED [ 588.790726] Mapping: Consumer.00bf ---> IGNORED [ 588.790732] Mapping: Consumer.00c0 ---> IGNORED [ 588.790738] Mapping: Consumer.00c1 ---> IGNORED [ 588.790745] Mapping: Consumer.00c2 ---> IGNORED [ 588.790751] Mapping: Consumer.00c3 ---> IGNORED [ 588.790757] Mapping: Consumer.00c4 ---> IGNORED [ 588.790763] Mapping: Consumer.00c5 ---> IGNORED [ 588.790769] Mapping: Consumer.00c6 ---> IGNORED [ 588.790775] Mapping: Consumer.00c7 ---> IGNORED [ 588.790782] Mapping: Consumer.00c8 ---> IGNORED [ 588.790788] Mapping: Consumer.00c9 ---> IGNORED [ 588.790794] Mapping: Consumer.00ca ---> IGNORED [ 588.790800] Mapping: Consumer.00cb ---> IGNORED [ 588.790806] Mapping: Consumer.00cc ---> IGNORED [ 588.790813] Mapping: Consumer.00cd ---> Key.PlayPause [ 588.790820] Mapping: Consumer.00ce ---> IGNORED [ 588.790826] Mapping: Consumer.00cf ---> IGNORED [ 588.790832] Mapping: Consumer.00d0 ---> IGNORED [ 588.790838] Mapping: Consumer.00d1 ---> IGNORED [ 588.790845] Mapping: Consumer.00d2 ---> IGNORED [ 588.790851] Mapping: Consumer.00d3 ---> IGNORED [ 588.790858] Mapping: Consumer.00d4 ---> IGNORED [ 588.790864] Mapping: Consumer.00d5 ---> IGNORED [ 588.790870] Mapping: Consumer.00d6 ---> IGNORED [ 588.790875] Mapping: Consumer.00d7 ---> IGNORED [ 588.790881] Mapping: Consumer.00d8 ---> IGNORED [ 588.790910] Mapping: Consumer.00d9 ---> IGNORED [ 588.790917] Mapping: Consumer.00da ---> IGNORED [ 588.790923] Mapping: Consumer.00db ---> IGNORED [ 588.790929] Mapping: Consumer.00dc ---> IGNORED [ 588.790936] Mapping: Consumer.00dd ---> IGNORED [ 588.790942] Mapping: Consumer.00de ---> IGNORED [ 588.790948] Mapping: Consumer.00df ---> IGNORED [ 588.790954] Mapping: Consumer.00e0 ---> Absolute.Volume [ 588.790962] Mapping: Consumer.00e1 ---> IGNORED [ 588.790968] Mapping: Consumer.00e2 ---> Key.Mute [ 588.790975] Mapping: Consumer.00e3 ---> IGNORED [ 588.790981] Mapping: Consumer.00e4 ---> IGNORED [ 588.790987] Mapping: Consumer.00e5 ---> Key.BassBoost [ 588.790994] Mapping: Consumer.00e6 ---> IGNORED [ 588.791000] Mapping: Consumer.00e7 ---> IGNORED [ 588.791006] Mapping: Consumer.00e8 ---> IGNORED [ 588.791036] Mapping: Consumer.00e9 ---> Key.VolumeUp [ 588.791043] Mapping: Consumer.00ea ---> Key.VolumeDown [ 588.791050] Mapping: Consumer.00eb ---> IGNORED [ 588.791056] Mapping: Consumer.00ec ---> IGNORED [ 588.791062] Mapping: Consumer.00ed ---> IGNORED [ 588.791069] Mapping: Consumer.00ee ---> IGNORED [ 588.791075] Mapping: Consumer.00ef ---> IGNORED [ 588.791080] Mapping: Consumer.00f0 ---> IGNORED [ 588.791087] Mapping: Consumer.00f1 ---> IGNORED [ 588.791093] Mapping: Consumer.00f2 ---> IGNORED [ 588.791099] Mapping: Consumer.00f3 ---> IGNORED [ 588.791105] Mapping: Consumer.00f4 ---> IGNORED [ 588.791111] Mapping: Consumer.00f5 ---> IGNORED [ 588.791118] Mapping: Consumer.0209 ---> Key.Props [ 588.791125] Mapping: Consumer.0230 ---> IGNORED [ 588.791132] Mapping: Consumer.022d ---> Key.? [ 588.791138] Mapping: Consumer.022e ---> Key.? [ 588.791146] Mapping: Consumer.0224 ---> Key.Back [ 588.791152] Mapping: Button.0001 ---> Key.LeftBtn [ 588.791160] Mapping: Button.0002 ---> Key.RightBtn [ 588.791167] Mapping: Button.0003 ---> Key.MiddleBtn [ 588.791174] Mapping: GenericDesktop.X ---> Relative.X [ 588.791181] Mapping: GenericDesktop.Y ---> Relative.Y [ 588.791188] Mapping: GenericDesktop.Wheel ---> Relative.Wheel [ 588.791218] Mapping: Keyboard.00e0 ---> Key.LeftControl [ 588.791226] Mapping: Keyboard.00e1 ---> Key.LeftShift [ 588.791255] Mapping: Keyboard.00e2 ---> Key.LeftAlt [ 588.791263] Mapping: Keyboard.00e3 ---> Key.LeftMeta [ 588.791270] Mapping: Keyboard.00e4 ---> Key.RightCtrl [ 588.791301] Mapping: Keyboard.00e5 ---> Key.RightShift [ 588.791330] Mapping: Keyboard.00e6 ---> Key.RightAlt [ 588.791337] Mapping: Keyboard.00e7 ---> Key.RightMeta [ 588.791345] Mapping: Keyboard.0000 ---> IGNORED [ 588.791350] Mapping: Keyboard.0001 ---> IGNORED [ 588.791356] Mapping: Keyboard.0002 ---> IGNORED [ 588.791362] Mapping: Keyboard.0003 ---> IGNORED [ 588.791369] Mapping: Keyboard.0004 ---> Key.A [ 588.791376] Mapping: Keyboard.0005 ---> Key.B [ 588.791382] Mapping: Keyboard.0006 ---> Key.C [ 588.791390] Mapping: Keyboard.0007 ---> Key.D [ 588.791396] Mapping: Keyboard.0008 ---> Key.E [ 588.791403] Mapping: Keyboard.0009 ---> Key.F [ 588.791410] Mapping: Keyboard.000a ---> Key.G [ 588.791417] Mapping: Keyboard.000b ---> Key.H [ 588.791424] Mapping: Keyboard.000c ---> Key.I [ 588.791430] Mapping: Keyboard.000d ---> Key.J [ 588.791460] Mapping: Keyboard.000e ---> Key.K [ 588.791468] Mapping: Keyboard.000f ---> Key.L [ 588.791474] Mapping: Keyboard.0010 ---> Key.M [ 588.791481] Mapping: Keyboard.0011 ---> Key.N [ 588.791488] Mapping: Keyboard.0012 ---> Key.O [ 588.791495] Mapping: Keyboard.0013 ---> Key.P [ 588.791502] Mapping: Keyboard.0014 ---> Key.Q [ 588.791509] Mapping: Keyboard.0015 ---> Key.R [ 588.791515] Mapping: Keyboard.0016 ---> Key.S [ 588.791522] Mapping: Keyboard.0017 ---> Key.T [ 588.791529] Mapping: Keyboard.0018 ---> Key.U [ 588.791559] Mapping: Keyboard.0019 ---> Key.V [ 588.791566] Mapping: Keyboard.001a ---> Key.W [ 588.791573] Mapping: Keyboard.001b ---> Key.X [ 588.791580] Mapping: Keyboard.001c ---> Key.Y [ 588.791587] Mapping: Keyboard.001d ---> Key.Z [ 588.791593] Mapping: Keyboard.001e ---> Key.1 [ 588.791600] Mapping: Keyboard.001f ---> Key.2 [ 588.791607] Mapping: Keyboard.0020 ---> Key.3 [ 588.791614] Mapping: Keyboard.0021 ---> Key.4 [ 588.791622] Mapping: Keyboard.0022 ---> Key.5 [ 588.791629] Mapping: Keyboard.0023 ---> Key.6 [ 588.791635] Mapping: Keyboard.0024 ---> Key.7 [ 588.791642] Mapping: Keyboard.0025 ---> Key.8 [ 588.791649] Mapping: Keyboard.0026 ---> Key.9 [ 588.791656] Mapping: Keyboard.0027 ---> Key.0 [ 588.791663] Mapping: Keyboard.0028 ---> Key.Enter [ 588.791669] Mapping: Keyboard.0029 ---> Key.Esc [ 588.791676] Mapping: Keyboard.002a ---> Key.Backspace [ 588.791706] Mapping: Keyboard.002b ---> Key.Tab [ 588.791713] Mapping: Keyboard.002c ---> Key.Space [ 588.791743] Mapping: Keyboard.002d ---> Key.Minus [ 588.791750] Mapping: Keyboard.002e ---> Key.Equal [ 588.791757] Mapping: Keyboard.002f ---> Key.LeftBrace [ 588.791764] Mapping: Keyboard.0030 ---> Key.RightBrace [ 588.791771] Mapping: Keyboard.0031 ---> Key.BackSlash [ 588.791778] Mapping: Keyboard.0032 ---> Key.BackSlash [ 588.791784] Mapping: Keyboard.0033 ---> Key.Semicolon [ 588.791814] Mapping: Keyboard.0034 ---> Key.Apostrophe [ 588.791821] Mapping: Keyboard.0035 ---> Key.Grave [ 588.791852] Mapping: Keyboard.0036 ---> Key.Comma [ 588.791859] Mapping: Keyboard.0037 ---> Key.Dot [ 588.791865] Mapping: Keyboard.0038 ---> Key.Slash [ 588.791872] Mapping: Keyboard.0039 ---> Key.CapsLock [ 588.791878] Mapping: Keyboard.003a ---> Key.F1 [ 588.791909] Mapping: Keyboard.003b ---> Key.F2 [ 588.791916] Mapping: Keyboard.003c ---> Key.F3 [ 588.791945] Mapping: Keyboard.003d ---> Key.F4 [ 588.791952] Mapping: Keyboard.003e ---> Key.F5 [ 588.791958] Mapping: Keyboard.003f ---> Key.F6 [ 588.791965] Mapping: Keyboard.0040 ---> Key.F7 [ 588.791972] Mapping: Keyboard.0041 ---> Key.F8 [ 588.791979] Mapping: Keyboard.0042 ---> Key.F9 [ 588.791986] Mapping: Keyboard.0043 ---> Key.F10 [ 588.792016] Mapping: Keyboard.0044 ---> Key.F11 [ 588.792022] Mapping: Keyboard.0045 ---> Key.F12 [ 588.792030] Mapping: Keyboard.0046 ---> Key.SysRq [ 588.792036] Mapping: Keyboard.0047 ---> Key.ScrollLock [ 588.792044] Mapping: Keyboard.0048 ---> Key.Pause [ 588.792051] Mapping: Keyboard.0049 ---> Key.Insert [ 588.792058] Mapping: Keyboard.004a ---> Key.Home [ 588.792065] Mapping: Keyboard.004b ---> Key.PageUp [ 588.792072] Mapping: Keyboard.004c ---> Key.Delete [ 588.792101] Mapping: Keyboard.004d ---> Key.End [ 588.792132] Mapping: Keyboard.004e ---> Key.PageDown [ 588.792138] Mapping: Keyboard.004f ---> Key.Right [ 588.792145] Mapping: Keyboard.0050 ---> Key.Left [ 588.792151] Mapping: Keyboard.0051 ---> Key.Down [ 588.792158] Mapping: Keyboard.0052 ---> Key.Up [ 588.792164] Mapping: Keyboard.0053 ---> Key.NumLock [ 588.792171] Mapping: Keyboard.0054 ---> Key.KPSlash [ 588.792178] Mapping: Keyboard.0055 ---> Key.KPAsterisk [ 588.792185] Mapping: Keyboard.0056 ---> Key.KPMinus [ 588.792192] Mapping: Keyboard.0057 ---> Key.KPPlus [ 588.792199] Mapping: Keyboard.0058 ---> Key.KPEnter [ 588.792206] Mapping: Keyboard.0059 ---> Key.KP1 [ 588.792213] Mapping: Keyboard.005a ---> Key.KP2 [ 588.792220] Mapping: Keyboard.005b ---> Key.KP3 [ 588.792226] Mapping: Keyboard.005c ---> Key.KP4 [ 588.792257] Mapping: Keyboard.005d ---> Key.KP5 [ 588.792263] Mapping: Keyboard.005e ---> Key.KP6 [ 588.792270] Mapping: Keyboard.005f ---> Key.KP7 [ 588.792277] Mapping: Keyboard.0060 ---> Key.KP8 [ 588.792284] Mapping: Keyboard.0061 ---> Key.KP9 [ 588.792290] Mapping: Keyboard.0062 ---> Key.KP0 [ 588.792297] Mapping: Keyboard.0063 ---> Key.KPDot [ 588.792304] Mapping: Keyboard.0064 ---> Key.102nd [ 588.792311] Mapping: Keyboard.0065 ---> Key.Compose [ 588.792318] Mapping: Keyboard.0066 ---> Key.Power [ 588.792325] Mapping: Keyboard.0067 ---> Key.KPEqual [ 588.792331] Mapping: Keyboard.0068 ---> Key.F13 [ 588.792339] Mapping: Keyboard.0069 ---> Key.F14 [ 588.792346] Mapping: Keyboard.006a ---> Key.F15 [ 588.792352] Mapping: Keyboard.006b ---> Key.F16 [ 588.792359] Mapping: Keyboard.006c ---> Key.F17 [ 588.792366] Mapping: Keyboard.006d ---> Key.F18 [ 588.792372] Mapping: Keyboard.006e ---> Key.F19 [ 588.792379] Mapping: Keyboard.006f ---> Key.F20 [ 588.792385] Mapping: Keyboard.0070 ---> Key.F21 [ 588.792392] Mapping: Keyboard.0071 ---> Key.F22 [ 588.792422] Mapping: Keyboard.0072 ---> Key.F23 [ 588.792429] Mapping: Keyboard.0073 ---> Key.F24 [ 588.792436] Mapping: Keyboard.0074 ---> Key.Open [ 588.792442] Mapping: Keyboard.0075 ---> Key.Help [ 588.792449] Mapping: Keyboard.0076 ---> Key.Props [ 588.792457] Mapping: Keyboard.0077 ---> Key.Front [ 588.792463] Mapping: Keyboard.0078 ---> Key.Stop [ 588.792470] Mapping: Keyboard.0079 ---> Key.Again [ 588.792477] Mapping: Keyboard.007a ---> Key.Undo [ 588.792483] Mapping: Keyboard.007b ---> Key.Cut [ 588.792490] Mapping: Keyboard.007c ---> Key.Copy [ 588.792521] Mapping: Keyboard.007d ---> Key.Paste [ 588.792527] Mapping: Keyboard.007e ---> Key.Find [ 588.792535] Mapping: Keyboard.007f ---> Key.Mute [ 588.792541] Mapping: Keyboard.0080 ---> Key.VolumeUp [ 588.792548] Mapping: Keyboard.0081 ---> Key.VolumeDown [ 588.792555] Mapping: Keyboard.0082 ---> Key.Unknown [ 588.792563] Mapping: Keyboard.0083 ---> Key.Unknown [ 588.792570] Mapping: Keyboard.0084 ---> Key.Unknown [ 588.792577] Mapping: Keyboard.0085 ---> Key.KPComma [ 588.792584] Mapping: Keyboard.0086 ---> Key.Unknown [ 588.792590] Mapping: Keyboard.0087 ---> Key.RO [ 588.792620] Mapping: Keyboard.0088 ---> Key.Katakana/Hiragana [ 588.792628] Mapping: Keyboard.0089 ---> Key.Yen [ 588.792635] Mapping: Keyboard.008a ---> Key.Henkan [ 588.792642] Mapping: Keyboard.008b ---> Key.Muhenkan [ 588.792672] Mapping: Keyboard.008c ---> Key.KPJpComma [ 588.792701] Mapping: Keyboard.008d ---> Key.Unknown [ 588.792709] Mapping: Keyboard.008e ---> Key.Unknown [ 588.792715] Mapping: Keyboard.008f ---> Key.Unknown [ 588.792722] Mapping: Keyboard.0090 ---> Key.Hangeul [ 588.792729] Mapping: Keyboard.0091 ---> Key.Hanja [ 588.792736] Mapping: Keyboard.0092 ---> Key.Katakana [ 588.792743] Mapping: Keyboard.0093 ---> Key.HIRAGANA [ 588.792750] Mapping: Keyboard.0094 ---> Key.Zenkaku/Hankaku [ 588.792758] Mapping: Keyboard.0095 ---> Key.Unknown [ 588.792764] Mapping: Keyboard.0096 ---> Key.Unknown [ 588.792771] Mapping: Keyboard.0097 ---> Key.Unknown [ 588.792778] Mapping: Keyboard.0098 ---> Key.Unknown [ 588.792785] Mapping: Keyboard.0099 ---> Key.Unknown [ 588.792815] Mapping: Keyboard.009a ---> Key.Unknown [ 588.792822] Mapping: Keyboard.009b ---> Key.Unknown [ 588.792829] Mapping: Keyboard.009c ---> Key.Unknown [ 588.792836] Mapping: Keyboard.009d ---> Key.Unknown [ 588.792843] Mapping: Keyboard.009e ---> Key.Unknown [ 588.792850] Mapping: Keyboard.009f ---> Key.Unknown [ 588.792856] Mapping: Keyboard.00a0 ---> Key.Unknown [ 588.792887] Mapping: Keyboard.00a1 ---> Key.Unknown [ 588.792894] Mapping: Keyboard.00a2 ---> Key.Unknown [ 588.792900] Mapping: Keyboard.00a3 ---> Key.Unknown [ 588.792907] Mapping: Keyboard.00a4 ---> Key.Unknown [ 588.792914] Mapping: Keyboard.00a5 ---> Key.Unknown [ 588.792921] Mapping: Keyboard.00a6 ---> Key.Unknown [ 588.792928] Mapping: Keyboard.00a7 ---> Key.Unknown [ 588.792958] Mapping: Keyboard.00a8 ---> Key.Unknown [ 588.792964] Mapping: Keyboard.00a9 ---> Key.Unknown [ 588.792972] Mapping: Keyboard.00aa ---> Key.Unknown [ 588.792979] Mapping: Keyboard.00ab ---> Key.Unknown [ 588.792985] Mapping: Keyboard.00ac ---> Key.Unknown [ 588.792992] Mapping: Keyboard.00ad ---> Key.Unknown [ 588.792999] Mapping: Keyboard.00ae ---> Key.Unknown [ 588.793006] Mapping: Keyboard.00af ---> Key.Unknown [ 588.793059] Mapping: Keyboard.00b0 ---> Key.Unknown [ 588.793066] Mapping: Keyboard.00b1 ---> Key.Unknown [ 588.793073] Mapping: Keyboard.00b2 ---> Key.Unknown [ 588.793103] Mapping: Keyboard.00b3 ---> Key.Unknown [ 588.793110] Mapping: Keyboard.00b4 ---> Key.Unknown [ 588.793116] Mapping: Keyboard.00b5 ---> Key.Unknown [ 588.793123] Mapping: Keyboard.00b6 ---> Key.Unknown [ 588.793131] Mapping: Keyboard.00b7 ---> Key.Unknown [ 588.793138] Mapping: Keyboard.00b8 ---> Key.Unknown [ 588.793144] Mapping: Keyboard.00b9 ---> Key.Unknown [ 588.793151] Mapping: Keyboard.00ba ---> Key.Unknown [ 588.793157] Mapping: Keyboard.00bb ---> Key.Unknown [ 588.793165] Mapping: Keyboard.00bc ---> Key.Unknown [ 588.793172] Mapping: Keyboard.00bd ---> Key.Unknown [ 588.793179] Mapping: Keyboard.00be ---> Key.Unknown [ 588.793186] Mapping: Keyboard.00bf ---> Key.Unknown [ 588.793193] Mapping: Keyboard.00c0 ---> Key.Unknown [ 588.793200] Mapping: Keyboard.00c1 ---> Key.Unknown [ 588.793208] Mapping: Keyboard.00c2 ---> Key.Unknown [ 588.793215] Mapping: Keyboard.00c3 ---> Key.Unknown [ 588.793221] Mapping: Keyboard.00c4 ---> Key.Unknown [ 588.793252] Mapping: Keyboard.00c5 ---> Key.Unknown [ 588.793259] Mapping: Keyboard.00c6 ---> Key.Unknown [ 588.793266] Mapping: Keyboard.00c7 ---> Key.Unknown [ 588.793273] Mapping: Keyboard.00c8 ---> Key.Unknown [ 588.793280] Mapping: Keyboard.00c9 ---> Key.Unknown [ 588.793287] Mapping: Keyboard.00ca ---> Key.Unknown [ 588.793294] Mapping: Keyboard.00cb ---> Key.Unknown [ 588.793300] Mapping: Keyboard.00cc ---> Key.Unknown [ 588.793308] Mapping: Keyboard.00cd ---> Key.Unknown [ 588.793314] Mapping: Keyboard.00ce ---> Key.Unknown [ 588.793345] Mapping: Keyboard.00cf ---> Key.Unknown [ 588.793351] Mapping: Keyboard.00d0 ---> Key.Unknown [ 588.793358] Mapping: Keyboard.00d1 ---> Key.Unknown [ 588.793389] Mapping: Keyboard.00d2 ---> Key.Unknown [ 588.793419] Mapping: Keyboard.00d3 ---> Key.Unknown [ 588.793449] Mapping: Keyboard.00d4 ---> Key.Unknown [ 588.793456] Mapping: Keyboard.00d5 ---> Key.Unknown [ 588.793463] Mapping: Keyboard.00d6 ---> Key.Unknown [ 588.793493] Mapping: Keyboard.00d7 ---> Key.Unknown [ 588.793500] Mapping: Keyboard.00d8 ---> Key.Unknown [ 588.793507] Mapping: Keyboard.00d9 ---> Key.Unknown [ 588.793514] Mapping: Keyboard.00da ---> Key.Unknown [ 588.793544] Mapping: Keyboard.00db ---> Key.Unknown [ 588.793551] Mapping: Keyboard.00dc ---> Key.Unknown [ 588.793558] Mapping: Keyboard.00dd ---> Key.Unknown [ 588.793587] Mapping: Keyboard.00de ---> Key.Unknown [ 588.793594] Mapping: Keyboard.00df ---> Key.Unknown [ 588.793601] Mapping: Keyboard.00e0 ---> Key.LeftControl [ 588.793608] Mapping: Keyboard.00e1 ---> Key.LeftShift [ 588.793614] Mapping: Keyboard.00e2 ---> Key.LeftAlt [ 588.793622] Mapping: Keyboard.00e3 ---> Key.LeftMeta [ 588.793629] Mapping: Keyboard.00e4 ---> Key.RightCtrl [ 588.793635] Mapping: Keyboard.00e5 ---> Key.RightShift [ 588.793642] Mapping: Keyboard.00e6 ---> Key.RightAlt [ 588.793648] Mapping: Keyboard.00e7 ---> Key.RightMeta [ 588.793655] Mapping: Keyboard.00e8 ---> Key.PlayPause [ 588.793708] Mapping: Keyboard.00e9 ---> Key.StopCD [ 588.793715] Mapping: Keyboard.00ea ---> Key.PreviousSong [ 588.793727] Mapping: Keyboard.00eb ---> Key.NextSong [ 588.793736] Mapping: Keyboard.00ec ---> Key.EjectCD [ 588.793743] Mapping: Keyboard.00ed ---> Key.VolumeUp [ 588.793750] Mapping: Keyboard.00ee ---> Key.VolumeDown [ 588.793757] Mapping: Keyboard.00ef ---> Key.Mute [ 588.793764] Mapping: Keyboard.00f0 ---> Key.WWW [ 588.793771] Mapping: Keyboard.00f1 ---> Key.Back [ 588.793778] Mapping: Keyboard.00f2 ---> Key.Forward [ 588.793785] Mapping: Keyboard.00f3 ---> Key.Stop [ 588.793791] Mapping: Keyboard.00f4 ---> Key.Find [ 588.793799] Mapping: Keyboard.00f5 ---> Key.ScrollUp [ 588.793806] Mapping: Keyboard.00f6 ---> Key.ScrollDown [ 588.793813] Mapping: Keyboard.00f7 ---> Key.Edit [ 588.793820] Mapping: Keyboard.00f8 ---> Key.Sleep [ 588.793828] Mapping: Keyboard.00f9 ---> Key.Coffee [ 588.793834] Mapping: Keyboard.00fa ---> Key.Refresh [ 588.793842] Mapping: Keyboard.00fb ---> Key.Calc [ 588.793848] Mapping: Keyboard.00fc ---> Key.Unknown [ 588.793856] Mapping: Keyboard.00fd ---> Key.Unknown [ 588.793863] Mapping: Keyboard.00fe ---> Key.Unknown [ 588.793892] Mapping: Keyboard.00ff ---> Key.Unknown [ 588.793900] Mapping: ffbc.0000 ---> IGNORED [ 588.793907] Mapping: ffbc.0001 ---> IGNORED [ 588.793913] Mapping: ffbc.0002 ---> IGNORED [ 588.793921] Mapping: ffbc.0003 ---> IGNORED [ 588.793927] Mapping: ffbc.0004 ---> Key.Again [ 588.793935] Mapping: ffbc.0005 ---> IGNORED [ 588.793965] Mapping: ffbc.0006 ---> IGNORED [ 588.793972] Mapping: ffbc.0007 ---> IGNORED [ 588.793979] Mapping: ffbc.0008 ---> IGNORED [ 588.793986] Mapping: ffbc.0009 ---> IGNORED [ 588.793993] Mapping: ffbc.000a ---> IGNORED [ 588.794022] Mapping: ffbc.000b ---> IGNORED [ 588.794030] Mapping: ffbc.000c ---> IGNORED [ 588.794037] Mapping: ffbc.000d ---> Key.Home [ 588.794045] Mapping: ffbc.000e ---> IGNORED [ 588.794075] Mapping: ffbc.000f ---> IGNORED [ 588.794105] Mapping: ffbc.0010 ---> IGNORED [ 588.794111] Mapping: ffbc.0011 ---> IGNORED [ 588.794119] Mapping: ffbc.0012 ---> IGNORED [ 588.794125] Mapping: ffbc.0013 ---> IGNORED [ 588.794132] Mapping: ffbc.0014 ---> IGNORED [ 588.794140] Mapping: ffbc.0015 ---> IGNORED [ 588.794147] Mapping: ffbc.0016 ---> IGNORED [ 588.794154] Mapping: ffbc.0017 ---> IGNORED [ 588.794161] Mapping: ffbc.0018 ---> IGNORED [ 588.794168] Mapping: ffbc.0019 ---> IGNORED [ 588.794175] Mapping: ffbc.001a ---> IGNORED [ 588.794182] Mapping: ffbc.001b ---> IGNORED [ 588.794188] Mapping: ffbc.001c ---> IGNORED [ 588.794195] Mapping: ffbc.001d ---> IGNORED [ 588.794202] Mapping: ffbc.001e ---> IGNORED [ 588.794232] Mapping: ffbc.001f ---> IGNORED [ 588.794239] Mapping: ffbc.0020 ---> IGNORED [ 588.794246] Mapping: ffbc.0021 ---> IGNORED [ 588.794254] Mapping: ffbc.0022 ---> IGNORED [ 588.794260] Mapping: ffbc.0023 ---> IGNORED [ 588.794268] Mapping: ffbc.0024 ---> Key.Shuffle [ 588.794276] Mapping: ffbc.0025 ---> Key.TV [ 588.794283] Mapping: ffbc.0026 ---> Key.Menu [ 588.794314] Mapping: ffbc.0027 ---> IGNORED [ 588.794321] Mapping: ffbc.0028 ---> IGNORED [ 588.794328] Mapping: ffbc.0029 ---> IGNORED [ 588.794335] Mapping: ffbc.002a ---> IGNORED [ 588.794342] Mapping: ffbc.002b ---> IGNORED [ 588.794371] Mapping: ffbc.002c ---> IGNORED [ 588.794379] Mapping: ffbc.002d ---> IGNORED [ 588.794385] Mapping: ffbc.002e ---> IGNORED [ 588.794415] Mapping: ffbc.002f ---> IGNORED [ 588.794422] Mapping: ffbc.0030 ---> IGNORED [ 588.794452] Mapping: ffbc.0031 ---> Key.Audio [ 588.794482] Mapping: ffbc.0032 ---> Key.Text [ 588.794490] Mapping: ffbc.0033 ---> Key.Last [ 588.794498] Mapping: ffbc.0034 ---> IGNORED [ 588.794528] Mapping: ffbc.0035 ---> IGNORED [ 588.794535] Mapping: ffbc.0036 ---> IGNORED [ 588.794542] Mapping: ffbc.0037 ---> IGNORED [ 588.794549] Mapping: ffbc.0038 ---> IGNORED [ 588.794556] Mapping: ffbc.0039 ---> IGNORED [ 588.794563] Mapping: ffbc.003a ---> IGNORED [ 588.794570] Mapping: ffbc.003b ---> IGNORED [ 588.794577] Mapping: ffbc.003c ---> IGNORED [ 588.794584] Mapping: ffbc.003d ---> IGNORED [ 588.794591] Mapping: ffbc.003e ---> IGNORED [ 588.794598] Mapping: ffbc.003f ---> IGNORED [ 588.794605] Mapping: ffbc.0040 ---> IGNORED [ 588.794612] Mapping: ffbc.0041 ---> IGNORED [ 588.794619] Mapping: ffbc.0042 ---> IGNORED [ 588.794626] Mapping: ffbc.0043 ---> IGNORED [ 588.794633] Mapping: ffbc.0044 ---> IGNORED [ 588.794640] Mapping: ffbc.0045 ---> IGNORED [ 588.794647] Mapping: ffbc.0046 ---> IGNORED [ 588.794654] Mapping: ffbc.0047 ---> Key.MP3 [ 588.794662] Mapping: ffbc.0048 ---> Key.DVD [ 588.794692] Mapping: ffbc.0049 ---> Key.Media [ 588.794700] Mapping: ffbc.004a ---> Key.Video [ 588.794707] Mapping: ffbc.004b ---> Key.Angle [ 588.794716] Mapping: ffbc.004c ---> Key.Language [ 588.794724] Mapping: ffbc.004d ---> Key.Subtitle [ 588.794732] Mapping: ffbc.004e ---> IGNORED [ 588.794739] Mapping: ffbc.004f ---> IGNORED [ 588.794746] Mapping: ffbc.0050 ---> IGNORED [ 588.794753] Mapping: ffbc.0051 ---> Key.Red [ 588.794760] Mapping: ffbc.0052 ---> Key.Close [ 588.794769] Mapping: ffbc.0053 ---> IGNORED [ 588.794776] Mapping: ffbc.0054 ---> IGNORED [ 588.794783] Mapping: ffbc.0055 ---> IGNORED [ 588.794791] Mapping: ffbc.0056 ---> IGNORED [ 588.794798] Mapping: ffbc.0057 ---> IGNORED [ 588.794829] Mapping: ffbc.0058 ---> IGNORED [ 588.794837] Mapping: ffbc.0059 ---> IGNORED [ 588.794844] Mapping: ffbc.005a ---> Key.Text [ 588.794853] Mapping: ffbc.005b ---> IGNORED [ 588.794860] Mapping: ffbc.005c ---> IGNORED [ 588.794867] Mapping: ffbc.005d ---> IGNORED [ 588.794874] Mapping: ffbc.005e ---> IGNORED [ 588.794882] Mapping: ffbc.005f ---> IGNORED [ 588.794890] Mapping: ffbc.0060 ---> IGNORED [ 588.794897] Mapping: ffbc.0061 ---> IGNORED [ 588.794905] Mapping: ffbc.0062 ---> IGNORED [ 588.794913] Mapping: ffbc.0063 ---> IGNORED [ 588.794920] Mapping: ffbc.0064 ---> IGNORED [ 588.794928] Mapping: ffbc.0065 ---> IGNORED [ 588.794935] Mapping: ffbc.0066 ---> IGNORED [ 588.794943] Mapping: ffbc.0067 ---> IGNORED [ 588.794950] Mapping: ffbc.0068 ---> IGNORED [ 588.794957] Mapping: ffbc.0069 ---> IGNORED [ 588.794965] Mapping: ffbc.006a ---> IGNORED [ 588.794972] Mapping: ffbc.006b ---> IGNORED [ 588.794979] Mapping: ffbc.006c ---> IGNORED [ 588.794987] Mapping: ffbc.006d ---> IGNORED [ 588.794994] Mapping: ffbc.006e ---> IGNORED [ 588.795025] Mapping: ffbc.006f ---> IGNORED [ 588.795032] Mapping: ffbc.0070 ---> IGNORED [ 588.795040] Mapping: ffbc.0071 ---> IGNORED [ 588.795048] Mapping: ffbc.0072 ---> IGNORED [ 588.795055] Mapping: ffbc.0073 ---> IGNORED [ 588.795062] Mapping: ffbc.0074 ---> IGNORED [ 588.795069] Mapping: ffbc.0075 ---> IGNORED [ 588.795077] Mapping: ffbc.0076 ---> IGNORED [ 588.795085] Mapping: ffbc.0077 ---> IGNORED [ 588.795092] Mapping: ffbc.0078 ---> IGNORED [ 588.795100] Mapping: ffbc.0079 ---> IGNORED [ 588.795108] Mapping: ffbc.007a ---> IGNORED [ 588.795115] Mapping: ffbc.007b ---> IGNORED [ 588.795122] Mapping: ffbc.007c ---> IGNORED [ 588.795130] Mapping: ffbc.007d ---> IGNORED [ 588.795137] Mapping: ffbc.007e ---> IGNORED [ 588.795145] Mapping: ffbc.007f ---> IGNORED [ 588.795152] Mapping: ffbc.0080 ---> IGNORED [ 588.795159] Mapping: ffbc.0081 ---> IGNORED [ 588.795167] Mapping: ffbc.0082 ---> IGNORED [ 588.795174] Mapping: ffbc.0083 ---> IGNORED [ 588.795182] Mapping: ffbc.0084 ---> IGNORED [ 588.795189] Mapping: ffbc.0085 ---> IGNORED [ 588.795197] Mapping: ffbc.0086 ---> IGNORED [ 588.795204] Mapping: ffbc.0087 ---> IGNORED [ 588.795211] Mapping: ffbc.0088 ---> IGNORED [ 588.795219] Mapping: ffbc.0089 ---> IGNORED [ 588.795227] Mapping: ffbc.008a ---> IGNORED [ 588.795234] Mapping: ffbc.008b ---> IGNORED [ 588.795241] Mapping: ffbc.008c ---> IGNORED [ 588.795249] Mapping: ffbc.008d ---> IGNORED [ 588.795280] Mapping: ffbc.008e ---> IGNORED [ 588.795287] Mapping: ffbc.008f ---> IGNORED [ 588.795295] Mapping: ffbc.0090 ---> IGNORED [ 588.795302] Mapping: ffbc.0091 ---> IGNORED [ 588.795310] Mapping: ffbc.0092 ---> IGNORED [ 588.795318] Mapping: ffbc.0093 ---> IGNORED [ 588.795326] Mapping: ffbc.0094 ---> IGNORED [ 588.795333] Mapping: ffbc.0095 ---> IGNORED [ 588.795339] Mapping: ffbc.0096 ---> IGNORED [ 588.795347] Mapping: ffbc.0097 ---> IGNORED [ 588.795354] Mapping: ffbc.0098 ---> IGNORED [ 588.795361] Mapping: ffbc.0099 ---> IGNORED [ 588.795369] Mapping: ffbc.009a ---> IGNORED [ 588.795377] Mapping: ffbc.009b ---> IGNORED [ 588.795384] Mapping: ffbc.009c ---> IGNORED [ 588.795391] Mapping: ffbc.009d ---> IGNORED [ 588.795399] Mapping: ffbc.009e ---> IGNORED [ 588.795407] Mapping: ffbc.009f ---> IGNORED [ 588.795415] Mapping: ffbc.00a0 ---> IGNORED [ 588.795422] Mapping: ffbc.00a1 ---> IGNORED [ 588.795430] Mapping: ffbc.00a2 ---> IGNORED [ 588.795437] Mapping: ffbc.00a3 ---> IGNORED [ 588.795444] Mapping: ffbc.00a4 ---> IGNORED [ 588.795452] Mapping: ffbc.00a5 ---> IGNORED [ 588.795458] Mapping: ffbc.00a6 ---> IGNORED [ 588.795465] Mapping: ffbc.00a7 ---> IGNORED [ 588.795471] Mapping: ffbc.00a8 ---> IGNORED [ 588.795478] Mapping: ffbc.00a9 ---> IGNORED [ 588.795508] Mapping: ffbc.00aa ---> IGNORED [ 588.795516] Mapping: ffbc.00ab ---> IGNORED [ 588.795546] Mapping: ffbc.00ac ---> IGNORED [ 588.795554] Mapping: ffbc.00ad ---> IGNORED [ 588.795561] Mapping: ffbc.00ae ---> IGNORED [ 588.795569] Mapping: ffbc.00af ---> IGNORED [ 588.795575] Mapping: ffbc.00b0 ---> IGNORED [ 588.795582] Mapping: ffbc.00b1 ---> IGNORED [ 588.795588] Mapping: ffbc.00b2 ---> IGNORED [ 588.795595] Mapping: ffbc.00b3 ---> IGNORED [ 588.795625] Mapping: ffbc.00b4 ---> IGNORED [ 588.795656] Mapping: ffbc.00b5 ---> IGNORED [ 588.795664] Mapping: ffbc.00b6 ---> IGNORED [ 588.795671] Mapping: ffbc.00b7 ---> IGNORED [ 588.795679] Mapping: ffbc.00b8 ---> IGNORED [ 588.795686] Mapping: ffbc.00b9 ---> IGNORED [ 588.795694] Mapping: ffbc.00ba ---> IGNORED [ 588.795702] Mapping: ffbc.00bb ---> IGNORED [ 588.795709] Mapping: ffbc.00bc ---> IGNORED [ 588.795716] Mapping: ffbc.00bd ---> IGNORED [ 588.795724] Mapping: ffbc.00be ---> IGNORED [ 588.795731] Mapping: ffbc.00bf ---> IGNORED [ 588.795739] Mapping: ffbc.00c0 ---> IGNORED [ 588.795746] Mapping: ffbc.00c1 ---> IGNORED [ 588.795754] Mapping: ffbc.00c2 ---> IGNORED [ 588.795762] Mapping: ffbc.00c3 ---> IGNORED [ 588.795769] Mapping: ffbc.00c4 ---> IGNORED [ 588.795777] Mapping: ffbc.00c5 ---> IGNORED [ 588.795785] Mapping: ffbc.00c6 ---> IGNORED [ 588.795792] Mapping: ffbc.00c7 ---> IGNORED [ 588.795800] Mapping: ffbc.00c8 ---> IGNORED [ 588.795807] Mapping: ffbc.00c9 ---> IGNORED [ 588.795838] Mapping: ffbc.00ca ---> IGNORED [ 588.795846] Mapping: ffbc.00cb ---> IGNORED [ 588.795854] Mapping: ffbc.00cc ---> IGNORED [ 588.795862] Mapping: ffbc.00cd ---> IGNORED [ 588.795869] Mapping: ffbc.00ce ---> IGNORED [ 588.795876] Mapping: ffbc.00cf ---> IGNORED [ 588.795884] Mapping: ffbc.00d0 ---> IGNORED [ 588.795891] Mapping: ffbc.00d1 ---> IGNORED [ 588.795898] Mapping: ffbc.00d2 ---> IGNORED [ 588.795906] Mapping: ffbc.00d3 ---> IGNORED [ 588.795913] Mapping: ffbc.00d4 ---> IGNORED [ 588.795943] Mapping: ffbc.00d5 ---> IGNORED [ 588.795951] Mapping: ffbc.00d6 ---> IGNORED [ 588.795959] Mapping: ffbc.00d7 ---> IGNORED [ 588.795966] Mapping: ffbc.00d8 ---> IGNORED [ 588.795974] Mapping: ffbc.00d9 ---> IGNORED [ 588.795981] Mapping: ffbc.00da ---> IGNORED [ 588.795988] Mapping: ffbc.00db ---> IGNORED [ 588.795995] Mapping: ffbc.00dc ---> IGNORED [ 588.796002] Mapping: ffbc.00dd ---> IGNORED [ 588.796009] Mapping: ffbc.00de ---> IGNORED [ 588.796016] Mapping: ffbc.00df ---> IGNORED [ 588.796024] Mapping: ffbc.00e0 ---> IGNORED [ 588.796031] Mapping: ffbc.00e1 ---> IGNORED [ 588.796038] Mapping: ffbc.00e2 ---> IGNORED [ 588.796067] Mapping: ffbc.00e3 ---> IGNORED [ 588.796075] Mapping: ffbc.00e4 ---> IGNORED [ 588.796083] Mapping: ffbc.00e5 ---> IGNORED [ 588.796090] Mapping: ffbc.00e6 ---> IGNORED [ 588.796097] Mapping: ffbc.00e7 ---> IGNORED [ 588.796104] Mapping: ffbc.00e8 ---> IGNORED [ 588.796111] Mapping: ffbc.00e9 ---> IGNORED [ 588.796118] Mapping: ffbc.00ea ---> IGNORED [ 588.796125] Mapping: ffbc.00eb ---> IGNORED [ 588.796132] Mapping: ffbc.00ec ---> IGNORED [ 588.796140] Mapping: ffbc.00ed ---> IGNORED [ 588.796146] Mapping: ffbc.00ee ---> IGNORED [ 588.796154] Mapping: ffbc.00ef ---> IGNORED [ 588.796161] Mapping: ffbc.00f0 ---> IGNORED [ 588.796169] Mapping: ff80.0001 ---> Absolute.Misc [ 588.796201] Mapping: ff80.0001 ---> Absolute.? [ 588.796209] Mapping: ff80.0001 ---> Absolute.? [ 588.796217] Mapping: ff80.0001 ---> Absolute.? [ 588.796225] Mapping: LED.NumLock ---> LED.NumLock [ 588.796233] Mapping: LED.CapsLock ---> LED.CapsLock [ 588.796240] Mapping: LED.ScrollLock ---> LED.ScrollLock [ 588.796246] Mapping: LED.Compose ---> LED.Compose [ 588.796253] Mapping: LED.Kana ---> LED.Kana [ 588.796260] Mapping: ff80.0002 ---> Absolute.? [ 588.796269] Mapping: ff80.0002 ---> Absolute.? [ 588.796277] Mapping: ff80.0002 ---> Absolute.? [ 588.796285] Mapping: ff80.0002 ---> Absolute.? [ 588.796293] Mapping: ff80.0002 ---> Absolute.? [ 588.796302] Mapping: ff80.0002 ---> Absolute.? [ 588.796310] Mapping: ff80.0002 ---> Absolute.? [ 588.796440] input: ELMAK.pl irMAKbd pl as /class/input/input8 [ 588.796566] PM: Adding info for No Bus:hiddev0 [ 588.796591] input,hiddev96: USB HID v1.00 Mouse [ELMAK.pl irMAKbd pl] on usb-0000:00:03.0-3 [ 588.796656] PM: Adding info for No Bus:usbdev1.4_ep81 [ 588.796692] PM: Adding info for No Bus:usbdev1.4_ep02 [ 588.796734] PM: Adding info for No Bus:usbdev1.4 [ 588.801745] drivers/hid/hid-core.c: report (size 5) (numbered) [ 588.801750] drivers/hid/hid-core.c: report 6 (size 4) = ab 40 04 00 [ 588.801760] hid-debug: input ff80.0001 = 171 [ 588.801781] hid-debug: input ff80.0001 = 64 [ 588.801789] hid-debug: input ff80.0001 = 4 [ 588.801796] hid-debug: input ff80.0001 = 0 [ 589.124161] tsdev (compaq touchscreen emulation) is scheduled for removal. [ 589.124166] See Documentation/feature-removal-schedule.txt for details. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-14 12:19 ` Islam Amer @ 2007-06-14 12:30 ` Jiri Kosina 2007-06-15 10:15 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-14 12:30 UTC (permalink / raw) To: Islam Amer; +Cc: Dmitry Torokhov, linux-kernel On Thu, 14 Jun 2007, Islam Amer wrote: > Ok here is everything from dmesg after the point of plugging in the usb > IR receiver, which is quite lengthy so as an attachment. Thanks. Obviously this remote has broken report descriptor -- it generates 0xfa usage code from Consumer page for the "back" key (not to mention that it should rather generate 0x224 for KEY_BACK), but logical maximum for coresponding field is set to 0xf9, as far as I can see from the dump you provided. I have met such devices already, we are fixing their report descriptors on the fly before they enter the HID parser. I will prepare a patch for you to test (probably tomorrow, sorry). BTW this also means that the support for the BACK key can't currently be written in userspace using the setkeycodes() method, because this usage is currently just ignored, due to being out of range. -- Jiri Kosina ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-14 12:30 ` Jiri Kosina @ 2007-06-15 10:15 ` Jiri Kosina 2007-06-15 10:51 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-15 10:15 UTC (permalink / raw) To: Islam Amer; +Cc: Dmitry Torokhov, linux-kernel On Thu, 14 Jun 2007, Jiri Kosina wrote: > I have met such devices already, we are fixing their report descriptors > on the fly before they enter the HID parser. I will prepare a patch for > you to test (probably tomorrow, sorry). Islam, please try the patch below (against 2.6.22-rc4) and send me the result. diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 7f81789..a112da2 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -566,6 +566,10 @@ static void hidinput_configure_usage(str case 0x0e5: map_key_clear(KEY_BASSBOOST); break; case 0x0e9: map_key_clear(KEY_VOLUMEUP); break; case 0x0ea: map_key_clear(KEY_VOLUMEDOWN); break; + + /* reserved in HUT 1.12. Reported on Petalynx remote */ + case 0x0fa: map_key_clear(KEY_BACK); break; + case 0x183: map_key_clear(KEY_CONFIG); break; case 0x184: map_key_clear(KEY_WORDPROCESSOR); break; case 0x185: map_key_clear(KEY_EDITOR); break; @@ -704,10 +708,10 @@ static void hidinput_configure_usage(str } break; - case HID_UP_LOGIVENDOR: /* Reported on Logitech Ultra X Media Remote */ - + case HID_UP_LOGIVENDOR: set_bit(EV_REP, input->evbit); switch(usage->hid & HID_USAGE) { + /* Reported on Logitech Ultra X Media Remote */ case 0x004: map_key_clear(KEY_AGAIN); break; case 0x00d: map_key_clear(KEY_HOME); break; case 0x024: map_key_clear(KEY_SHUFFLE); break; @@ -725,6 +729,14 @@ static void hidinput_configure_usage(str case 0x04d: map_key_clear(KEY_SUBTITLE); break; case 0x051: map_key_clear(KEY_RED); break; case 0x052: map_key_clear(KEY_CLOSE); break; + + /* Reported on Petalynx Maxter remote */ + case 0x05a: map_key_clear(KEY_TEXT); break; + case 0x05b: map_key_clear(KEY_RED); break; + case 0x05c: map_key_clear(KEY_GREEN); break; + case 0x05d: map_key_clear(KEY_YELLOW); break; + case 0x05e: map_key_clear(KEY_BLUE); break; + default: goto ignore; } break; diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index d91b9da..b575a07 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -688,6 +688,22 @@ static void hid_fixup_logitech_descripto } } +/* Petalynx Maxter Remote has maximum for consumer page set too low */ +static void hid_fixup_petalynx_descriptor(unsigned char *rdesc, int rsize) +{ + if (rsize >= 60 && rdesc[39] == 0x2a + && rdesc[40] == 0xf5 + && rdesc[41] == 0x00 + && rdesc[59] == 0x26 + && rdesc[60] == 0xf9 + && rdesc[61] == 0x00) { + info("Fixing up Petalynx Maxter Remote report descriptor"); + rdesc[60] = 0xfa; + rdesc[40] = 0xfa; + } else + info("Not fixing up Petalynx Maxter Remote report descriptor"); +} + /* * Some USB barcode readers from cypress have usage min and usage max in * the wrong order @@ -781,6 +797,9 @@ static struct hid_device *usb_hid_config if (quirks & HID_QUIRK_SWAPPED_MIN_MAX) hid_fixup_cypress_descriptor(rdesc, rsize); + if (quirks & HID_QUIRK_PETALYNX_DESCRIPTOR) + hid_fixup_petalynx_descriptor(rdesc, rsize); + #ifdef CONFIG_HID_DEBUG printk(KERN_DEBUG __FILE__ ": report descriptor (size %u, read %d) = ", rsize, n); for (n = 0; n < rsize; n++) diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index f6c4145..4001e47 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c @@ -220,6 +220,9 @@ #define USB_VENDOR_ID_PANTHERLORD 0x0810 #define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001 +#define USB_VENDOR_ID_PETALYNX 0x18b1 +#define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE 0x0037 + #define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 #define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 @@ -418,6 +421,8 @@ static const struct hid_blacklist { { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, + { USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_PETALYNX_DESCRIPTOR }, + { USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER, HID_QUIRK_SONY_PS3_CONTROLLER }, { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET }, diff --git a/include/linux/hid.h b/include/linux/hid.h index 827ee74..3b1d638 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -276,6 +276,7 @@ struct hid_item { #define HID_QUIRK_DUPLICATE_USAGES 0x00200000 #define HID_QUIRK_RESET_LEDS 0x00400000 #define HID_QUIRK_SWAPPED_MIN_MAX 0x00800000 +#define HID_QUIRK_PETALYNX_DESCRIPTOR 0x01000000 /* * This is the global environment of the parser. This information is ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-15 10:15 ` Jiri Kosina @ 2007-06-15 10:51 ` Jiri Kosina 2007-06-17 10:57 ` Islam Amer 0 siblings, 1 reply; 47+ messages in thread From: Jiri Kosina @ 2007-06-15 10:51 UTC (permalink / raw) To: Islam Amer; +Cc: Dmitry Torokhov, linux-kernel On Fri, 15 Jun 2007, Jiri Kosina wrote: > please try the patch below (against 2.6.22-rc4) and send me the result. Now I see in the logs that there are also messages about the report initialization failing, so we should also specify NOGET for this device. Could you please try the patch below instead, which does just that? Thanks. diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 7f81789..a112da2 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -566,6 +566,10 @@ static void hidinput_configure_usage(str case 0x0e5: map_key_clear(KEY_BASSBOOST); break; case 0x0e9: map_key_clear(KEY_VOLUMEUP); break; case 0x0ea: map_key_clear(KEY_VOLUMEDOWN); break; + + /* reserved in HUT 1.12. Reported on Petalynx remote */ + case 0x0fa: map_key_clear(KEY_BACK); break; + case 0x183: map_key_clear(KEY_CONFIG); break; case 0x184: map_key_clear(KEY_WORDPROCESSOR); break; case 0x185: map_key_clear(KEY_EDITOR); break; @@ -704,10 +708,10 @@ static void hidinput_configure_usage(str } break; - case HID_UP_LOGIVENDOR: /* Reported on Logitech Ultra X Media Remote */ - + case HID_UP_LOGIVENDOR: set_bit(EV_REP, input->evbit); switch(usage->hid & HID_USAGE) { + /* Reported on Logitech Ultra X Media Remote */ case 0x004: map_key_clear(KEY_AGAIN); break; case 0x00d: map_key_clear(KEY_HOME); break; case 0x024: map_key_clear(KEY_SHUFFLE); break; @@ -725,6 +729,14 @@ static void hidinput_configure_usage(str case 0x04d: map_key_clear(KEY_SUBTITLE); break; case 0x051: map_key_clear(KEY_RED); break; case 0x052: map_key_clear(KEY_CLOSE); break; + + /* Reported on Petalynx Maxter remote */ + case 0x05a: map_key_clear(KEY_TEXT); break; + case 0x05b: map_key_clear(KEY_RED); break; + case 0x05c: map_key_clear(KEY_GREEN); break; + case 0x05d: map_key_clear(KEY_YELLOW); break; + case 0x05e: map_key_clear(KEY_BLUE); break; + default: goto ignore; } break; diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index d91b9da..b575a07 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -688,6 +688,22 @@ static void hid_fixup_logitech_descripto } } +/* Petalynx Maxter Remote has maximum for consumer page set too low */ +static void hid_fixup_petalynx_descriptor(unsigned char *rdesc, int rsize) +{ + if (rsize >= 60 && rdesc[39] == 0x2a + && rdesc[40] == 0xf5 + && rdesc[41] == 0x00 + && rdesc[59] == 0x26 + && rdesc[60] == 0xf9 + && rdesc[61] == 0x00) { + info("Fixing up Petalynx Maxter Remote report descriptor"); + rdesc[60] = 0xfa; + rdesc[40] = 0xfa; + } else + info("Not fixing up Petalynx Maxter Remote report descriptor"); +} + /* * Some USB barcode readers from cypress have usage min and usage max in * the wrong order @@ -781,6 +797,9 @@ static struct hid_device *usb_hid_config if (quirks & HID_QUIRK_SWAPPED_MIN_MAX) hid_fixup_cypress_descriptor(rdesc, rsize); + if (quirks & HID_QUIRK_PETALYNX_DESCRIPTOR) + hid_fixup_petalynx_descriptor(rdesc, rsize); + #ifdef CONFIG_HID_DEBUG printk(KERN_DEBUG __FILE__ ": report descriptor (size %u, read %d) = ", rsize, n); for (n = 0; n < rsize; n++) diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index f6c4145..bb34e90 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c @@ -220,6 +220,9 @@ #define USB_VENDOR_ID_PANTHERLORD 0x0810 #define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001 +#define USB_VENDOR_ID_PETALYNX 0x18b1 +#define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE 0x0037 + #define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 #define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 @@ -418,6 +421,8 @@ static const struct hid_blacklist { { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, + { USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_PETALYNX_DESCRIPTOR | HID_QUIRK_NOGET }, + { USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER, HID_QUIRK_SONY_PS3_CONTROLLER }, { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET }, diff --git a/include/linux/hid.h b/include/linux/hid.h index 827ee74..3b1d638 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -276,6 +276,7 @@ struct hid_item { #define HID_QUIRK_DUPLICATE_USAGES 0x00200000 #define HID_QUIRK_RESET_LEDS 0x00400000 #define HID_QUIRK_SWAPPED_MIN_MAX 0x00800000 +#define HID_QUIRK_PETALYNX_DESCRIPTOR 0x01000000 /* * This is the global environment of the parser. This information is ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-15 10:51 ` Jiri Kosina @ 2007-06-17 10:57 ` Islam Amer 2007-06-18 11:42 ` Jiri Kosina 0 siblings, 1 reply; 47+ messages in thread From: Islam Amer @ 2007-06-17 10:57 UTC (permalink / raw) To: Jiri Kosina; +Cc: Dmitry Torokhov, linux-kernel On Fri, 2007-06-15 at 12:51 +0200, Jiri Kosina wrote: > On Fri, 15 Jun 2007, Jiri Kosina wrote: > > > please try the patch below (against 2.6.22-rc4) and send me the result. > > Now I see in the logs that there are also messages about the > report initialization failing, so we should also specify NOGET for this > device. > > Could you please try the patch below instead, which does just that? > Thanks. Sorry for the late reply, I don't have internet connection at home and I had to download 2.6.22-rc5 to test. Yes the last patch fixes everything, amazing! Thanks a lot for this :) That's what I call opensource support... Oh btw, Sorry about hijacking the other thread. I noticed another button not working the "More" button. I think I already got the idea of fixing these things, not that the "more" button matters anyway but here's the output from this button for the sake of completeness. [ 547.916065] drivers/hid/hid-core.c: report (size 5) (numbered) [ 547.916073] drivers/hid/hid-core.c: report 4 (size 4) = f6 00 00 00 [ 547.916081] hid-debug: input Consumer.0000 = 0 [ 547.916088] hid-debug: input Consumer.00f6 = 1 [ 547.924032] drivers/hid/hid-core.c: report (size 5) (numbered) [ 547.924036] drivers/hid/hid-core.c: report 6 (size 4) = 01 0f 00 00 [ 547.924043] hid-debug: input ff80.0001 = 1 [ 547.924052] hid-debug: input ff80.0001 = 15 [ 547.924064] hid-debug: input ff80.0001 = 0 [ 547.924069] hid-debug: input ff80.0001 = 0 [ 548.035668] drivers/hid/hid-core.c: report (size 5) (numbered) [ 548.035673] drivers/hid/hid-core.c: report 4 (size 4) = 00 00 00 00 [ 548.035679] hid-debug: input Consumer.00f6 = 0 [ 548.035684] hid-debug: input Consumer.0000 = 1 ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-17 10:57 ` Islam Amer @ 2007-06-18 11:42 ` Jiri Kosina 0 siblings, 0 replies; 47+ messages in thread From: Jiri Kosina @ 2007-06-18 11:42 UTC (permalink / raw) To: Islam Amer; +Cc: Dmitry Torokhov, linux-kernel On Sun, 17 Jun 2007, Islam Amer wrote: > Yes the last patch fixes everything, amazing! Thanks a lot for this :) > That's what I call opensource support... I noticed another button not > working the "More" button. I think I already got the idea of fixing > these things, not that the "more" button matters anyway but here's the > output from this button for the sake of completeness. Thanks for your feedback, I will tidy the patch up, add support for the "More" button (will map it to KEY_NEXT) and will queue it in my tree. -- Jiri Kosina ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: USB remote control missing keycodes 2007-06-11 11:57 ` USB remote control missing keycodes Islam Amer 2007-06-11 15:02 ` Jiri Kosina @ 2007-06-15 17:55 ` Phillip Susi 1 sibling, 0 replies; 47+ messages in thread From: Phillip Susi @ 2007-06-15 17:55 UTC (permalink / raw) To: pharon; +Cc: linux-kernel Please do not hit reply and change the subject when you really want to create a new message. You apparently replied to to a message in the thread "ext2 on flash memory". This causes your message to show up under that thread, which is confusing to people reading that thread, and will cause those ignoring that thread to never see your message. Islam Amer wrote: > Hello all. > > I have a remote control device, with an IR transciever that plugs into a > USB port and registers as an input device. > > All the buttons on the remote work fine except for the back , text , and > three grey buttons at the top. > > Here is the relevant /proc/bus/input/devices entry : > > > I: Bus=0003 Vendor=18b1 Product=0037 Version=0100 > N: Name="ELMAK.pl irMAKbd pl" > P: Phys=usb-0000:00:03.1-2/input0 > S: Sysfs=/class/input/input4 > H: Handlers=kbd mouse1 event4 ts1 > B: EV=12000f > B: KEY=f 42c53b7 bf0d4400 0 0 70001 10004 3c007 ff8763fa c140dfff > febeffdf ffefffff ffffffff fffffffe > B: REL=103 > B: ABS=7ff01 0 > B: LED=1f > > I did a little investigation using evbug and inputlircd and it seems > that these buttons generate codes that get dropped somewhere in the > input layer. They work fine on windows. > > I used a modified inputlircd to get all the raw keycodes using irw : > > Here's what I get for the down key : > > 6c 0 KEY_DOWN event4 > 0 0 KEY_RESERVED event4 > 29 0 KEY_GRAVE event4 > 0 0 KEY_RESERVED event4 > 6c 0 KEY_DOWN event4 > 0 0 KEY_RESERVED event4 > > and volume+ > > 73 0 KEY_VOLUMEUP event4 > 0 0 KEY_RESERVED event4 > 29 0 KEY_GRAVE event4 > 0 0 KEY_RESERVED event4 > 73 0 KEY_VOLUMEUP event4 > 0 0 KEY_RESERVED event4 > > As compared to the non-functional keys like back : > > 29 0 KEY_GRAVE event4 > 0 0 KEY_RESERVED event4 > > As you can see it is sending only the reserved and GRAVE codes, and no > special codes. > > Next point of debugging is inside the kernel, using the evbug module : > > sudo modprobe evbug > > pressed the Volume+ key > > look in dmesg : > > [ 2815.891865] evbug.c: Connected device: "Macintosh mouse button emulation", <NULL> > [ 2815.891874] evbug.c: Connected device: "AT Translated Set 2 keyboard", isa0060/serio0/input0 > [ 2815.891878] evbug.c: Connected device: "cx88 IR (Hauppauge Nova-S-Plus ", pci-0000:00:05.0/ir0 > [ 2815.891883] evbug.c: Connected device: "PC Speaker", isa0061/input0 > [ 2815.891887] evbug.c: Connected device: "ELMAK.pl irMAKbd pl", usb-0000:00:03.1-2/input0 > [ 2815.891892] evbug.c: Connected device: "Power Button (FF)", ACPI_FPB/button/input0 > [ 2815.891896] evbug.c: Connected device: "Power Button (CM)", PNP0C0C/button/input0 > [ 2820.988865] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 1, Code: 115, Value: 1 > [ 2820.988875] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 > [ 2820.996844] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 3, Code: 41, Value: 144 > [ 2820.996854] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 > [ 2821.212577] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 1, Code: 115, Value: 0 > [ 2821.212587] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 > > pressed the Back button the extra lines are : > > [ 2856.041526] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 3, Code: 41, Value: 35 > [ 2856.041537] evbug.c: Event. Dev: usb-0000:00:03.1-2/input0, Type: 0, Code: 0, Value: 0 > > > I just need a pointer to where to start looking at the problem. > > Here's the website for the remote > http://www.elmak.pl/index.php?option=com_phpshop&page=shop.browse&category_id=14&ext=opis&lang=en > > I am running ubuntu fiesty > Linux ubuntu 2.6.20-15-generic #2 SMP > > Thanks in advance. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 11:11 ` Eduard-Gabriel Munteanu 2007-06-11 11:57 ` USB remote control missing keycodes Islam Amer @ 2007-06-11 17:36 ` DervishD 2007-06-13 13:16 ` Ph. Marek 1 sibling, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-11 17:36 UTC (permalink / raw) To: Eduard-Gabriel Munteanu; +Cc: linux-kernel Hi Eduard :) * Eduard-Gabriel Munteanu <maxdamage@aladin.ro> dixit: > > I was wondering: is there any reason not to use ext2 on an USB > >pendrive? Really my question is not only about USB pendrives, but any > >device whose storage is flash based. Let's assume that the device has > >a good quality flash memory with wear leveling and the like... > > Your USB pendrive will wear faster if you use an inappropriate > filesystem. Such filesystems require frequent writes and change their > internal state often. That's what I supposed. > Really, why don't you try a more suitable fs for your pendrive, one that > changes itself less than usual fs's? I was just wondering if, apart from the excessive wear, there were other reasons. One of the reasons I would like to use a good filesystem for a pendrive is to be able to store file metadata (UID, GID, mode, etc.) properly, for example to store a "live" copy of my home dir in the pendrive. Thanks for your answer :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 17:36 ` ext2 on flash memory DervishD @ 2007-06-13 13:16 ` Ph. Marek 2007-06-13 23:02 ` DervishD 0 siblings, 1 reply; 47+ messages in thread From: Ph. Marek @ 2007-06-13 13:16 UTC (permalink / raw) To: linux-kernel (Sorry for this hand-crafted message. I'm not subscribed, lkml.org is down, so I have to manually add the Reply-To header.) > I was just wondering if, apart from the excessive wear, there were > other reasons. One of the reasons I would like to use a good filesystem > for a pendrive is to be able to store file metadata (UID, GID, mode, > etc.) properly, for example to store a "live" copy of my home dir in the > pendrive. If it would be enough to have a backup (with meta-data), that needs some software to be read again, you could also try fsvs (http://fsvs.tigris.org). That does a full filesystem versioning (with owner, group, mode and mtime) into a subversion repository. This would have the benefit that you could keep the "prefered" filesystem, but have a (versioned!) backup of your data. The files can, if fsvs is not available, be restored by subversion binaries (although without meta-data support), so in case of an emergency you could read the data even from windows. (Like when using tar, you'd need to download something or keep this binary on the usb-stick). http://freshmeat.net/projects/fsvs: FSVS stands for "Fast System VerSioning", "File System VerSioning", or "Full System VerSioning". It is used for backup/restore and system configuration management, using a Subversion repository as the backend. For questions "users" or "dev" "at fsvs.tigris.org" are available. Regards, Phil ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-13 13:16 ` Ph. Marek @ 2007-06-13 23:02 ` DervishD 2007-06-14 5:16 ` Ph. Marek 0 siblings, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-13 23:02 UTC (permalink / raw) To: Ph. Marek; +Cc: linux-kernel Hi Philipp :)) * Ph. Marek <philipp.marek@bmlv.gv.at> dixit: > > I was just wondering if, apart from the excessive wear, there were > > other reasons. One of the reasons I would like to use a good filesystem > > for a pendrive is to be able to store file metadata (UID, GID, mode, > > etc.) properly, for example to store a "live" copy of my home dir in the > > pendrive. > If it would be enough to have a backup (with meta-data), that needs some > software to be read again, you could also try fsvs (http://fsvs.tigris.org). > > That does a full filesystem versioning (with owner, group, mode and mtime) > into a subversion repository. This would have the benefit that you could keep > the "prefered" filesystem, but have a (versioned!) backup of your data. Your message is very peculiar... because I already have a similar thing working on my system ;))) I tried FSVS and I didn't like it fully (don't ask me why, I don't even remember, that was a time ago), so I wrote my own system. Instead of a complex solution, I opted for a simple (but ad-hoc) solution, writing a pre-commit-hook in Perl and a couple of files to store the metadata. Very simple but I have all my system configuration files (and other files that I want to have versioned) under SVN. Thanks for your suggestion anyway, because I think that the concept (having versioned system files) is interesting and very useful :)) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-13 23:02 ` DervishD @ 2007-06-14 5:16 ` Ph. Marek 0 siblings, 0 replies; 47+ messages in thread From: Ph. Marek @ 2007-06-14 5:16 UTC (permalink / raw) To: DervishD; +Cc: linux-kernel On Donnerstag, 14. Juni 2007, DervishD wrote: > Your message is very peculiar... because I already have a similar > thing working on my system ;))) I tried FSVS and I didn't like it fully > (don't ask me why, I don't even remember, that was a time ago), so I > wrote my own system. Well, if you ever remember (or do a new try), please tell me (or the mailing lists) your suggestions/ideas. > Instead of a complex solution, I opted for a simple (but ad-hoc) > solution, writing a pre-commit-hook in Perl and a couple of files to > store the metadata. Very simple but I have all my system configuration > files (and other files that I want to have versioned) under SVN. But you'd still need to manually restore the permissions, don't you? And I think you don't take devices ... BTW, "fsvs status" is much faster than "svn status" ... sometimes faster than find (on cold caches). > Thanks for your suggestion anyway, because I think that the concept > (having versioned system files) is interesting and very useful :)) I think so too. Thank you for your answer! Regards, Phil ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 10:13 ext2 on flash memory DervishD 2007-06-11 11:11 ` Eduard-Gabriel Munteanu @ 2007-06-11 14:58 ` alan 2007-06-11 17:42 ` DervishD 2007-06-11 23:53 ` Kevin K ` (2 subsequent siblings) 4 siblings, 1 reply; 47+ messages in thread From: alan @ 2007-06-11 14:58 UTC (permalink / raw) To: DervishD; +Cc: Linux-kernel On Mon, 11 Jun 2007, DervishD wrote: > Hi all :) > > I was wondering: is there any reason not to use ext2 on an USB > pendrive? Really my question is not only about USB pendrives, but any > device whose storage is flash based. Let's assume that the device has a > good quality flash memory with wear leveling and the like... > > Thanks a lot in advance :) It depends... Do you need to use OSes other than Linux? FAT16/32 seems to be a pretty universal filesystem at this point. You can mount ext2 on Windows, but it is a pain. Not certain what it takes to mount it on OS X. I have encountered flash drives that do not format well for anything other than FAT16, but they were old and small. Hopefully that problem no longer exists with modern hardware. I would format it then test the hell out of it before trusting it with important data. -- "ANSI C says access to the padding fields of a struct is undefined. ANSI C also says that struct assignment is a memcpy. Therefore struct assignment in ANSI C is a violation of ANSI C..." - Alan Cox ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 14:58 ` alan @ 2007-06-11 17:42 ` DervishD 2007-06-11 19:27 ` Juergen Beisert 0 siblings, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-11 17:42 UTC (permalink / raw) To: alan; +Cc: Linux-kernel Hi Alan :) * alan <alan@clueserver.org> dixit: > On Mon, 11 Jun 2007, DervishD wrote: > > I was wondering: is there any reason not to use ext2 on an USB > >pendrive? Really my question is not only about USB pendrives, but any > >device whose storage is flash based. Let's assume that the device has a > >good quality flash memory with wear leveling and the like... > > Do you need to use OSes other than Linux? FAT16/32 seems to be a pretty > universal filesystem at this point. You can mount ext2 on Windows, but it > is a pain. Not certain what it takes to mount it on OS X. I don't really need to use ext2, I just was curious. I have a couple of pendrives and I was thinking about using one of them to store a "live" copy of my home. So, I wanted ext2 for that. I can access the data from Windows if I need to, but usually I try not to touch a Windows even with a 100 mts pole ;) Portability (so to speak), is not important for me. > I have encountered flash drives that do not format well for anything > other than FAT16, but they were old and small. Hopefully that problem > no longer exists with modern hardware. I would format it then test > the hell out of it before trusting it with important data. That's the answer I was looking for ;))) I mean, will the pendrive have problems with ext2 due to some strange behaviour of the hardware? I know about cheap pendrives that you cannot format even with FAT32, only with FAT16. The pendrive I was considering to have the "live" copy of my home was a Kingston Data Traveler. Of course, I can go with a loopback: this way I'll have a "live" backup of my home, with all UNIX metadata saved but able to reside on a FAT16 filesystem. Not very comfortable, given that I won't use it outside Linux (probably). I just was curious about the issue and I was asking to know if anybody had tried this. Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 17:42 ` DervishD @ 2007-06-11 19:27 ` Juergen Beisert 2007-06-13 13:48 ` DervishD 0 siblings, 1 reply; 47+ messages in thread From: Juergen Beisert @ 2007-06-11 19:27 UTC (permalink / raw) To: DervishD, Linux-kernel On Monday 11 June 2007 19:42, DervishD wrote: > I just was curious about the issue and I was asking to know if > anybody had tried this. Think about compact flash devices. They also using some kind of flash memory and also doing wear leveling. And I think they are not only used with FAT16/32! If they run with different filesystems, then your pendrive stick will also. Only the interface is different. > I know about cheap pendrives that you cannot format even with FAT32, only > with FAT16. I'm not sure if the price was the reason that they failed with different filesystems. Some kind of wear leveling tries to guess which blocks of the filesystem are in use and which are unused (to avoid wear leveling of unused data). But it only works if you are using a filesystem that is "known" by the wear leveling process. If you are using a different one, it fails badly, because it tries to interpret a FAT that does not exists, and destroys your filesystem while the wear leveling process is running. So this cheap pendrive was too intelligent for filesystems other than FAT16.... So if you can use a different filesystem than FAT16/32 on your pendrive, it does not matter what kind of filesystem you are using. The wear leveling process has no clue about it and always "wear leveling" used *and* unused data (means: every block of the whole disk) until it ruins the flash memory. Hope it helps Juergen ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 19:27 ` Juergen Beisert @ 2007-06-13 13:48 ` DervishD 2007-06-14 19:36 ` Jan Knutar 0 siblings, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-13 13:48 UTC (permalink / raw) To: Juergen Beisert; +Cc: Linux-kernel * Juergen Beisert <juergen127@kreuzholzen.de> dixit: > On Monday 11 June 2007 19:42, DervishD wrote: > > I know about cheap pendrives that you cannot format even with FAT32, only > > with FAT16. > > I'm not sure if the price was the reason that they failed with different > filesystems. Some kind of wear leveling tries to guess which blocks of the > filesystem are in use and which are unused (to avoid wear leveling of unused > data). > But it only works if you are using a filesystem that is "known" by the wear > leveling process. If you are using a different one, it fails badly, because > it tries to interpret a FAT that does not exists, and destroys your > filesystem while the wear leveling process is running. That's exactly what I wanted to know! My Kingston Data Traveler is not exactly cheap (while not a very expensive piece of hardware, Kingston is known for the quality of its memory devices), so I hope it likes ext2. I will do a test. > So if you can use a different filesystem than FAT16/32 on your pendrive, it > does not matter what kind of filesystem you are using. The wear leveling > process has no clue about it and always "wear leveling" used *and* unused > data (means: every block of the whole disk) until it ruins the flash memory. But anyway the memory should last long. Even cheap flash memories with poor wear leveling (if any at all) usually long last. Given that I won't be writing continuously, wear shouldn't be a problem. I'm going to use this as a backup copy of my home. Of course, I can use a tarball too... Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-13 13:48 ` DervishD @ 2007-06-14 19:36 ` Jan Knutar 2007-06-14 20:07 ` DervishD 0 siblings, 1 reply; 47+ messages in thread From: Jan Knutar @ 2007-06-14 19:36 UTC (permalink / raw) To: linux-kernel; +Cc: DervishD, Juergen Beisert On Wednesday 13 June 2007 16:48, DervishD wrote: > But anyway the memory should last long. Even cheap flash memories > with poor wear leveling (if any at all) usually long last. Given that > I won't be writing continuously, wear shouldn't be a problem. I'm > going to use this as a backup copy of my home. Of course, I can use a > tarball too... I did a test on my kingston datatraveler recently, I didn't expect it to survive, but it did. I put reiserfs on it, and copied 394M of data in 200,000 files to it. Reiserfs was sloooow at writing, the device was probably doing alot of work. ext2 was about 10X faster, but there was hardly any free space left at all at the end :) Considering it surived ReiserFS, I suspect it would last ages with ext2, especially for your backup purposes. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 19:36 ` Jan Knutar @ 2007-06-14 20:07 ` DervishD 0 siblings, 0 replies; 47+ messages in thread From: DervishD @ 2007-06-14 20:07 UTC (permalink / raw) To: Jan Knutar; +Cc: linux-kernel, Juergen Beisert Hi Jan :) * Jan Knutar <jk-lkml@sci.fi> dixit: > On Wednesday 13 June 2007 16:48, DervishD wrote: > > But anyway the memory should last long. Even cheap flash memories > > with poor wear leveling (if any at all) usually long last. Given > > that I won't be writing continuously, wear shouldn't be a problem. > > I'm going to use this as a backup copy of my home. Of course, I can > > use a tarball too... > > I did a test on my kingston datatraveler recently, I didn't expect it > to survive, but it did. Aaaaagh! Never do such tests again, or at least don't tell me XD > Considering it surived ReiserFS, I suspect it would last ages with > ext2, especially for your backup purposes. I don't really know the number of writes that a flash memory allows nowadays, but probably they're 10000 even in cheap ones, and with proper wear leveling that should mean a looooot of time. Thanks for the test, really O:)) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 10:13 ext2 on flash memory DervishD 2007-06-11 11:11 ` Eduard-Gabriel Munteanu 2007-06-11 14:58 ` alan @ 2007-06-11 23:53 ` Kevin K 2007-06-12 0:35 ` Kevin Bowling 2007-06-13 13:43 ` DervishD 2007-06-12 21:09 ` Jason Lunz 2007-06-14 17:45 ` Jörn Engel 4 siblings, 2 replies; 47+ messages in thread From: Kevin K @ 2007-06-11 23:53 UTC (permalink / raw) To: DervishD; +Cc: Linux-kernel On Jun 11, 2007, at 5:13 AM, DervishD wrote: > Hi all :) > > I was wondering: is there any reason not to use ext2 on an USB > pendrive? Really my question is not only about USB pendrives, but any > device whose storage is flash based. Let's assume that the device > has a > good quality flash memory with wear leveling and the like... > > Thanks a lot in advance :) > > Raúl Núñez de Arenas Coronado > My opinion is that, unless the flash is really cheap, or it is being written to excessively, that it probably doesn't matter too much. With the growth in size of flash, just how long do you think it will continue to be used before you go to something larger? A 256MB flash of a few years ago has been supplanted in many cases by today's 2-4gb memory. One suggestion with ext2 might be to mount it with the noatime option, so it doesn't update the last access time for directories and files. Otherwise, you are doing a write even when you only plan to read a file. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 23:53 ` Kevin K @ 2007-06-12 0:35 ` Kevin Bowling 2007-06-12 1:18 ` Bernd Eckenfels 2007-06-12 7:53 ` Juergen Beisert 2007-06-13 13:43 ` DervishD 1 sibling, 2 replies; 47+ messages in thread From: Kevin Bowling @ 2007-06-12 0:35 UTC (permalink / raw) To: Kevin K; +Cc: DervishD, Linux-kernel On 6/11/07, Kevin K <k_krieser@sbcglobal.net> wrote: > > On Jun 11, 2007, at 5:13 AM, DervishD wrote: > > > Hi all :) > > > > I was wondering: is there any reason not to use ext2 on an USB > > pendrive? Really my question is not only about USB pendrives, but any > > device whose storage is flash based. Let's assume that the device > > has a > > good quality flash memory with wear leveling and the like... > > > > Thanks a lot in advance :) > > > > Raúl Núñez de Arenas Coronado > > > > > My opinion is that, unless the flash is really cheap, or it is being > written to excessively, that it probably doesn't matter too much. > With the growth in size of flash, just how long do you think it will > continue to be used before you go to something larger? > > A 256MB flash of a few years ago has been supplanted in many cases by > today's 2-4gb memory. > > One suggestion with ext2 might be to mount it with the noatime > option, so it doesn't update the last access time for directories and > files. Otherwise, you are doing a write even when you only plan to > read a file. All of the posts fail to address the question here: what is the correct file system, or does one exist yet, for wear leveling flash storage. JFFS2 and logfs are nice for MTD, but for better flash memories that are likely to be used in the future like solid state hard disks, what is the answer? ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-12 0:35 ` Kevin Bowling @ 2007-06-12 1:18 ` Bernd Eckenfels 2007-06-13 13:44 ` DervishD 2007-06-12 7:53 ` Juergen Beisert 1 sibling, 1 reply; 47+ messages in thread From: Bernd Eckenfels @ 2007-06-12 1:18 UTC (permalink / raw) To: linux-kernel In article <11f674920706111735l7dec2136t32d40ee2ab4ccca4@mail.gmail.com> you wrote: > All of the posts fail to address the question here: what is the > correct file system, or does one exist yet, for wear leveling flash > storage. JFFS2 and logfs are nice for MTD, but for better flash > memories that are likely to be used in the future like solid state > hard disks, what is the answer? FAT - you can stick it into Windows Boxes on the road. Bernd ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-12 1:18 ` Bernd Eckenfels @ 2007-06-13 13:44 ` DervishD 0 siblings, 0 replies; 47+ messages in thread From: DervishD @ 2007-06-13 13:44 UTC (permalink / raw) To: Bernd Eckenfels; +Cc: linux-kernel Hi Bernd :) * Bernd Eckenfels <ecki@lina.inka.de> dixit: > In article <11f674920706111735l7dec2136t32d40ee2ab4ccca4@mail.gmail.com> you wrote: > > All of the posts fail to address the question here: what is the > > correct file system, or does one exist yet, for wear leveling flash > > storage. JFFS2 and logfs are nice for MTD, but for better flash > > memories that are likely to be used in the future like solid state > > hard disks, what is the answer? > > FAT - you can stick it into Windows Boxes on the road. But then you lose the UNIX metadata. What if you want to keep the UID/GID and mode (and any other metadata information, for that matter)? Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-12 0:35 ` Kevin Bowling 2007-06-12 1:18 ` Bernd Eckenfels @ 2007-06-12 7:53 ` Juergen Beisert 2007-06-12 13:29 ` Eduard-Gabriel Munteanu 2007-06-12 16:46 ` Eduard-Gabriel Munteanu 1 sibling, 2 replies; 47+ messages in thread From: Juergen Beisert @ 2007-06-12 7:53 UTC (permalink / raw) To: linux-kernel; +Cc: Kevin Bowling On Tuesday 12 June 2007 02:35, Kevin Bowling wrote: > All of the posts fail to address the question here: what is the > correct file system, or does one exist yet, for wear leveling flash > storage. > JFFS2 and logfs are nice for MTD, but for better flash > memories that are likely to be used in the future like solid state > hard disks, what is the answer? As long the device itself does the wear leveling, there could no specific answer here! On MTD its the job of the filesystem to do the wear leveling because it works on the bare flash. But memory sticks, CFs and so on emulate a block device. I don't know a device where you could switch off its internal wear leveling mechanism. So it makes no sense to find the best filesystem for such a case. There is no best one. Its the same discussion about protecting essential data on CF by using more than one partition. A first partition for read only (system), a second one also for writing (data). And everyone hopes in the case of a crash the read only partition survives. But CFs internal wear leveling does not know partitions and continuous to use *all* blocks on the CF for its job. Juergen ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-12 7:53 ` Juergen Beisert @ 2007-06-12 13:29 ` Eduard-Gabriel Munteanu 2007-06-12 16:46 ` Eduard-Gabriel Munteanu 1 sibling, 0 replies; 47+ messages in thread From: Eduard-Gabriel Munteanu @ 2007-06-12 13:29 UTC (permalink / raw) To: Juergen Beisert; +Cc: linux-kernel, lkml *This message was transferred with a trial version of CommuniGate(r) Pro* Juergen Beisert wrote: > So it makes no sense to find the best filesystem for such a case. > There is no best one. It does make sense. Wear leveling isn't the only thing that matters. An important criteria is the total amount of wear that you get when using a filesystem. Some filesystems are simply not suitable: they either write too often to disk (though, as I said, this can be alleviated by COW-ing it or working on a copy and then updating the flash drive), or a single operation requires too many changes to its image/structure. Normal fs-s often change their internal structure, trading for space efficiency or speed. Better storage and accounting of data involve more complicated internal fs structures, that aren't too stable over time (that is, they change often and much). For example, an ISO9660 multisession rewritable CD/DVD trades space efficiency and flexibility for a lower wear and better wear-leveling. This is obvious, as the user triggers flushes to disk (that is, burning a new session) with a lower frequency, when his work is done, and the writes are always done sequentially (=> wear leveling). I'm not saying anything about UDF, since I don't know much about it. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-12 7:53 ` Juergen Beisert 2007-06-12 13:29 ` Eduard-Gabriel Munteanu @ 2007-06-12 16:46 ` Eduard-Gabriel Munteanu 1 sibling, 0 replies; 47+ messages in thread From: Eduard-Gabriel Munteanu @ 2007-06-12 16:46 UTC (permalink / raw) To: Juergen Beisert; +Cc: linux-kernel, lkml *This message was transferred with a trial version of CommuniGate(r) Pro* Juergen Beisert wrote: > So it makes no sense to find the best filesystem for such a case. > There is no best one. It does make sense. Wear leveling isn't the only thing that matters. An important criteria is the total amount of wear that you get when using a filesystem. Some filesystems are simply not suitable: they either write too often to disk (though, as I said, this can be alleviated by COW-ing it or working on a copy and then updating the flash drive), or a single operation requires too many changes to its image/structure. Normal fs-s often change their internal structure, trading for space efficiency or speed. Better storage and accounting of data involve more complicated internal fs structures, that aren't too stable over time (that is, they change often and much). For example, an ISO9660 multisession rewritable CD/DVD trades space efficiency and flexibility for a lower wear and better wear-leveling. This is obvious, as the user triggers flushes to disk (that is, burning a new session) with a lower frequency, when his work is done, and the writes are always done sequentially (=> wear leveling). I'm not saying anything about UDF, since I don't know much about it. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 23:53 ` Kevin K 2007-06-12 0:35 ` Kevin Bowling @ 2007-06-13 13:43 ` DervishD 1 sibling, 0 replies; 47+ messages in thread From: DervishD @ 2007-06-13 13:43 UTC (permalink / raw) To: Kevin K; +Cc: Linux-kernel Hi Kevin :) > > I was wondering: is there any reason not to use ext2 on an USB > >pendrive? Really my question is not only about USB pendrives, but any > >device whose storage is flash based. Let's assume that the device > >has a > >good quality flash memory with wear leveling and the like... > My opinion is that, unless the flash is really cheap, or it is being > written to excessively, that it probably doesn't matter too much. > With the growth in size of flash, just how long do you think it will > continue to be used before you go to something larger? The growth in size and the shrink in price ;) I think that if the stick only lasts for a year, it has been a good investment. > One suggestion with ext2 might be to mount it with the noatime > option, so it doesn't update the last access time for directories and > files. Otherwise, you are doing a write even when you only plan to > read a file. I was going to do that. It should minimize the wear when only reading. Anyway, wearing wasn't my main concern, I was more worried by stoopid firmware that assume FAT. Thanks for your answer :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 10:13 ext2 on flash memory DervishD ` (2 preceding siblings ...) 2007-06-11 23:53 ` Kevin K @ 2007-06-12 21:09 ` Jason Lunz 2007-06-13 6:49 ` Juergen Beisert 2007-06-14 17:45 ` Jörn Engel 4 siblings, 1 reply; 47+ messages in thread From: Jason Lunz @ 2007-06-12 21:09 UTC (permalink / raw) To: DervishD; +Cc: lkml In gmane.linux.kernel, you wrote: > I was wondering: is there any reason not to use ext2 on an USB > pendrive? Really my question is not only about USB pendrives, but any > device whose storage is flash based. Let's assume that the device has a > good quality flash memory with wear leveling and the like... Have a look at the UBI layer. It adds wear-levelling to MTD devices. Of course, to use it on a regular blockdev like this you'll have to do something like usb-storage (sd) -> block2mtd -> ubi -> jffs2. But it can be done afaik. Jason ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-12 21:09 ` Jason Lunz @ 2007-06-13 6:49 ` Juergen Beisert 0 siblings, 0 replies; 47+ messages in thread From: Juergen Beisert @ 2007-06-13 6:49 UTC (permalink / raw) To: linux-kernel; +Cc: Jason Lunz, DervishD On Tuesday 12 June 2007 23:09, Jason Lunz wrote: > In gmane.linux.kernel, you wrote: > > I was wondering: is there any reason not to use ext2 on an USB > > pendrive? Really my question is not only about USB pendrives, but any > > device whose storage is flash based. Let's assume that the device has a > > good quality flash memory with wear leveling and the like... > > Have a look at the UBI layer. It adds wear-levelling to MTD devices. Of > course, to use it on a regular blockdev like this you'll have to do > something like usb-storage (sd) -> block2mtd -> ubi -> jffs2. But it can > be done afaik. Then you will do some kind of wear leveling (jffs2) over wear leveling (pendrive). Does this makes sense? Juergen ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-11 10:13 ext2 on flash memory DervishD ` (3 preceding siblings ...) 2007-06-12 21:09 ` Jason Lunz @ 2007-06-14 17:45 ` Jörn Engel 2007-06-14 18:22 ` Jörn Engel 2007-06-14 20:17 ` DervishD 4 siblings, 2 replies; 47+ messages in thread From: Jörn Engel @ 2007-06-14 17:45 UTC (permalink / raw) To: Linux-kernel On Mon, 11 June 2007 12:13:19 +0200, DervishD wrote: > > I was wondering: is there any reason not to use ext2 on an USB > pendrive? Really my question is not only about USB pendrives, but any > device whose storage is flash based. Let's assume that the device has a > good quality flash memory with wear leveling and the like... Reading through the thread I noticed a lot of guesswork and a total lack of understanding about how the pendrive actually works. Everyone treats it is a black box that has "wear leveling". So let me crack the box open to some degree. Nearly two years ago I have spoken to a person that reverse engineered the behaviour of several chips used in pendrives. At the time that reverse engineering apparently covered most of the market. The details were quite lengthy but can be condensed to two words: Smartmedia format. Smartmedia is a very simple format and can easily be studied. Afaik access to the specs only requires registration. Alternatively one can study drivers/usb/storage/alauda.c, which implements the format. I will summarize the important bits below, assuming the reader has a good understanding about what flash is. All flash memory is split into zones of usually 1024(1) erase blocks. Within each zone, 1000 logical blocks are mapped to the 1024 physical blocks. That leaves 24 spare one. Normally the spare blocks are erased and contain no data. The 1000 mapped physical blocks contain the associated logical number somewhere in the OOB area. Reading from smartmedia first requires reading all logical numbers from all physical blocks. With this information a simple map, essentially a 1024-entry array is created. Once the map is set up, logical number get translated to physical ones with a simple lookup. Writing is slightly more complicated. First one of the spare blocks is selected. New data is written to the spare block. If only a partial block is written, the remainder has to be copied from the old block. After the new block is written, the old block is erased and becomes a spare. If the chip loses power during a write, several physical block may contain the same logical number. In that case the ECC information is used to verify each of the blocks. If one of the block was not written completely, the other is used. If one block has ECC errors, the other is used. If both are correct, a random one is used. That's all there is to smartmedia format. It is _very_ simple. It is also surprisingly efficient, although it does have some shortcomings. So let us look at the problems and how they interact with filesystems. 1. Write overhead If a filesystem only writes a small amount of data, typically 512 or 4096 bytes, smartmedia has to erase and write a full block. Most flashes used in embedded systems has block sizes of 128KiB or so. Most flashes used for smartmedia have 16KiB. Writing 16KiB when the filesystem only requests writing 4KiB increases the wear 4x and reduces performance 4x. 2. Wear leveling Wear leveling happens implicitly by picking a different physical block from the spares on each write. However, some blocks are never used. If a physical block is mapped to a logical block that never gets written, it is out of the rotation. Two seperate 1024-block areas have their internal wear leveling each, but nothing is spreading high wear from one area to another. So if a theoretical filesystem would only ever write to the same logical block, smartmedia can spead the wear over 25 blocks or less. Less, if any physical blocks are bad and cannot get used (2). More realistically, if Ext3 is having a very hot area - the journal - that area is not getting any wear leveling worth mentioning. Journaling filesystems on smartmedia are a bad idea. Most journals are bigger than a smartmedia area, which is usually 1000 * 16KiB. The round-robin access pattern of the journal already provides perfect wear leveling _within that area_. Smartmedia does not add anything. 3. Hidden caching Some chip designers seem to have noticed the 4x write overhead and try to outsmart the filesystem. Their chips start writing the new block, but don't copy data from the old block just yet. Instead they wait for further write requests, hoping to write adjacent data to the same block. If the power fails while the chip is waiting for further data, smarmedia format requires the unfinished block to get erased and its content to get discarded. What happens if the user just typed "sync" and yanks the pendrive as soon as the command returns is anyone's guess. How many people ever considered their pendrives to perform caching and require proper barriers? 4. FAT requirement When I claimed there was nothing more to smartmedia, I was actually lying. Smartmedia has the odd requirement that only FAT is supported as a filesystem. In fact, the specifications describe FAT in great detail. I have already seen FTLs(3) that deliberately look into the FAT and pre-erase blocks if the corresponding files have been deleted from the FAT. Let's just hope they always detect non-FAT filesystems. After all this, my recommendation for filesystems is to do several things: a) Do wear leveling! Smartmedia wear leveling is limited to within areas. Any cross-device wear leveling must be done by the filesystem. FAT does that fairly well. The Ext family doesn't. b) Write aligned 16KiB blocks Anything else will cause write overhead and kill both performance and later the complete device. Most hard disk filesystem do this anyway. Any effort to reduce head seek time and rotational delay will also help your pendrive. (1) Some smaller chips have a single zone of 256 or 512 blocks instead. Also, the first block in the first zone gets special treatment, so the first zone effectively only has 1023 blocks. (2) Most manufacturers specify that their chips has <3% bad blocks. 24 spare blocks for 1000 logical ones makes 2.4%. It is conceivable that the often-quoted <3% number is designed to work with smartmedia. (3) Flash Translation Layers - any format that implements block device behaviour on flash memory. Smartmedia is but one example, although a very popular one. Jörn -- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 17:45 ` Jörn Engel @ 2007-06-14 18:22 ` Jörn Engel 2007-06-14 20:20 ` DervishD 2007-06-14 20:17 ` DervishD 1 sibling, 1 reply; 47+ messages in thread From: Jörn Engel @ 2007-06-14 18:22 UTC (permalink / raw) To: Jörn Engel; +Cc: Linux-kernel On Thu, 14 June 2007 19:45:10 +0200, Jörn Engel wrote: > > Nearly two years ago I have spoken to a person that reverse engineered > the behaviour of several chips used in pendrives. At the time that > reverse engineering apparently covered most of the market. The details > were quite lengthy but can be condensed to two words: Smartmedia format. Maybe I should add that things have allegedly improved. Many devices today support both static and dynamic wear leveling. Dynamic wear leveling is what smartmedia does. It depends on the filesystem writing somewhere to move those blocks. Static wear leveling will also move blocks that are not written. However, the exact nature of wear leveling is not disclosed. And I see no reason to trust an undisclosed "static and dynamic wear leveling" any more than I trust smartmedia. I will even go further and claim that nothing short of a filesystem can do proper wear leveling across the complete device. The reason smartmedia introduced "areas" was to bound the time until it's map is created and the device can get accessed. If the map spanned a large 64GB device, access times would go sky-high. Any method I can imagine to offer good wear leveling will result in either a filesystem or at least a simplified one-file-system with the only file being the "block device" exported outward. So naturally my answer to the problem is called LogFS. :) Jörn -- It's not whether you win or lose, it's how you place the blame. -- unknown ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 18:22 ` Jörn Engel @ 2007-06-14 20:20 ` DervishD 2007-06-14 20:43 ` Jörn Engel 0 siblings, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-14 20:20 UTC (permalink / raw) To: Jörn Engel; +Cc: Linux-kernel Hi Jörn :) * Jörn Engel <joern@logfs.org> dixit: > Any method I can imagine to offer good wear leveling will result in > either a filesystem or at least a simplified one-file-system with the > only file being the "block device" exported outward. So naturally my > answer to the problem is called LogFS. :) I'm with you in that. So stop emailing and go working on it XD Now seriously, I will take a look at LogFS from time to time, and if you want me to, I can do tests on my Kingston DT. Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 20:20 ` DervishD @ 2007-06-14 20:43 ` Jörn Engel 2007-06-15 16:20 ` DervishD 0 siblings, 1 reply; 47+ messages in thread From: Jörn Engel @ 2007-06-14 20:43 UTC (permalink / raw) To: Jörn Engel, Linux-kernel; +Cc: DervishD On Thu, 14 June 2007 22:20:47 +0200, DervishD wrote: > > I'm with you in that. So stop emailing and go working on it XD :) > Now seriously, I will take a look at LogFS from time to time, and if > you want me to, I can do tests on my Kingston DT. That would be appreciated. I am always happy about bug reports. The more you test the faster I can fix things. Jörn -- But this is not to say that the main benefit of Linux and other GPL software is lower-cost. Control is the main benefit--cost is secondary. -- Bruce Perens ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 20:43 ` Jörn Engel @ 2007-06-15 16:20 ` DervishD 2007-06-15 16:27 ` Jörn Engel 0 siblings, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-15 16:20 UTC (permalink / raw) To: Jörn Engel; +Cc: Linux-kernel Hi Jörn :) * Jörn Engel <joern@logfs.org> dixit: > On Thu, 14 June 2007 22:20:47 +0200, DervishD wrote: > > I'm with you in that. So stop emailing and go working on it XD > > :) No. Seriously. Go! XDD > > Now seriously, I will take a look at LogFS from time to time, and if > > you want me to, I can do tests on my Kingston DT. > > That would be appreciated. I am always happy about bug reports. The > more you test the faster I can fix things. I'm going to upgrade to 2.6.20.x next week, probably, but I'm not fully sure. Can your patch be applied to 2.6.19.5 or different versions are needed for each and every latest kernel release? I've seen the code in your web and looked like it will work in any 2.6.x kernel as long as it is not very old, am I wrong?. If it can be used with 2.6.19.5, I can test ASAP even if I don't upgrade to 2.6.20.x. I cannot reboot my machine until Monday (except if a power shortage does the job for me, of course), but then I'll patch my kernel and test LogFS. I'm impatient! Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-15 16:20 ` DervishD @ 2007-06-15 16:27 ` Jörn Engel 0 siblings, 0 replies; 47+ messages in thread From: Jörn Engel @ 2007-06-15 16:27 UTC (permalink / raw) To: Jörn Engel, Linux-kernel On Fri, 15 June 2007 18:20:01 +0200, DervishD wrote: > > > > Now seriously, I will take a look at LogFS from time to time, and if > > > you want me to, I can do tests on my Kingston DT. > > > > That would be appreciated. I am always happy about bug reports. The > > more you test the faster I can fix things. > > I'm going to upgrade to 2.6.20.x next week, probably, but I'm not > fully sure. Can your patch be applied to 2.6.19.5 or different versions > are needed for each and every latest kernel release? I've seen the code > in your web and looked like it will work in any 2.6.x kernel as long as > it is not very old, am I wrong?. It should, I just haven't tested it. Same for the I_SYNC patch. > If it can be used with 2.6.19.5, I can test ASAP even if I don't > upgrade to 2.6.20.x. I cannot reboot my machine until Monday (except if > a power shortage does the job for me, of course), but then I'll patch my > kernel and test LogFS. I'm impatient! Just try the patches. If both apply without rejects, things should be fine. Otherwise I'll have to take a look. Jörn -- The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague. -- Edsger W. Dijkstra ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 17:45 ` Jörn Engel 2007-06-14 18:22 ` Jörn Engel @ 2007-06-14 20:17 ` DervishD 2007-06-14 20:38 ` Jörn Engel 1 sibling, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-14 20:17 UTC (permalink / raw) To: Jörn Engel; +Cc: Linux-kernel Hi Jörn :) * Jörn Engel <joern@logfs.org> dixit: > So let us look at the problems and how they interact with filesystems. > > 1. Write overhead > > If a filesystem only writes a small amount of data, typically 512 or > 4096 bytes, smartmedia has to erase and write a full block. Most > flashes used in embedded systems has block sizes of 128KiB or so. Most > flashes used for smartmedia have 16KiB. Writing 16KiB when the > filesystem only requests writing 4KiB increases the wear 4x and reduces > performance 4x. But this is not easily addressable by ext2... or FAT. Even if you use 16KiB blocks in ext2, sometimes you will be writing only 512 bytes. And FAT will be even worse, I imagine, when using 512-byte blocks. Won't buffer cache (under Linux) alleviate this problem? > 2. Wear leveling > > Wear leveling happens implicitly by picking a different physical block > from the spares on each write. However, some blocks are never used. If > a physical block is mapped to a logical block that never gets written, > it is out of the rotation. Two seperate 1024-block areas have their > internal wear leveling each, but nothing is spreading high wear from one > area to another. I thought that wear leveling wasn't local to a group of blocks. This means that you can destroy a flash memory by writing to the same positions... which is a very common usage pattern. > 4. FAT requirement > > When I claimed there was nothing more to smartmedia, I was actually > lying. Smartmedia has the odd requirement that only FAT is supported as > a filesystem. In fact, the specifications describe FAT in great detail. Right, but I've seen many people using their pendrives with ext2 with no problems (e.g. for SLAX). So, what do you mean by "supported"? If a filesystem can be used with the memory, do you mean that wear leveling and other characteristics of the flash memory are tailored for FAT? or do you mean you cannot use reliably (read: you will lose data) other filesystems? > a) Do wear leveling! > > Smartmedia wear leveling is limited to within areas. Any cross-device > wear leveling must be done by the filesystem. FAT does that fairly > well. The Ext family doesn't. Cross-device wear leveling? I don't understand, sorry O:) Thanks for your explanation, it has been very educational :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 20:17 ` DervishD @ 2007-06-14 20:38 ` Jörn Engel 2007-06-15 16:16 ` DervishD 0 siblings, 1 reply; 47+ messages in thread From: Jörn Engel @ 2007-06-14 20:38 UTC (permalink / raw) To: Jörn Engel, Linux-kernel; +Cc: DervishD On Thu, 14 June 2007 22:17:14 +0200, DervishD wrote: > * Jörn Engel <joern@logfs.org> dixit: > > So let us look at the problems and how they interact with filesystems. > > > > 1. Write overhead > > > > If a filesystem only writes a small amount of data, typically 512 or > > 4096 bytes, smartmedia has to erase and write a full block. Most > > flashes used in embedded systems has block sizes of 128KiB or so. Most > > flashes used for smartmedia have 16KiB. Writing 16KiB when the > > filesystem only requests writing 4KiB increases the wear 4x and reduces > > performance 4x. > > But this is not easily addressable by ext2... or FAT. Even if you > use 16KiB blocks in ext2, sometimes you will be writing only 512 bytes. > And FAT will be even worse, I imagine, when using 512-byte blocks. Won't > buffer cache (under Linux) alleviate this problem? Sometimes writing 512 bytes is not a big problem. If 99% of the writes are large, everything will be fine. But with a 32x increase from 512 byte writes, those really should be rare. > > 2. Wear leveling > > > > Wear leveling happens implicitly by picking a different physical block > > from the spares on each write. However, some blocks are never used. If > > a physical block is mapped to a logical block that never gets written, > > it is out of the rotation. Two seperate 1024-block areas have their > > internal wear leveling each, but nothing is spreading high wear from one > > area to another. > > I thought that wear leveling wasn't local to a group of blocks. This > means that you can destroy a flash memory by writing to the same > positions... which is a very common usage pattern. That is correct. Noticing this will take a while, though. Even the worst chips sold today seem to have a manufacturer guarantee of 10.000 erases per block. Across a 16MB area, that means you have to write 160GB of data to that one area before you enter the danger zone. Significantly less with static data around, but still a lot. And even when that happens, the chips doesn't suddenly explode on the 10.001st erase. Your chances of getting correctable or uncorrectable errors will increase, though. For the majority of use cases, such a behaviour is good enough. It beats floppies hands down. You will never wear them out with your digital camera or mp3 player. Using it instead of a hard disk in your notebook may be a little risky, though. > > 4. FAT requirement > > > > When I claimed there was nothing more to smartmedia, I was actually > > lying. Smartmedia has the odd requirement that only FAT is supported as > > a filesystem. In fact, the specifications describe FAT in great detail. > > Right, but I've seen many people using their pendrives with ext2 > with no problems (e.g. for SLAX). So, what do you mean by "supported"? > If a filesystem can be used with the memory, do you mean that wear > leveling and other characteristics of the flash memory are tailored for > FAT? or do you mean you cannot use reliably (read: you will lose data) > other filesystems? It doesn't matter much what I mean. The question is how the manufacturer of your device interpreted it. Most likely ext2 will work just fine within the limitations I've outlined. What changes is the failure mode. Floppies died from storing them in a dark and cool place. Some were sold brand-new and dead. Disks die from random, mostly mechanical, failures at a rate of 7% per years in a Google setup. Flash usually dies from writing to it, the more you write the faster it dies. So as long as you rarely write, pick any filesystem you like. The choice only matters when you write a lot. > > a) Do wear leveling! > > > > Smartmedia wear leveling is limited to within areas. Any cross-device > > wear leveling must be done by the filesystem. FAT does that fairly > > well. The Ext family doesn't. > > Cross-device wear leveling? I don't understand, sorry O:) Wear leveling across the whole device, not just one area. > Thanks for your explanation, it has been very educational :) No worries! Jörn -- Homo Sapiens is a goal, not a description. -- unknown ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-14 20:38 ` Jörn Engel @ 2007-06-15 16:16 ` DervishD 2007-06-15 16:36 ` Jörn Engel 0 siblings, 1 reply; 47+ messages in thread From: DervishD @ 2007-06-15 16:16 UTC (permalink / raw) To: Jörn Engel; +Cc: Linux-kernel Hi Jörn :) * Jörn Engel <joern@logfs.org> dixit: > On Thu, 14 June 2007 22:17:14 +0200, DervishD wrote: > > * Jörn Engel <joern@logfs.org> dixit: > > > 2. Wear leveling > > > > > > Wear leveling happens implicitly by picking a different physical block > > > from the spares on each write. However, some blocks are never used. If > > > a physical block is mapped to a logical block that never gets written, > > > it is out of the rotation. Two seperate 1024-block areas have their > > > internal wear leveling each, but nothing is spreading high wear from one > > > area to another. > > > > I thought that wear leveling wasn't local to a group of blocks. This > > means that you can destroy a flash memory by writing to the same > > positions... which is a very common usage pattern. > > That is correct. Noticing this will take a while, though. Even the > worst chips sold today seem to have a manufacturer guarantee of 10.000 > erases per block. Across a 16MB area, that means you have to write > 160GB of data to that one area before you enter the danger zone. > Significantly less with static data around, but still a lot. Yes, I understand. That's worse than I thought. I was right now thinking about "PortableApps", a set of free software applications that are a little bit modified to work from a pendrive in Windows. Very useful, because you can carry your OpenOffice (or AbiWord) and Firefox, for example, to any Windows you're doomed to use. This applications write repeteadly to the pendrive (specially Firefox...), and I think they may wear the drive prematurely if used extensively. > And even when that happens, the chips doesn't suddenly explode on the > 10.001st erase. Your chances of getting correctable or uncorrectable > errors will increase, though. So you have a zone which is unusable. Decent filesystems allow you to mark some blocks as "dontuse" (ext2, for example). Does FAT allow this? > For the majority of use cases, such a behaviour is good enough. It > beats floppies hands down. You will never wear them out with your > digital camera or mp3 player. Using it instead of a hard disk in your > notebook may be a little risky, though. Yes, I know. I wasn't aware of the local wear leveling. Thanks a lot for explaining, I will be much more gentle with my pendrives O:)) > > > > 4. FAT requirement > > > > > > When I claimed there was nothing more to smartmedia, I was actually > > > lying. Smartmedia has the odd requirement that only FAT is supported as > > > a filesystem. In fact, the specifications describe FAT in great detail. > > > > Right, but I've seen many people using their pendrives with ext2 > > with no problems (e.g. for SLAX). So, what do you mean by "supported"? > > If a filesystem can be used with the memory, do you mean that wear > > leveling and other characteristics of the flash memory are tailored for > > FAT? or do you mean you cannot use reliably (read: you will lose data) > > other filesystems? > > It doesn't matter much what I mean. The question is how the > manufacturer of your device interpreted it. Most likely ext2 will work > just fine within the limitations I've outlined. > > What changes is the failure mode. Floppies died from storing them in a > dark and cool place. Some were sold brand-new and dead. Disks die from > random, mostly mechanical, failures at a rate of 7% per years in a > Google setup. Flash usually dies from writing to it, the more you write > the faster it dies. > > So as long as you rarely write, pick any filesystem you like. The > choice only matters when you write a lot. I think I will be writing the pendrive, almost fully, once a week (enough for an image of my home directory). That means less than 1GiB written each week. That means 50-100 (in the worst case, making two backups a week instead of one) writings each year in each block. > > > a) Do wear leveling! > > > > > > Smartmedia wear leveling is limited to within areas. Any cross-device > > > wear leveling must be done by the filesystem. FAT does that fairly > > > well. The Ext family doesn't. > > > > Cross-device wear leveling? I don't understand, sorry O:) > > Wear leveling across the whole device, not just one area. Oh, sorry, now I understand :)) > > Thanks for your explanation, it has been very educational :) > > No worries! That's the kind of information you never want anywhere when investigating, so I'm very grateful for that, really :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net It's my PC and I'll cry if I want to... RAmen! ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: ext2 on flash memory 2007-06-15 16:16 ` DervishD @ 2007-06-15 16:36 ` Jörn Engel 0 siblings, 0 replies; 47+ messages in thread From: Jörn Engel @ 2007-06-15 16:36 UTC (permalink / raw) To: Jörn Engel, Linux-kernel On Fri, 15 June 2007 18:16:44 +0200, DervishD wrote: > > Yes, I understand. That's worse than I thought. I was right now > thinking about "PortableApps", a set of free software applications that > are a little bit modified to work from a pendrive in Windows. Very > useful, because you can carry your OpenOffice (or AbiWord) and Firefox, > for example, to any Windows you're doomed to use. This applications > write repeteadly to the pendrive (specially Firefox...), and I think > they may wear the drive prematurely if used extensively. Possibly, yes. Estimates based on unknown numbers are hard, though. > So you have a zone which is unusable. Decent filesystems allow you > to mark some blocks as "dontuse" (ext2, for example). Does FAT allow > this? I don't know. If things get bad enough that you experience uncorrectable errors, I'd just trash the stick and get a new one instead. Trouble is - with a controller chip doing the error correction, you have no means of knowing when this happens. > I think I will be writing the pendrive, almost fully, once a week > (enough for an image of my home directory). That means less than 1GiB > written each week. That means 50-100 (in the worst case, making two > backups a week instead of one) writings each year in each block. Writing everything once a week is harmless. Filling the whole device is best-case behaviour. Local hot spots are the problem. Jörn -- Anything that can go wrong, will. -- Finagle's Law ^ permalink raw reply [flat|nested] 47+ messages in thread
end of thread, other threads:[~2007-06-18 11:43 UTC | newest] Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-06-11 10:13 ext2 on flash memory DervishD 2007-06-11 11:11 ` Eduard-Gabriel Munteanu 2007-06-11 11:57 ` USB remote control missing keycodes Islam Amer 2007-06-11 15:02 ` Jiri Kosina 2007-06-13 14:08 ` Islam Amer 2007-06-13 14:58 ` Jiri Kosina 2007-06-13 15:17 ` Dmitry Torokhov 2007-06-13 15:44 ` Jiri Kosina 2007-06-13 15:58 ` Islam Amer 2007-06-13 16:17 ` Jiri Kosina 2007-06-14 12:19 ` Islam Amer 2007-06-14 12:30 ` Jiri Kosina 2007-06-15 10:15 ` Jiri Kosina 2007-06-15 10:51 ` Jiri Kosina 2007-06-17 10:57 ` Islam Amer 2007-06-18 11:42 ` Jiri Kosina 2007-06-15 17:55 ` Phillip Susi 2007-06-11 17:36 ` ext2 on flash memory DervishD 2007-06-13 13:16 ` Ph. Marek 2007-06-13 23:02 ` DervishD 2007-06-14 5:16 ` Ph. Marek 2007-06-11 14:58 ` alan 2007-06-11 17:42 ` DervishD 2007-06-11 19:27 ` Juergen Beisert 2007-06-13 13:48 ` DervishD 2007-06-14 19:36 ` Jan Knutar 2007-06-14 20:07 ` DervishD 2007-06-11 23:53 ` Kevin K 2007-06-12 0:35 ` Kevin Bowling 2007-06-12 1:18 ` Bernd Eckenfels 2007-06-13 13:44 ` DervishD 2007-06-12 7:53 ` Juergen Beisert 2007-06-12 13:29 ` Eduard-Gabriel Munteanu 2007-06-12 16:46 ` Eduard-Gabriel Munteanu 2007-06-13 13:43 ` DervishD 2007-06-12 21:09 ` Jason Lunz 2007-06-13 6:49 ` Juergen Beisert 2007-06-14 17:45 ` Jörn Engel 2007-06-14 18:22 ` Jörn Engel 2007-06-14 20:20 ` DervishD 2007-06-14 20:43 ` Jörn Engel 2007-06-15 16:20 ` DervishD 2007-06-15 16:27 ` Jörn Engel 2007-06-14 20:17 ` DervishD 2007-06-14 20:38 ` Jörn Engel 2007-06-15 16:16 ` DervishD 2007-06-15 16:36 ` Jörn Engel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).