[Nexus 7 (2013) General] afremont:
sfhub,

First off hello to you and hello to everyone else, stupid noob here. I'd like to chat with you about this. I'm not trying to question your abilities, but I'd just like to get some clarification on this subject. I reflashed my wife's N7 back to JSS15J and the new touch problems she picked up with the OTA update to JSS15Q seem to be fixed. I've read what I can find on the subject, and you appear to know the most about this stuff, or at least have looked into it the most. I also flashed in the updates for the GPS and all is well on that too, finally.

I've looked at the dmesg output of her N7 and I see where the driver "sees" the A024 firmware apparently stored in some kind of flash (serial EEPROM?). It also makes mention of the A038 that it obviously "sees" in the kernel. I haven't witnessed it first hand, but I've seen some stuff on the Internet showing what happens when it detects "new" firmware, with "new" apparently meaning a higher version number.

I also see the "Old FW", but I don't think that has anything to do with it, right? That seems to mean that it will use interrupts vs. ??? I can see why the driver wouldn't want to flash the firmware every time the kernel boots and I could also see where it might make the (somewhat naive) assumption that higher is better on the version numbers and might automatically flash it in when it sees it. But, don't you think that it's possible that it is still executing the supplied firmware. I know all hardware is different, but it seems "sensible" that the closed driver might go ahead and run with the supplied firmware rather than downloading it from the flash. dmesg does indicate that it at least sees the older version, but the message isn't clear as to what it exactly means to the driver. Without a datasheet and/or the low level drivers it's all speculation, but I really feel that it made a significant difference with her tablet. I realize that there are other things that changed when it reset after unlocking the bootloader that might have a bearing on it, only time will tell. For all I know, her digitizer may just re-learn how to be a pain after using it a while longer, time will tell I suppose.

Again, I'm not trying to be argumentative for the sake of making waves, I'd really like to discuss this as I'm interested in finding out as much as I can about this problem. I'm kinda worried since I bought two of them and OS updates seem to be destroying the usability. I may be wrong, but it appears that this ELAN digitizer is the same (or very close to it) as the one on the first gen N7s, and apparently a lot of other devices. If that's the case, I'm sort of worried that this is rooted in a hardware problem, either integration or manufacturing. If so, I'm concerned that it may never be right. I'd be happy with a slider or check boxes to pick my own settings.

I like technical things and really enjoy working on complicated problems and this has really piqued my interest. I even downloaded the stuff to build everything and I'm trying to build my own kernel that matches the release version (I know about the closed binaries, and I assume that they are all available as far as I can tell). I'd then like to see if I can "persuade" the driver to flash the older firmware. There should be no technical reason that it can't be rolled back, unless the closed driver absolutely refuses to cooperate.

What do you think the possibility is of taking the older A038 and re-numbering it as A043? Do you think there are any checks other than some kind of checksum on the firmware? It looks like they always skip a version number between releases.

What can you tell me about the closed part of the drivers? Do you know of anyone reverse engineering this stuff or where there is any technical documentation for the digitizer? I saw some stuff on the internet about a guy working on the ktf 2000 series hardware.

OOPS, I can't post a link to it yet.

Sorry to chew your ear off. :) Thanks.

EDIT:

My wife's detailed report:

<4>[ 0.971252] [ektf3k]:[ELAN] Start HW reset!

<4>[ 1.073699] [usb_otg] switch to peripheral mode by default (boot)

<4>[ 1.223693] [ektf3k]:[elan]detect intr=>Old FW

<4>[ 1.223876] [ektf3k]:The boot code is old!

<4>[ 1.253997] [ektf3k]:[elan] __hello_packet_handler: hello packet 55:55:55:55

<4>[ 1.254180] [ektf3k]:[elan] hello packet's rc = 0

<6>[ 1.463806] notifying plugin

<6>[ 1.465759] msm_otg msm_otg: USB in low power mode

<4>[ 1.465789] [ektf3k]:[elan] __fw_packet_handler: firmware version: 0xa042

<4>[ 1.467926] [ektf3k]:[elan] __fw_packet_handler: X resolution: 0x007e

<4>[ 1.469970] [ektf3k]:[elan] __fw_packet_handler: Y resolution: 0x00d2

<4>[ 1.472076] [ektf3k]:[elan] __fw_packet_handler: firmware id: 0x3029

<4>[ 1.474121] [ektf3k]:[elan] __fw_packet_handler: boot code id: 0x6047

<4>[ 1.474334] [ektf3k]:[Elan] Max X=2239, Max Y=1343

<6>[ 1.474639] input: elan-touchscreen as /devices/virtual/input/input0

<4>[ 1.475067] [ektf3k]:The firmware was version 0xA038 and id:0x3029

<4>[ 1.475219] [ektf3k]: /proc/ektf_dbg created

<4>[ 1.475738] [ektf3k]:[elan] Start touchscreen elan-touchscreen in interrupt mode

<4>[ 1.475982] [ektf3k]:[ELAN]misc_register finished!!

<6>[ 1.476165] elan-ktf3k 3-0010: Update power source to 0

EDIT: I give up, I tried twice to respond to another post, but it wants to stick my reply inside this message for some reason.