gslX68X
gslX68X copied to clipboard
Initialization error, status: 0x0
I get this error when inserting the module: silead_ts i2c-MSSL1680:00: Initialization error, status: 0x0
What am I doing wrong? I copied /lib/firmware/silead_ts.fw (from gslx680) to /lib/firmware/mssl1680.fw. Could there be a problem with the firmware?
Umm... I think you're trying to use gslx680_ts_acpi.ko firmware (silead_ts.fw) with silead_ts.ko. This does not work. Please use firmware in legacy format or use gslx680_ts_acpi. Where did you get silead_ts.fw?
If you can't find the corresponding legacy firmware, use fwtool from https://github.com/onitake/gsl-firmware/tree/master/tools to convert it back to legacy format. But please note that I never tested that.
I was trying to use gslx680_ts_acpi.ko firmware converted from windows SileadTouch.fw. Now I tried the windows SileadTouch.fw but it just hangs for almost two minutes and then gives the same error.
And after using tools/unscramble on the windows firmware and trying to load that, I get a different error:
silead_ts i2c-MSSL1680:00 Firmware request error -22
Huh. Ok? That's weird. fwtool has an option to convert silead_ts.fw back into legacy format (not preserving memory page order however). Try that, please.
I tried converting it back, and got the same error (-22).
Are you sure it's loading the correct file? Perhaps you forgot to rename it or accidentally copied it to the wrong folder?
Maybe...
So what I'm supposed to do is: get SileadTouch.fw from Windows, run unscramble SileadTouch.fw mssl1680.fw, move mssl1680.fw to /lib/firmware and insmod silead.ko?
Yes, that's pretty much it. I don't quite understand how loading the firmware could fail otherwise. Can you upload that SileadTouch.fw somewhere so I can take a look?
https://transfer.sh/14tamV/sileadtouch.fw
Maybe it got corrupted when I copied it from Windows or something like that?
Possibly.
But then unscramble should notice when it parses the file.
Oh, and here's a Win10 driver download from the manufacturer: http://www.lark.com.pl/dopobrania/update/Ultimate/7iWin/SileadTouch.zip
Interestingly enough loading the surftab7new firmware from gsl-firmware worked, and I'm getting touch events.
Um.... your sileadtouch.fw is completely empty. Just 00s. And that will make the resulting mssl1680.fw completely empty as well...
Thank you. I'm going to try to extract the firmware from SileadTouch.sys then.
The Silead controllers are all very similar, so firmware should work with many different devices, if they use the same chip. But it will not work very well, because the firmware contains device-specific calibration data.
Wat. I just hexdumped SileadTouch.fw on the windows backup (dded mmcblk0 to a file, and now I mounted it with the correct offset), and it's also only 00s. hexdumped SileadTouch.sys and... it's also 00s. But when I hexdumped a different driver, I got some contents, so it doesn't seem like anything is wrong with the backup...
Something weird is going on here.
wget http://www.lark.com.pl/dopobrania/update/Ultimate/7iWin/SileadTouch.zip
unzip SileadTouch.zip
7z x SileadTouch.exe
unscramble SileadTouch.fw mssl1680.fw
That should get you results. And if you'd like to also try gslx680_ts_acpi.ko, use fwtool on the SileadTouch.fw like you did before. Since the tablet is very similar to the TrekStor, try the parameters from https://github.com/onitake/gsl-firmware/tree/master/firmware/trekstor/surftab7old or https://github.com/onitake/gsl-firmware/tree/master/firmware/trekstor/surftab7new
I've tried gslx680_ts_acpi.ko before, but it didn't generate any events. Perhaps this is why... I'll try it out.
Also, I tried surftab7new and it gave position and slot events, but no clicking. I'm currently waiting for the driver to load surftab7old.
Is it normal for it to take several minutes to load the firmware?
No, it should load more or less instantly. The firmware is very small, and the I2C interface runs at 400kbit/s, so it should take a few seconds at most.
surftab7old also didn't give me any touch events except position. I extracted the driver from the .exe and now it's still moving the mouse, but clicking only works for the first few seconds, and the calibration is completely wrong.
Oh, and it still takes a very long time to load the module.
Correction: only the first touch is detected (until release). After I release, tapping the screen only moves the mouse but doesn't generate touch events.
Yeah, this sounds like a problem I've seen many times before. It's happens because finger tracking doesn't work reliably. If you pass the correct parameters to the driver, it should respond much better.
Unfortunately, there is currently no method to do this easily for silead_ts.ko, unless you can modify the DSDT or DeviceTree.
gslx680_ts_acpi.ko uses the parameters that are set in the firmware (that's why it requires converting it with fwtool first).
Make sure you enable finger tracking (with -f track) and set the width and height to values a little bit smaller than the bottom right coordinate of the touch screen. You can find these out if run xinput test once the driver is loaded, then silde your finger across the edges.
Also, which kernel version are you using?
I'll try to do some more troubleshooting tomorrow.
Now I tried gslx680_ts_acpi with the surftab7new firmware and everything works perfectly!
I'm using Linux 4.4.5.
Is there a way to enable the Windows button on the bottom of the screen? It's detected as part of the touchscreen.
Oh, and thanks a lot for helping me out!
You may still have to use xinput_calibrator to map the touch screen to the display, but I'm glad it's working for you now. :)
The Android driver I based gslx680_ts_acpi on did have code to detect these button taps, but I removed it because I was more focused on making the touch screen work at all. I'll see if I can bring it back and generate suitable KEY events.
Which fwtool parameters did you use exactly? I'm going to add your firmware to https://github.com/onitake/gsl-firmware , so others can use it too.
I didn't use any. The surftab7new firmware worked perfectly out of the box, including calibration.
Woops, android app misclick
Ah! So, I'll just note in the README that the Lark Ultimate 7i WIN is compatible.
Yep!
What about https://github.com/onitake/gslx680-acpi/issues/11 ? It says it doesn't work on 4.2 and later but it worked on 4.4.5 for me. I'm using Arch, not Ubuntu, but still...