Lenovo ThinkSmart View (lenovo-cd-18781y)

From postmarketOS Wiki
Lenovo ThinkSmart View
Lenovo ThinkSmart View (CD-18781Y) running postmarketOS
Lenovo ThinkSmart View (CD-18781Y) running postmarketOS
Manufacturer Lenovo
Name ThinkSmart View
Codename lenovo-cd-18781y
Model CD-18781Y
Released 2020
Original software Android
Original version 8.1
postmarketOS kernel 6.9.6
Hardware
Chipset Qualcomm APQ8053
CPU 1.8 GHz Cortex-A53
GPU Adreno 506
Display 800x1280 LCD
Storage 8GB
Memory 2GB
Architecture AArch64
Type desktop
Unixbench Whet/Dhry score 3755.6
Features
USB Networking
Works
Flashing
Broken
Touchscreen
Partial
Display
Works
WiFi
Works
Mainline
Works
3D Acceleration
Works
Audio
Partial
Bluetooth
Partial
Camera
Broken
Internal storage
Works
USB OTG
Partial
Sensors
Accelerometer
Broken
Magnetometer
Broken
Ambient Light
Broken
Proximity
Broken


The Lenovo ThinkSmart View is a desktop device that was originally intended to be used with video meeting software such as Microsoft Teams or Zoom. Its hardware is almost identical to the Lenovo Smart Display (SD-8501F/SD-X701B/SD-X501F), however the Smart Display series uses a different software and bootloader setup. The product is based on Qualcomm's Home Hub / Smart Display 200 platform.

Contributors

Users owning this device


Bootloader

The stock bootloader is locked and secure boot is enabled. The bootloader can be unlocked via fastboot oem unlock-go but the device does not boot at all when the bootloader is unlocked. Re-locking the bootloader will restore the ability to boot.

The bootloader requires AVB1 signed images to successfully boot.

The device can boot using lk2nd. This works around the secure boot limitations. Additional steps required to make lk2nd work on this device are described in the Installation section.

How to enter flash mode

Due to the device not booting with an unlocked bootloader the device must be flashed using EDL mode. Hold down Volume Up + Volume Down while powering on the device to enter EDL mode.

The loader collection that comes with B. Kerler's EDL contains a working firehose loader for this device.

Installation

Use pmbootstrap to build your own installation image. The device requires lk2nd for panel and touchscreen selection.

As mentioned in the Bootloader section, the bootloader on the device cannot be used in the unlocked state at this time. The device does not boot when the bootloader is unlocked.

While secure boot is enabled, the device will accept an AVB1 signed image for booting. Due to this any kernel or lk2nd image flashed to the boot partition will need to be signed by a tool such as magiskboot (using magiskboot sign boot.img, for example) before flashing.

lk2nd can build properly signed images using the following build command:

$ make TOOLCHAIN_PREFIX=arm-none-eabi- SIGN_BOOTIMG=1 lk2nd-msm8953

The images can then be flashed using EDL:

$ pmbootstrap init
$ pmbootstrap install
$ edl w boot <path to signed lk2nd.img>
$ edl w userdata <path to rootfs img with kernel in ext2 /boot subpartition>

Hardware

Display

Two panel / touchscreen variants are known:

  1. BOE TV080WXM-LL4 (Touch IC: FocalTech FT8201)
  2. Innolux P080DDD-AB2 (Touch IC: Himax HX83100A)

The Himax IC has a patch that is pending upstream to enable support: https://lore.kernel.org/all/20240620145019.156187-1-felix@kaechele.ca/

Audio

Speaker

The device has one speaker connected to a Texas Instruments TAS5782M amplifier/DSP. The driver for this codec is currently a work in progress.

Microphones

The Device has two microphones, DMIC1 (MIC4 on the PCB) and DMIC2 (MIC3 on PCB). In the portrait orientation DMIC2 is above the Mic Mute slider and DMIC1 is below the Volume Down key. The ALSA UCM configuration for the device configures them as Stereo microphones with DMIC1 as the Left and DMIC2 as the Right channel.

Bluetooth Audio

Bluetooth Audio is connected to the Secondary PCM channel of the internal codec. There currently is no support for it in the mainline drivers. A patch was submitted but then abandoned: [alsa-devel] [PATCH 0/8] ASoC: qdsp6: db820c: Add support for external and bluetooth audio

Connectivity

USB

USB-C Pinout
USB-C Function
A4/B4 USB VCC
A5/B5 UART RX
A6/B6 USB D+
A7/B7 USB D-
A8/B8 UART TX
A9/B9 USB VCC

A USB-C connector can be found under the rubber foot at the top right corner of the device, when the device is in portrait mode. This USB-C connector supports USB2.0 and has pinouts for UART. It cannot provide power to connected peripherals.

USB OTG

USB OTG works but requires the use of an external power source, specifically +5V on the USB port's VBUS. Due to this:

  • externally powered USB devices (such as hard drives with an external power supply) often do not work because they still expect 5V from the host to enable their USB controllers
  • externally powered USB hubs often work
  • USB-C OTG adapters that allow for external power sources have also been tested and work
Icon WARNING: Some powered USB hubs and cables may output voltage on VCONN, which is either the CC1 or CC2 (A5 or B5) pin, depending on the orientation of the cable. This pin is internally connected to the SoC's UART TX pin, so applying voltage to it may damage the SoC. It did not cause any damage when this was (rather unintendedly) tested but there is a chance it may.

By default the device is configured in device mode. Since the USB-C socket is not wired up to provide USB ID you will have to manually switch the USB mode to host:

$ echo "host" | sudo tee /sys/kernel/debug/usb/7000000.usb/mode

Note that the device will revert from host mode to device mode when the external power source is removed.

UART

UART can be found on the USB-C connector on pins SBU1/SBU2 (A8/B8) for RX and CC1/CC2 (A5/B5) for TX. The bootloader serial configuration is 115200–8-N-1 and logic levels are at 1.8V.

Icon WARNING: Ensure your logic levels are at 1.8V as higher voltages, such as the very common 3.3V or 5V, may damage your hardware.

There are readily available USB-C breakout boards and connector PCBs that break out the required pins. Common 17 pin connector PCBs found on AliExpress can be connected on pins A8 and B5 to break out UART RX and UART TX while simultaneously allowing to use pins A6/B6 (D+), A7/B7 (D-) and A9/B9 (VBUS) for USB2.0 connectivity. Full reversibility of the connector is also maintained in this way.

WLAN

The device uses a Lite-ON WCBN3510A module connected via SDIO. This card contains the Qualcomm Atheros QCA9379-3 SoC for WiFi and Bluetooth. Support for the WiFi part in the mainline ath10k driver is a work in progress.

Using SSH through the WiFi connection is somewhat sluggish. This issue also exists in the original Android Firmware and may be caused by a bug in the WiFi adapters' firmware or a hardware design error relating to the SD bus.

Bluetooth

Bluetooth is connected to the SoC via UART. Bluetooth audio is currently not functional, due to the above mentioned lack in PCM support on the audio codec. HID devices via Bluetooth have been tested and work.

See also