Lenovo ThinkSmart View ROM/OS Development

Hi and thanks for your work (I am new playing with the ThinkSmart).
Could you please post again your scripts ?

Thanks
Stephane

Yeah tried all that. Just one device out of the three had this issue. Now ive since moved to echo show 8 devices that hae recently been rooted and while its not stable yet its pretty promising.

I replied to the complete wrong comment.

But with PMOS the display appears to completely freeze after a while (although touch and brightness still works, I can ssh in, run commands etc without issue).

[49149.495953] msm_mdp 1a01000.display-controller: CP | opcode error | possible opcode=0x00000001
[49149.499237] msm_mdp 1a01000.display-controller: [drm:a5xx_irq [msm]] *ERROR* gpu fault ring 0 fence 153949 status 800001C1 rb 0f60/0f32 ib1 0000000001CF4000/0000 ib2 0000000001D04000/0000
[49149.499694] msm_mdp 1a01000.display-controller: [drm:recover_worker [msm]] *ERROR* 5.0.6.0: hangcheck recover!
[49159.623894] msm_mdp 1a01000.display-controller: [drm:a5xx_preempt_timer [msm]] *ERROR* 5.0.6.0: preemption timed out
[49159.624490] msm_mdp 1a01000.display-controller: [drm:recover_worker [msm]] *ERROR* 5.0.6.0: hangcheck recover!

And then manually trying to reset the driver via debugfs:

[77564.280845] revision: 506 (5.0.6.0)
[77564.280863] rb 0: fence:    1390921/1390921
[77564.280868] rptr:     3890
[77564.280870] rb wptr:  3890
[77564.280872] rb 1: fence:    -256/-256
[77564.280875] rptr:     0
[77564.280877] rb wptr:  0
[77564.280879] rb 2: fence:    1412744/1412747
[77564.280882] rptr:     1934
[77564.280884] rb wptr:  2057
[77564.280886] rb 3: fence:    -256/-256
[77564.280889] rptr:     0
[77564.280891] rb wptr:  0
[77564.280894] CP_SCRATCH_REG0: 0
[77564.280897] CP_SCRATCH_REG1: 0
[77564.280900] CP_SCRATCH_REG2: 1390921
[77564.280903] CP_SCRATCH_REG3: 0
[77564.280906] CP_SCRATCH_REG4: 0
[77564.280908] CP_SCRATCH_REG5: 0
[77564.280911] CP_SCRATCH_REG6: 0
[77564.280913] CP_SCRATCH_REG7: 0
[77564.284890] *** gpu fault: iova=0000000001070000 flags=0 (0,0,0,0)
[77564.284907] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000001070000, fsynr=0x3, cb=0
[77564.284919] *** gpu fault: iova=000000000106b000 flags=0 (0,0,0,0)
[77564.284924] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x000000000106b000, fsynr=0x3, cb=0
[77564.284934] *** gpu fault: iova=0000000001070020 flags=0 (0,0,0,0)
[77564.284939] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000001070020, fsynr=0x3, cb=0
[77564.284949] *** gpu fault: iova=000000000106b020 flags=0 (0,0,0,0)
[77564.284953] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x000000000106b020, fsynr=0x3, cb=0
[77564.284964] *** gpu fault: iova=0000000001070040 flags=0 (0,0,0,0)
[77564.284968] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000001070040, fsynr=0x3, cb=0
[77564.284979] *** gpu fault: iova=000000000106b040 flags=0 (0,0,0,0)
[77564.284983] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x000000000106b040, fsynr=0x3, cb=0
[77564.284993] *** gpu fault: iova=0000000001070060 flags=0 (0,0,0,0)
[77564.284998] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000001070060, fsynr=0x3, cb=0
[77564.285008] *** gpu fault: iova=000000000106b060 flags=0 (0,0,0,0)
[77564.285012] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x000000000106b060, fsynr=0x3, cb=0
[77564.285023] *** gpu fault: iova=0000000001070080 flags=0 (0,0,0,0)
[77564.285028] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000001070080, fsynr=0x3, cb=0
[77564.285038] *** gpu fault: iova=000000000106b080 flags=0 (0,0,0,0)
[77564.285043] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x000000000106b080, fsynr=0x3, cb=0
[77565.284720] [drm:adreno_idle [msm]] *ERROR* 5.0.6.0: timeout waiting to drain ringbuffer 0 rptr/wptr = 0/C
[77565.284987] msm_mdp 1a01000.display-controller: [drm:adreno_recover [msm]] *ERROR* gpu hw init failed: -22
[77569.300173] adreno_fault_handler: 838070 callbacks suppressed
[77569.300190] *** gpu fault: iova=0000000010addf80 flags=0 (0,0,0,0)
[77569.300198] qcom_iommu_fault: 838070 callbacks suppressed
[77569.300205] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010addf80, fsynr=0x2, cb=0
[77569.300224] *** gpu fault: iova=0000000010aeb4c0 flags=0 (0,0,0,0)
[77569.300229] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010aeb4c0, fsynr=0x2, cb=0
[77569.300242] *** gpu fault: iova=0000000010addfa0 flags=0 (0,0,0,0)
[77569.300247] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010addfa0, fsynr=0x2, cb=0
[77569.300260] *** gpu fault: iova=0000000010aeb4e0 flags=0 (0,0,0,0)
[77569.300266] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010aeb4e0, fsynr=0x2, cb=0
[77569.300279] *** gpu fault: iova=0000000010addfc0 flags=0 (0,0,0,0)
[77569.300285] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010addfc0, fsynr=0x2, cb=0
[77569.300300] *** gpu fault: iova=0000000010aeb500 flags=0 (0,0,0,0)
[77569.300305] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010aeb500, fsynr=0x2, cb=0
[77569.300318] *** gpu fault: iova=0000000010addfe0 flags=0 (0,0,0,0)
[77569.300323] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010addfe0, fsynr=0x2, cb=0
[77569.300334] *** gpu fault: iova=0000000010aeb520 flags=0 (0,0,0,0)
[77569.300339] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010aeb520, fsynr=0x2, cb=0
[77569.300350] *** gpu fault: iova=0000000010ade000 flags=0 (0,0,0,0)
[77569.300355] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010ade000, fsynr=0x2, cb=0
[77569.300366] *** gpu fault: iova=0000000010aeb540 flags=0 (0,0,0,0)
[77569.300371] qcom-iommu-ctx 1c48000.iommu-ctx: Unhandled context fault: fsr=0x40000202, iova=0x0000000010aeb540, fsynr=0x2, cb=0
[77574.304080] adreno_fault_handler: 884547 callbacks suppressed
[77574.304094] *** gpu fault: iova=0000000010c338e0 flags=0 (0,0,0,0)
[77574.304102] qcom_iommu_fault: 884547 callbacks suppressed

