Lenovo ThinkSmart View ROM/OS Development

The first post on this thread is a wiki post, so I believe anyone registered on the forum should be able to edit it. I have no strong feelings about what it should look like, but I recognize it definitely needs a cleanup. It contains a fair bit of information that is outdated or not really relevant.

I’d be happy for someone to take a stab at it to make it more friendly to people looking at this for the first time.

I’ve also started editing this a while ago: Lenovo ThinkSmart View (lenovo-cd-18781y) - postmarketOS Wiki

In other news:

  • The Himax touchscreen driver patch was accepted upstream and I assume it will land in the 6.11 kernel. Now on to the Amp codec driver and WiFi driver :slight_smile:
  • Naturally, due to the way I obsess about things, I took another look at the camera situation. I’m starting to believe there may be a way via this driver: mipi-ccs.yaml « i2c « media « bindings « devicetree « Documentation - kernel/git/stable/linux.git - Linux kernel stable tree
    There may be a few quirks needed for the particular sensor, but I haven’t played with it yet.
  • I also tried another eMMC swap and now have another board that doesn’t boot anymore. But it looks like it may be fixable in this instance, just ran out of time once more. No lifted pads. It seems the secret there seems to be to get the board pre-heated to just about 140°C, flux, and then hit it with the hot air gun at 280°C (flow of 5) for about 15 seconds and the eMMC should start swimming.

If only I’d be doing this full-time or the day had 48h :sweat_smile:

10 Likes

I recently bought an unusual “Lenovo Smart Display (SD-X701B)” which runs a full version of Android 8.1 (not Android Things, not Android Go, just Android) with a 64-bit kernel and OS.

It has some custom personal assistant software from a Chinese company, maybe some forgotten sample from Lenovo (who knows lol).

If it’s useful for discussion, I can upload the full firmware I got from EDL, which is compatible with the hardware of either the Lenovo Smart Display or the ThinkSmart View.

2 Likes

If it comes with a 64-bit Kernel and userspace it may be interesting to get a dump so we have 64-bit versions of the binary blobs.

It’s now on there: https://shorturl.at/LZsNy

Let me know if there are any findings and progress from here :smiley:

Some previews that might be useful:

3 Likes

Btw, I tried to extract the defconfig from my device and build the kernel using the source code from CD-18781Y (which is version 3.18, whereas Lenovo only provides version 3.10 for the Smart Display). However, I have never been able to get it to boot (it just goes into Fastboot).

Can anyone help with this issue?

for anyone having wlan-autoconnect-issues, there is a workaround ( WiFi - postmarketOS Wiki ) : editing /etc/NetworkManager/system-connections/<CONNECTION>.nmconnection and changing permissions=user:user:; to permissions=

2 Likes

Can you provide some advice with teardown? I want to replace eMMC (I think it’s dying)

Put the device screen down on a hot plate at 80°C for 5 minutes and then you can remove the speaker grille and the screen. They are glued in.
The speaker grille will have to come off if you want to access the mainboard. It doesn’t need to come off if you just want to replace the screen.
See here: https://www.youtube.com/watch?v=wHqHFaXXTks

2 Likes

I tried replacing the eMMC in my free time. I used a 64GB eMMC from FORESEE, and everything seemed to go well. However, when I used QFIL to flash back my backup, Android got stuck in a bootloop. I checked the UART and found that the msm,board-id had changed for some reason, and the kernel couldn’t find a valid DTB. I couldn’t use Fastboot or even QFIL’s Partition Manager to refresh any partition, it always stays the same after writing.

are you tried using a larger eMMC? I searched and found some cases indicating that certain Qualcomm platforms can’t use Android after replacing the eMMC with a larger one, but Linux will works fine. I’m not sure if I’m stuck in this situation.

As the more technical folks discuss hardware modifications, is the assumption that pmos isnt going to be an option without doing some heat gunning and soldering? Just trying to decide what the best direction to take is for effectively a clock/photo slideshow/wyoming satellite for voice control is. As of now i am running lineageos and am having a bit of instability with wallpanel+rtpmic/ipcam+streamassist in HASS. Wifi is also an issue that keeps coming back. Random disconnects without the ability to reconnect. Gotta get the spouse approval rating up a bit more here. Lol

Hey guys.

I have been following along and tried to do this myself. I got it working up until I did something wrong I would strongly assume.

So I got pmos running no problem. Then I tried to install docker to run Home Assistant within. (I realised in hindsight I should just have ran HA on my raspberry pi, and used the thinksmart view as the dashboard) Restarted the device and now it wont mount the root partition. I have tried countless things. Aswell as trying to flash the firmware again.

This is where it gets weird. I cant flash no matter what I try and Lenovo Rescue tool wont flash the firmware either.

Its always the same error: fails to write on sector xxxxx.

I have tried everything I could think of with no luck and couldn’t find any reference any other places. I think the device might be bricked due to my own idiocy

that’s something i would expect from a defect emmc. unless someone figures out a way to boot from usb, the only way would be to solder on a new one

I was thinking that aswell. It baffled me that I couldn’t write a single thing to the device. I think I might get a new one and try again

Thank you so much for this awesome project! Just picked up my first one and flashing it soon :slight_smile:

ANyone else having issues with bluetooth crashing errors popping up periodically? Everything works just great including gapps, but I"m getting error messages saying something like “Bluetooth not responding” which I can clack past until the next error.

I’ve disabled the bluetooth with no change in behavior.

Hi! Could you please reupload this? The link says file is removed. It would be nice if I could try to flash my X701B from Android Things to this :eyes:

Unfortunately I have some issues with restricted Things’ API.

@FelixKa has there been any progress on the PMOS dev?

Yes, mostly on the kernel and bootloader side though.

  • Himax Touchscreen driver is now merged into the kernel and is part of kernel 6.11 (currently in rc)
  • Focaltech Touchscreen driver is now set to accept up to 10 touchpoints
  • I’ve submitted the wireless patches but haven’t received any reviews from the maintainers yet. As I understand they only sporadically look at ath10k patches at this point.
  • lk2nd bootloader changes are now merged into the upstream lk2nd project, furthermore I extended the lk2nd build process to be able to output correctly signed binaries without needing to use magiskboot sign on them. This is one step needed to get a seamless experience when building an image for the device using pmbootstrap.

I have started documenting all the patches that went into supporting the device on the pmOS wiki page. My hope is that this will help people that are also looking to port devices to pmOS understand what areas to look at and what it entails.

So the only pieces left are:

  • Sound driver cleanup and sending that upstream
  • DTS cleanup and sending that to the msm8953-linux repo
  • Submitting pmOS device support packages

After that the device should have all the things required to be supported by pmOS and allow for easy building straight from the pmOS repo.

A bit further into the future, on my to do list I still have:

  • Extending pmbootstrap to support edl as a flashing method
  • Packaging wyoming-satellite and wyoming-openwakeword for Alpine Linux
  • Get the camera working (this requires a bit more involved reverse engineering though)
14 Likes

For packaging wyoming-satellite and openwakeword, are you thinking of wrapping a venv and installing as a start up service? Or what path would you propose for packaging? I could try my hand at those.

I tried mapping it onto how packages in Alpine are packaged in general. This is my work in progress branch: Files · wyoming · Felix Kaechele / aports · GitLab

You’ll notice that, while everything builds for now, I haven’t gotten to the part where I install the binaries/scripts to the proper locations. So I haven’t gotten to the part you were asking about yet.

In general I would avoid trying to package venvs, as most distributions wouldn’t allow it. So the packages are designed to move all required dependencies into he system Python path.

2 Likes