Products > Embedded Computing

Might need help getting ADB/Shell on Presto A3 Restaurant Kiosk Tablet :)


So... I've acquired a most unique embedded computing device at one of my local computer surplus/salvage places, and I've been having fun trying to get access to... well, anything on it. I figured since it runs Android, and I've done some Android development in the past, I'd like to use the device for a school project instead of the Samsung Galaxy Tab we're currently using.

So far, I've discovered that the device has a SATA port right below the battery with a rubber cover, very much resembling a "service" port. I suspected that it wasn't actually a SATA interface since, as far as I know, that would be quite costly to implement on an Android device that doesn't use it except in rare service instances. Pins 1, 4 and 7 should normally be ground on SATA, but I found only pin 4 was grounded on this suspicious service SATA connector. What I then did was cut up an old SATA cable and hook up each of the pins to my Saleae logic analyzer to see what I could find. The first thing I found is that on all the SATA cables I have, pins 1, 4, and 7 are all grounded internally in the cable... because merely plugging in the SATA cable caused the device to respond as the volume down button being pressed. Plugging in the cable before powering it on puts it into some kind of safe mode/bootloader mode (which makes sense as holding volume down while powering on is a common mechanic to achieve this on phones and other android devices...) but of the 4 remaining "data" pins, only one actually shows any activity, which makes me think it isn't just a USB interface being exposed on this SATA port (since USB should show differential signaling on two wires, correct?) I've spent a good while trying different analyzers in the Logic app and the only thing I've found that seems to decode anything is "1 wire", but I have no idea why this would be using a 1-wire interface for "service"... it really seems most likely that they'd use this SATA port to expose a USB client interface since this is really an android device and plugging in a SATA cable even puts it in recovery mode.

Also, I have only been able to capture at 8Ms/s for some reason.. my Saleae is kinda old, USB 2.0 model, but I would have thought it would still capture at 24Ms/s as the app suggests, don't know if that's a limit on finding out what this is.

If anyone has any tips on how I can approach finding out what protocol this is or perhaps recognizes it, I would be super stoked!

I've attached the Logic capture data and some pictures and screenshots to show what's going on. Note: The capture shows two boot sequences. The first goes until about 5s after which the device pulls channel 3 high for the remainder of that boot, then I reboot it at about 30s and it repeats the process. In other words, only the first 5s or so is valuable.


I got to thinking, since I'm pretty sure this device is trying to write to a serial console, maybe it's actually serial.. like RS232 serial, as opposed to a UART. I figured given that these devices run at considerably lower voltages than PCs from the 90's (back when RS232 was standard fare lol) that, best case scenario I'd be dealing with a UART. Turns out, it actually is RS232 (or at least 5V TTL with the inverted logic of RS232...) because connecting up to a USB-Serial adapter and setting to 115200 8 n 1 (as implied by Logic's "autobaud" feature) immediately spewed out some text upon boot:

--- Code: ---Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
S - Boot Config, 0x000000e1
B -      1566 - PBL, Start
B -      4542 - bootable_media_detect_entry, Start
B -     84322 - bootable_media_detect_success, Start
B -     84326 - elf_loader_entry, Start
B -     85563 - auth_hash_seg_entry, Start
B -    109710 - auth_hash_seg_exit, Start
B -    123745 - elf_segs_hash_verify_entry, Start
B -    182787 - PBL, End
B -    151311 - SBL1, Start
B -    196206 - boot_flash_init, Start
D -         0 - boot_flash_init, Delta
B -    201361 - boot_config_data_table_init, Start
D -      2379 - boot_config_data_table_init, Delta - (0 Bytes)
B -    209108 - CDT version:3,Platform ID:11,Major ID:4,Minor ID:0,Subtype:4
B -    214750 - pm_device_init, Start
B -    217190 - pm_device_init, TEST - MSM8909 detected
B -    221338 - pm_device_init, INFO - PM8909 is selected
B -    234423 - PM_SET_VAL:Skip
D -     18849 - pm_device_init, Delta
B -    235826 - sbl1_ddr_set_params, Start
B -    238205 - cpr_init, Start
D -         0 - cpr_init, Delta
B -    243847 - Pre_DDR_clock_init, Start
D -       183 - Pre_DDR_clock_init, Delta
D -         0 - sbl1_ddr_set_params, Delta
B -    256779 - pm_driver_init, Start
B -    263489 - --> Charge init
B -      3752 - battery voltage
B -    266966 - boot up
B -        10 - Current status
D -     10675 - pm_driver_init, Delta
B -    279319 - clock_init, Start
D -       152 - clock_init, Delta
B -    697565 - Image Load, Start
D -    158051 - QSEE Image Loaded, Delta - (484976 Bytes)
B -    855647 - Image Load, Start
D -       335 - SEC Image Loaded, Delta - (2048 Bytes)
B -    864065 - ## gpio99 is high
B -    865254 - ##gpio99 is high
B -    868274 - sbl1_efs_handle_cookies, Start
D -       579 - sbl1_efs_handle_cookies, Delta
B -    876661 - Image Load, Start
D -     82137 - RPM Image Loaded, Delta - (156524 Bytes)
B -    958859 - Image Load, Start
D -    196634 - APPSBL Image Loaded, Delta - (640940 Bytes)
B -   1155492 - QSEE Execution, Start
D -       366 - QSEE Execution, Delta
B -   1161226 - SBL1, End
D -   1012203 - SBL1, Delta
S - Throughput, 37000 KB/s  (1284488 Bytes,  33942 us)
S - DDR Frequency, 400 MHz
Android Bootloader - UART_DM Initialized!!!

SAIO A-Boot (Secure) Ver_2.5 main menu:
1) View configuration data
2) Enter fastboot mode (locked)
3) Launch OS
4) Reboot
Enter selection:-->View config


SAIO A-Boot (Secure) Ver_2.5 main menu:
1) View configuration data
2) Enter fastboot mode (locked)
3) Launch OS
4) Reboot
Enter selection:-->Launch OS

--- End code ---

Now, what I can do with this... doesn't seem like much. It displays some config info but won't allow fastboot (says "Fastboot is locked").
Launching OS doesn't work either, although that could be due to having the volume button depressed (by the cable).


--- Quote ---like RS232 serial, as opposed to a UART
--- End quote ---

Other than in the voltage specs, how does RS232 serial differ from a UART?


--- Quote from: dunkemhigh on November 25, 2019, 04:01:52 pm ---Other than in the voltage specs, how does RS232 serial differ from a UART?

--- End quote ---

RS232 is the physical layer (voltage specs, etc.) and UART is the message layer (Baud, start/stop bits, etc.)

That's what I thought but figured there might be some inference I hadn't picked up on, hence my question.

Although, if we're going to be pedants, 'UART' is the acronym for the device and has sod-all to do with the message layer :)

Come to that, what is your message layer? In OSI terms it would be the datalink layer, wouldn't it?


[0] Message Index

There was an error while thanking
Go to full version