done, sorry for the delay and it going down.

1 Like

Hi Guys I have a quesiton perhaps has been solved here perhaps not and you can point me in the right direction I have a View in LineageOS and followed the GitHub - pgale/lineage_15.1_Installation_TSV: Lenovo ThinkSmart View Lineage 15.1 installation guide but unfortunatly my WIFI and Bluethoot are unavaible on the device. No MAC address ether. Any ideas?

@FelixKa looking to install a key for my ssh login I found this in “authorized_key” :
ssh-ed25519 AAAAC3Nza… Felix Kaechele [email protected] 2019-02-01
ssh-rsa AAAAB3Nza…== Felix Kaechele

Are those your private keys ?
I suppose only for your ThinkSmart View but you could remove them :wink:

Regards
Stephane

Haha. Oops, yes, looks like I may have forgotten to turn that off in pmbootstrap.

But those are my public keys, so I’m not too worried (One of them is probably one that’s public via GitHub anyway. Just append .keys to any GitHub username and you can see their public keys, i.e. https://github.com/kaechele.keys)

I also won’t have the time to log into anyone’s TSV at this time even if they connected their TSV directly to the internet and gave me their IP, sorry :stuck_out_tongue:

I should have some more time over Christmas and am looking to release an updated image. I’ll make sure that comes without my SSH keys embedded :sweat_smile:

3 Likes

Hey everyone, this is amazing and I am so grateful for all the work folks here have put in over the past couple years to make these little tablets work :slight_smile:

I was trying to go through the docs on the pmOS wiki because I wanted to go through the full pmOS experience.

Before I flash this thing - I wanted to be sure that I’m not about to make a brick :laughing:

Here’s what I did on a fresh install of Ubuntu 24.04 (in a VM)

sudo apt install build-essential gcc-arm-none-eabi \
  device-tree-compiler libdft-dev tar python3-pyasn1-modules \
  python3-pycryptodome qemu-guest-agent adb fastboot \
  python3-dev python3-pip liblzma-dev git kpartx

# Build EDL
git clone https://github.com/bkerler/edl.git
cd edl
git submodule update --init --recursive
sudo ./autoinstall.sh
sudo update-initramfs -k all -u
sudo reboot now

# Build lk2nd
git clone https://github.com/msm8916-mainline/lk2nd.git
cd lk2nd
sudo make TOOLCHAIN_PREFIX=arm-none-eabi- SIGN_BOOTING=1 LK2ND_QCDTBS="" lk2nd-msm8953

# Install pmbootstrap
git clone https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
cd pmbootstrap
mkdir -p ~/.local/bin
ln -s "$PWD/pmbootstrap.py" ~/.local/bin/pmbootstrap
sudo reboot now
pmbootstrap --version # verify the command works

# pmbootstrap execution
pmbootstrap init # selected edge for channel, qcom-msm8953 as device, phosh for UI, systemd instead of openrc
pmbootstrap install
pmbootstrap shutdown

Does this all sound like it makes sense so far?

I think from here, I’m supposed to use edl to first flash lk2nd to the TSV and then follow that up with flashing the pmOS image?

I have not built PMOS images, but you are correct, you would first flash the boot partition with the lk2nd image, then the userdata one with the larger PMOS image.

There are some instructions in the pinned wiki portion at the top of this page, you would just need to expand the PMOS Installation > Windows Instructions > Flash PMOS collapsed section and use those edl commands in the order they are given.

You also will probably have to create a udev rule and reload that with sudo udevadm control --reload-rules (can’t remember if you need sudo…) edl will tell you the URL of their suggested rule content and where to put it.

You will probably need a USB A → USB C cable and maybe a USB hub. On my machines I need to use a USB C hub connected to the computer, then connect that USB A → USB C to the Thinksmart View.

1 Like