Sunday, August 30, 2020

Evscope Smart Telescope Analysis

eVscope Telescope Innards


Hardware
The eVscope is powered by a Raspberry Pi board with the LINUX operating system and that means one thing - filesystem on an SD card.  The smart telescope has these two electronic cards. At the right is a telescope controller board by Unistellar and at left is the stock Raspberry Pi 3 computer.  When we disconnect Unishield from the Raspi, we can see the bottom side of the PCB with a dsPIC33E microchip responsible for control of the motors. The Unishield also contains a LSM6DSM gyroscope/accelerometer module. Image found on internet at a reverse engineering site.

Computer and Interface
The Raspberry Pi does not use its DSI display interface, audio jack, or any of the USB ports. It gets power via GPIO pins from the Unishield, which is then directly soldered to a battery. The GPIO is also used for communication with the Unishield, e.g. to control the azimuth/altitude motors. The camera stream goes from the IMX224 sensor's board to the Unishield via an HDMI cable, and the data is then forwarded to the Raspberry Pi through the CSI camera interface. This is the same ribbon cable connector used by the official Raspberry Pi camera module (which uses IMX219, a different Sony sensor). Raspberry Pi then uses its own HDMI-out to display the starfield in the eye-piece, which is powered by an OLED display.

Software
We see 4 partitions. Partition 1 and 2 are identical, and one of them likely acts as a fallback in case of a failed firmware update. Partition 3 contains a fairly large (3.4GB) SQLite database called afdstarmap.db, which holds information about objects in the sky. This database is used by the telescope to figure out where it should point itself. The 4th and largest partition is also the only one that is used for storing user data, e.g. observations that can be later uploaded to Unistellar for research purposes.


Partitions
Partitions 1 & 2 are the ones we'll focus on first. We see a fairly standard setup for a Raspberry-based device. cmdline.txt and config.txt are used for interfacing with the firmware and it's where you set low level hardware preferences for different system buses and/or features of the SoC. evscope.dtb contains a device tree, describing all the different hardware features of the board(s). I've linked to the decompiled device tree in the hardware section. Then we have evscope.fw, which is the most important file of all - it contains the whole Linux system that powers the machine. Because the system is booted from a firmware file rather than a regular filesystem, runtime changes are not written back and the system is restored to its previous configuration on every reboot.

Boot
Upon boot, Partition 3 gets mounted as /media/ro, while the user-data Partition 4 gets mounted as /media/rw.

Hardware
System platform: Raspberry Pi 3 A+
Custom board: Unistellar Unishield (Rev P)
Camera sensor: Sony IMX224
Storage: 16GB SanDisk micro SD card
Raspberry Pi Computer
https://www.raspberrypi.org/products/raspberry-pi-3-model-a-plus/
Sony IMX224
https://www.sony-semicon.co.jp/products/common/pdf/IMX224.pdf