linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 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: 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: 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: 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 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 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  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 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 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-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-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-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: 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: 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: 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: 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-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-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 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: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: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: 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: 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-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-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

* 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: 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

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).