Lenovo ThinkSmart View (lenovo-cd-18781y)
Lenovo ThinkSmart View (CD-18781Y) running postmarketOS | |
Manufacturer | Lenovo |
---|---|
Name | ThinkSmart View |
Codename | lenovo-cd-18781y |
Model | CD-18781Y |
Released | 2020 |
Type | desktop |
Hardware | |
Chipset | Qualcomm APQ8053 |
CPU | 1.8 GHz Cortex-A53 |
GPU | Adreno 506 |
Display | 800x1280 LCD |
Storage | 8GB |
Memory | 2GB |
Architecture | aarch64 |
Software | |
Original software | Android |
Original version | 8.1 |
postmarketOS | |
postmarketOS kernel | 6.9.6 |
Unixbench Whet/Dhry score | 3755.6 |
Flashing |
Broken |
---|---|
USB Networking |
Works |
Internal storage |
Works |
Screen |
Works |
Touchscreen |
Partial |
Multimedia | |
3D Acceleration |
Works |
Audio |
Partial |
Camera |
Broken |
Connectivity | |
WiFi |
Works |
Bluetooth |
Partial |
Miscellaneous | |
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:
- BOE TV080WXM-LL4 (Touch IC: FocalTech FT8201)
- Innolux P080DDD-AB4 (Touch IC: Himax HX83100A)
As of Kernel 6.11 both variants have working touchscreen drivers in mainline.
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 | 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
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.
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.
Mainline Support
The following commits were made as part of mainline support for this device.
ALSA UCM Configuration
Kernel
Touchscreen
- Input: himax_hx83112b - add support for HX83100A
- Input: himax_hx83112b - add himax_chip struct for multi-chip support
- Input: himax_hx83112b - implement MCU register reading
- Input: himax_hx83112b - use more descriptive register defines
- dt-bindings: input: touchscreen: himax,hx83112b: add HX83100A
- Input: edt-ft5x06 - add support for FocalTech FT8201
Panel Driver
Wireless
lk2nd
- dts: msm8953: Add Lenovo ThinkSmart View (CD-18781Y)
- lk2nd: build: add option to sign bootimg
- dts: msm8953: Add build documentation to Lenovo ThinkSmart View (CD-18781Y)