Lenovo ThinkSmart View ROM/OS Development

I have found the following approach on one of the PMOS webpages. I was able to open Firefox in the kiosk mode with this and it is running. I was not able to compare the performance of the solution with turning off the acceleration yet but maybe you or someone else wants to fiddle around with it. First if you have applied Felix’ commands to disable hardware acceleration, undo that.

cd ~/.mozilla/firefox/*.default-release

cat <<EOF >> user.js
user_pref("browser.preferences.defaultPerformanceSettings.enabled", true);
user_pref("layers.acceleration.disabled", false);
EOF

Afterwards open the console on the device to start Firefox with
MESA_GLES_VERSION_OVERRIDE=2.0 firefox-esr -kiosk

@FelixKa thank you very much, again for the effort. Now the touchscreen is working like a charm! :slight_smile:

3 Likes

To undo the changes, In case you didn’t create your own, custom user.js in the Firefox profile, you can also simply delete it. It’s not there by default anyways.
rm ~/.mozilla/firefox/*.default-release/user.js

That’s a great hint! With hardware acceleration enabled I do get a noticeably better performance. It’s still not perfect, but we need to remember that this device only has 2GB of RAM.

2 Likes

I’ve done a short test and my initial impression was that removing the configuration using Felix’ command instead of “reverting it” with mine has a bigger positive impact on performance when using firefox with the override functionality described above.

Thanks again Felix for sharing!

Yeah now we’re talking. I tried this out with Chromium, comboed with some of the settings from the postmarket wiki. In /usr/share/applications/chromium.desktop I changed line 108 to:

Exec=env MESA_GLES_VERSION_OVERRIDE=2.0 /usr/bin/chromium-browser %U --enable-features=UseOzonePlatform --ozone-platform=wayland --start-maximized

Better performance than Firefox and comparable to Fully kiosk on Android 10. Not bad!

3 Likes

I sadly really have to go to sleep now but how did you install chromium? From the software center or via command line? Did you have enough free space to install it or did you get rid off other programs/apps first?

Will definitely try this tomorrow!

I installed from the cli with sudo apk add chromium but looks like it’s also listed in the software center. Going that route, be sure to use the straight “Chromium” and not “Chromium Web Browser” which is the flatpak version and not recommended.

I’ve reworked my partitions so I have 6.3G on root. I sent the info to Felix in hopes that he’d have some ideas on how to package that in for easier installs. This thread is already crazy long so didn’t want to muddy the waters, but happy to share with his blessing :smile:

1 Like

Another neat trick I just simply tried and it worked:
You can write lk2nd to flash from within Linux, no need to EDL it:
dd if=<path to lk2nd.img> of=/dev/disk/by-partlabel/boot

1 Like

It’s all a big happy mess :slight_smile: My intention is to eventually condense all our findings down on the postmarketOS Wiki, if they are universally relevant to the device.

And feel free to share your partitioning. I unfortunately haven’t gotten around to trying it yet. But I may look into it tonight, because I’m starting to hit the limits of my rootfs :sweat_smile:

Interested to hear what you have done with the partitions.
I’m hoping to get one of felix’s images tested on the Smart Display 8, but unfortunately the partitions on that device are smaller than the Thinksmart View so I can’t get it flashed.

Alright here we go: pmos-lenovo-cd-18781y-partitions.tar.gz. Start by extracting those files into a dir that has Felix’s 2 images with the “latest” filenames. We’ll be removing unused partitions like system & vendor so we need to relocate a few others. In EDL mode, this will read from the device and save locally:

edl r cache cache.img
edl r persist persist.img
edl r misc misc.img

Now you should be ready to flash. This uses qfil mode to write multiple partitions & the new partition table:

edl qfil rawprogram0.xml patch0.xml .

Don’t worry about missing file warnings for splash.img or recovery.img, I left those in if anyone wants to replace them as well.

I’ve been using linux for this, but in Windows it should be similar to Felix’s instructions using python3 edl commands. Let me know how it goes!

3 Likes

Maybe add a note that people should always keep safe and handy a full dump (edl rl --genxml myDump) of their device before attempting any of this :slight_smile:

3 Likes

Good call, worst case there’s the Rescue and Smart Assistant that I’ve definitely used more than once :laughing:

2 Likes

Good advice, quoted in the other thread :+1:

Thought you had a solution for that :wink:

1 Like

Oh yeah, that one.

I’ll have to wait until I have some actual free time to tackle that one. Never soldered BGA before :wink:

1 Like

Situating the stencil onto a pcb full of components might be a little tricky.

Other than that, should be :cake:.

I had some minutes to spare before work so I gave it a go. Seems that I’ve been missing something for me - it did not work. :frowning:

I had already done a dump before I did the first flash so I have already been on the safe side before trying this.

So with the latest images installed on the device I did the following.

Downloaded your archive. Unzipped it in the downloads folder, moved the files into the the edl root folder where the other images lay.

Had a look into “rawprogram0.xml” to see how the images need to be named in detail (which is “lk2nd-lenovo-cd-18781y-latest.img” and “pmos-lenovo-cd-18781y-testing-latest-rootfs.img” if anyone is wondering) - so I renamed the images to that.

Followed your instructions closely (it’s well described so that was not hard if you have done a flash of the other images before :slight_smile:).

As announced splash.img and recovery.img were throwing errors, the following went fine:

  • pmos-lenovo-cd-18781y-testing-latest-rootfs.img
  • cache.img
  • persist.img
  • misc.img
  • pmos-lenovo-cd-18781y-testing-latest-rootfs.img
  • gpt_main0.bin
  • gpt_backup0.bin

The last three lines were:
firehose_client - [qfil] patching ok
firehose - Setbootablestoragedrive succeeded.
firehose_client - [qfil] partition(0) is now bootable

Removed power, removed the USB-C-Cable, plugged power back in, no luck. Tried flashing (only the last command) a second time. Waited for 10min after the first boot, no change.

Now, when I replug the power I can only see the the lenovo logo for a split second and nothing else is displayed.

No worries, I’m sure there’s a solution but I have to go to work and check again in the evening.

Thanks for sharing the instructions, though! :slight_smile:

Thanks for that - I’m away for a few days but will try this at the weekend :slight_smile:

Hmm… I assume the first file you listed was a typo? (should be the lk2nd file). If you’re using linux or can see how the USB device registers, check if the PID on boot is the dreaded 900E “diagnostics” mode. Otherwise if it manages to boot with no display you may be able to ssh in for a closer look.

It’s seems like it mostly flashed ok, another thing to try is reflashing just the boot partition with the original edl w boot <filename> command. Maybe something else is different with the himax version?

I just tried that but get an error “Error: no DISPLAY environment variable specified”.

Any ideas?

that works - the browser is still slow though and not very usable unfortunately.