Jump to content

Samsung Galaxy SII (samsung-i9100): Difference between revisions

From postmarketOS Wiki
Current suggested flash method does not appear to work.
Halamix2 (talk | contribs)
mNo edit summary
 
(95 intermediate revisions by 29 users not shown)
Line 2: Line 2:
| manufacturer = Samsung
| manufacturer = Samsung
| name = Galaxy S II
| name = Galaxy S II
| codename = i9100, d710
| codename = samsung-i9100
| image = File:Samsung-i9100-weston.jpg
| image = File:Samsung-i9100-weston.jpg
| imagecaption = First photo ever released of postmarketOS (from the original [https://ollieparanoid.github.io/post/postmarketOS/ introduction post]).
| imagecaption = First photo ever released of postmarketOS (from the original [https://ollieparanoid.github.io/post/postmarketOS/ introduction post]).
| releaseyear = 2011
| releaseyear = 2011
| originalsoftware = Android 2.3.4
| originalsoftware = Android
| chipset = Exynos 4210 Dual
| originalversion = 2.3.4
| chipset = Samsung Exynos 4210 Dual
| cpu = Dual-core 1.2 GHz Cortex-A9
| cpu = Dual-core 1.2 GHz Cortex-A9
| gpu = Mali-400MP4
| gpu = Mali-400 MP4
| storage = 16/32 GB
| storage = 16/32 GB
| display = 480x800 AMOLED
| display = 480x800 AMOLED
| memory = 1 GB
| memory = 1 GB
| architecture = armv7
| type = handset
| status_usbnet = Y
| status_flashing = Y
| status_touch = Y
| status_screen = Y
| status_wifi = Y
| status_xwayland = Y
| status_fde = P
| status_mainline = P
| status_battery = Y
| status_3d = Y
| status_accel = Y
| status_audio =
| status_bluetooth = Y
| status_camera =
| status_gps =
| status_mobiledata =
| status_sms =
| status_calls =
| status_uboot = yes
| status_uboot_mainline = N
| status_uboot_primary = Y
| status_uboot_keyboard = -
| booting = yes
| whet_dhry = 542.5
}}
}}
[[Image:I9100-xfce.jpeg|thumb|right|Running XFCE]]
[[Image:S2_pmos_xfce.jpg|thumb|right|Running Xfce]]
 
=== Contributors ===
=== Contributors ===
* ollieparanoid
* ollieparanoid
* veggie
* veggie
* timbz


=== What works ===
=== Device Owners ===
 
{{Device owners}}
* Installation to sdcard (<code>pmbootstrap install --sdcard=/dev/mmcblk...</code>)
* Installation to device memory (partial)
* Touchscreen
* Weston (only on SD card)
* XWayland
* Wifi
* Display brightness control
* Accerelometer sensor
* rtc
* Xfce
 
=== What does not work ===


* The rest (bluetooth, making calls, ...)
=== What does not work yet ===
* Auto resizing partitions during installation to device memory (probably)
* Audio
 
* Bluetooth
=== How to enter flash mode ===
* Modem
 
* MHL (Video-out)
* Connect a USB cable
* See "Hardware specifications" for ideas how to get them working.
* Make sure, the device is powered off
* Hold power + Home + volume down
* When prompted, release all buttons and press volume up


=== Installation ===
=== Installation ===
Follow the [[Samsung_Galaxy_SII_(samsung-i9100)/Installation|Installation instructions]].


Flashing to device memory is close to being possible using [https://github.com/postmarketOS/pmbootstrap/issues/456 drebrez's netcat method (#456)], but currently DOES NOT APPEAR TO WORK. The following steps may have functioned at one point, but do not seem to at present.
   $ pmbootstrap flasher flash_rootfs
 
   $ pmbootstrap flasher flash_kernel
Init pmbootstrap. Make sure to choose ''none'' for the user interface instead of ''weston'' because ''weston'' makes the image just a little bit too large for the unresized partition.
 
<source lang="shell">$ ./pmbootstrap.py init</source>
 
Start the build process
 
<source lang="shell">$ ./pmbootstrap.py install</source>
 
Flash postmarketOS to the device:
 
https://github.com/postmarketOS/pmbootstrap/issues/456
 
For the d710, on step 5 use ''/dev/mmcblk0p11'' as the install partition.
 
On step 8, use <source lang="shell">pv /home/pmos/rootfs/samsung-i9100.img | nc 172.16.42.1 60000</source> instead.
 
==== Step by step guide for Flashing to device memory ====
 
''Please do not hesitate to remove or edit if this does not belong here or match intended wiki content. This does not bring anything new just summary.''
 
- Build image (on your computer)
 
-- Install pmboostrap
 
   $ git clone https://github.com/postmarketOS/pmbootstrap.git
 
-- Change working directory to the pmboostrap
 
  $ cd pmbootstrap/
 
-- Configure
 
  $ ./pmbootstrap.py init
  [18:27:09] Device [samsung-i9100]: samsung-i9100
  [18:27:45] User interface [weston]: weston
  [18:28:05] Work path [/home/<USER>/.local/var/pmbootstrap]:
  [18:28:29] Jobs [5]:
  [18:28:46] Timestamp based rebuilds (y/n) [y]:
  [18:29:05] Extra packages [none]:
 
-- Prepare the installation
 
  $ ./pmbootstrap.py install
 
- Flash to phone memory - This will replace (break) your current phone system!
The description is using the alternative flash method because there it did not work for me with heimdall - https://github.com/Benjamin-Dobell/Heimdall/issues/418
 
-- Set phone to ODIN mode
 
  1. Turn off phone
  2. Connect USB cable
  3. Hold VOLUME_DOWN + HOME + POWER until you get Warning!! screen
  4. Push VOLUME_UP to continue to ODIN mode screen
 
-- Set image for NETCAT flash method
 
  $ ./pmbootstrap.py initfs hook_add usb-shell
 
-- Flash Kernel and Recovery (phone will reboot to screen "boot partition not found")
 
   $ ./pmbootstrap.py flasher flash_kernel
 
-- Check USB network connection to phone
 
  ping 172.16.42.1
 
(if it does not ping, try replugging usb cable few times)
 
-- Connect to phone with telnet
 
  $ telnet 172.16.42.1 24
 
-- Start netcat to listen for image (on the phone)
''/dev/mmcblk0p9 should be FACTORYFS partition you check by running fdisk -l /dev/mmcblk0''
 
  / # nc -v -l -p 60000 > /dev/mmcblk0p9
 
-- Switch to pmboostrap chroot (on the computer in other terminal)
 
  $ ./pmbootstrap.py chroot --suffix native
 
-- Install pv (in the chroot)
 
  / # apk add pv
 
-- Send image from computer to netcat (on the computer)
 
  / # pv /home/pmos/rootfs/samsung-i9100.img | nc 172.16.42.1 60000


-- Close both nc with CTRL+C when transfer finishes and reboot the phone with power button
=== Usage ===
 
==== Wifi ====
-- Telnet to phone to enter password
 
  $ telnet 172.16.42.1
 
-- Follow further instructions from telnet
 
=== Boot process ===
 
We're using the <code>heimdall-isorec</code> flash method, see [[deviceinfo_flash_methods]] for more information.
 
=== Links ===
 
* [https://github.com/postmarketOS/pmbootstrap/tree/master/aports/device/device-samsung-i9100 Device package]
* [https://github.com/postmarketOS/pmbootstrap/issues/456 netcat installation method]
 
=== Photos ===
 
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/telnet.jpg Initramfs asking for the password via telnet]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/filled.jpg Weston with various programs opened]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/demos.jpg postmarketOS demo menu (XWayland)]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/firefox.jpg Firefox (XWayland)]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/smoke.jpg Weston-smoke demo]
* [https://wiki.postmarketos.org/wiki/File:Samsung-d710.jpg Weston-smoke demo running on a d710]
* [https://wiki.postmarketos.org/images/3/36/I9100-xfce.jpeg xfce-ui running on i9100]
 
=== Wifi ===


- Create conf for wpa_supplicant
- Create conf for wpa_supplicant
Line 183: Line 83:
To set wifi connection to start automatically on boot, please refer here [[wifi]]
To set wifi connection to start automatically on boot, please refer here [[wifi]]


=== ofono ===
==== Modem ====


Best way seems to get Samsung IPC modem support from the patchset https://lists.ofono.org/pipermail/ofono/2012-September/013766.html (but it was not accepted) and does not build https://github.com/tssk/pmbootstrap/commits/device-samsung-i9100_modem . I would appreciate help from someone that understands C.
Using Ofono: Best way seems to get Samsung IPC modem support from the patchset https://lists.ofono.org/pipermail/ofono/2012-September/013766.html (but it was not accepted) and does not build https://github.com/tssk/pmbootstrap/commits/device-samsung-i9100_modem . I would appreciate help from someone that understands C.


Second idea was to build Andoird RIL + Samsung RIL and get ofono working with ofono-ril support - https://redmine.replicant.us/projects/replicant/wiki/Samsung-RIL .
Second idea was to build Andoird RIL + Samsung RIL and get ofono working with ofono-ril support - https://redmine.replicant.us/projects/replicant/wiki/Samsung-RIL .


=== GPS ===
==== GPS ====


https://univers-libre.net/posts/galaxy-s2-gps-on-replicant.html
https://univers-libre.net/posts/galaxy-s2-gps-on-replicant.html
Line 199: Line 99:
https://redmine.replicant.us/boards/21/topics/897
https://redmine.replicant.us/boards/21/topics/897


=== Setting the hardware clock ===
==== Setting the hardware clock ====


If you have already setup chrony and if your hardware clock doesn't have the time set you can set it with,
If you have already setup chrony and if your hardware clock doesn't have the time set you can set it with,
<source lang="shell">
<syntaxhighlight lang="shell">
localhost:~# hwclock -w  # Write the current system time to the hardware clock</source>
localhost:~# hwclock -w  # Write the current system time to the hardware clock</syntaxhighlight>


=== Setting the display brightness ===
==== Setting the display brightness ====


To adjust display brightness write a value between 0-255 to file given below,
To adjust display brightness write a value between 0-255 to file given below,
<source lang="shell">
<syntaxhighlight lang="shell">
localhost:~# echo 0 > /sys/class/backlight/panel/brightness #set the display to its lowest brightness
localhost:~# echo 0 > /sys/class/backlight/panel/brightness #set the display to its lowest brightness


localhost:~# echo 255 > /sys/class/backlight/panel/brightness #set the display to maximum brightness
localhost:~# echo 255 > /sys/class/backlight/panel/brightness #set the display to maximum brightness


</source>
</syntaxhighlight>


=== Reading Accelerometer sensor ===
==== Reading Accelerometer sensor ====


Accelerometer sensor data can read from following file
Accelerometer sensor data can read from following file
<source lang="shell">
<syntaxhighlight lang="shell">
localhost:~$ cat /sys/class/accelerometer/accelerometer/acc_file  
localhost:~$ cat /sys/class/accelerometer/accelerometer/acc_file  
</source>
</syntaxhighlight>


== Hardware specifications for i9100 ==
=== Hardware specifications ===
 
{{note|This device is [https://redmine.replicant.us/projects/replicant/wiki/GalaxyS2I9100 supported by Replicant]. With some more research we should be able to get most stuff running with their free software userland drivers.}}
=== SoC ===


==== SoC ====
Samsung Exynos 4 Dual 45 nm (GT-I9100, SHW-M250S/K/L) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]
Samsung Exynos 4 Dual 45 nm (GT-I9100, SHW-M250S/K/L) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]


=== CPU ===
==== CPU ====
 
1.2 GHz dual-core ARM Cortex-A9 (GT-I9100, GT-I9105, GT-I9100G, SHW-M250S/K/L) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]
1.2 GHz dual-core ARM Cortex-A9 (GT-I9100, GT-I9105, GT-I9100G, SHW-M250S/K/L) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]


=== GPU ===
==== GPU ====
 
ARM Mali-400 MP4 (GT-I9100, SHW-M250S/K/L) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]
ARM Mali-400 MP4 (GT-I9100, SHW-M250S/K/L) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]


=== WiFi / Bluetooth / FM radio ===
==== WiFi / Bluetooth / FM radio ====
 
Broadcom BCM4330 (SWB-B42) Bluetooth 4.0 Dual Band WLAN FM [https://gsmserver.com/item/ic-and-processors/wi-fi-ic-bcm4330-swb-b42-for-samsung-i9100-galaxy-s2-cell-phone-for-bluetooth-for-fm-radio-4709-002054/ source] [https://www.techinsights.com/reports-and-subscriptions/open-market-reports/Report-Profile/?ReportKey=7587 source]
Broadcom BCM4330 (SWB-B42) Bluetooth 4.0 Dual Band WLAN FM [https://gsmserver.com/item/ic-and-processors/wi-fi-ic-bcm4330-swb-b42-for-samsung-i9100-galaxy-s2-cell-phone-for-bluetooth-for-fm-radio-4709-002054/ source] [https://www.techinsights.com/reports-and-subscriptions/open-market-reports/Report-Profile/?ReportKey=7587 source]


Driver? - https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
Driver? - https://wireless.wiki.kernel.org/en/users/drivers/brcm80211


Firmware? - https://packages.debian.org/sid/kernel/firmware-brcm80211
Firmware - https://android.googlesource.com/platform/hardware/broadcom/wlan/+/master/bcmdhd/firmware/bcm4330/
 
==== Memory ====
1 GB RAM [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II]
 
==== Storage ====
16 GB or 32 GB flash memory [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II]
 
==== Removable storage ====
microSD (up to 128 GB SDXC) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II]
 
==== Modem ====
* XMM6260 [https://code.paulk.fr/article9/galaxy-s2-replicant-port-status-update]
* aka "X-GOLD 626", and it's also used in Nexus 7 [https://ruedigergad.com/2013/01/09/wanted-nexus-7-3g-linux-driver/]
* it seems to be supported by the mainline kernel (big questionmark here) [http://www.omappedia.org/wiki/Infineon_Modems]
 
==== Audio ====
* Yamaha MC1N2
* The Android kernel exposes the alsa API.
* But when you play with the volume sliders in alsamixer, nothing happens
* /dev/snd/hwC0D0 implements hardware-specific controls (via ioctl) [https://code.paulk.fr/article9/galaxy-s2-replicant-port-status-update] (check the link for a free software Android userspace driver)
* We could write a daemon, that watches the alsa sound levels, and unmutes channels (speaker, headphones etc.) via hwC0D0 as necessary. (This will only work with the downstream kernel, the sound is probably not implemented in the upstream kernel at all?)
* Maybe all this is overkill and the strategy from [[Audio]] works as well.
 
==== Light / proximity sensor ====
the CM3663 sensor is being use and there is no driver in mainline. A downstream driver is available [https://github.com/mozilla-b2g/kernel-android-galaxy-s2-ics/blob/247d9cff40d94a195ce456c4c5aae6fb967703a5/drivers/sensor/cm3663.c here].


=== Memory ===
==== MHL ====
* Fairchild FSA3200UMX switch [https://forum.xda-developers.com/showthread.php?t=1316501&page=2#post25615680]
* Maxim MAX8997 PMIC [https://forum.xda-developers.com/showthread.php?t=1316501&page=2#post25615680]
* Silicon Image 9244 transmitter [https://forum.xda-developers.com/showthread.php?t=1316501&page=2#post25615680]
* [https://forum.xda-developers.com/showpost.php?p=74099043&postcount=4 Should be all supported] to a certain extent in mainline 4.15 kernel <small><small>(of course the device is still stuck to 3.0 for the time being)</small></small>


1 GB RAM [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]
==== Serial / UART ====
<!-- Note: this section is linked to externally, please do not change the 'Serial / UART' header -->


=== Storage ===
Pressing home key during early boot enables bootloader debug output. To get kernel logs through 619 kOhm micro-usb serial debugging cable it is required to set the environmental variable SWITCH_SEL to 3 in bootloader SBL shell. To enter SBL shell hold the RETURN key in minicom/picocom/your favorite UART program when starting the device, until you get the SBL> prompt. From there you can then change the CMDLINE and boot with:


16 GB or 32 GB flash memory [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]
  setenv SWITCH_SEL 3
  setenv CMDLINE loglevel=7 console=ttySAC2,115200
  saveenv
  boot


=== Removable storage ===
Setting SWITCH_SEL somehow enables serial output on the USB connector.


microSD (up to 128 GB SDXC) [https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II source]
It is not exactly clear yet where to find UART / serial on the device. For possible location see second image below (red rectangle). Nevertheless a good instruction on hardware teardown is [https://www.ifixit.com/Guide/Samsung+Galaxy+S+II+Micro-USB+Port+Replacement/58028 available here]. Follow this guide until step 5, than proceed with removing the black cover from the circuit board (see first image below).


=== TODO ===
<gallery>
File:Samsung galaxy s2 i9100 teardown.jpg|thumb|left|Remove black cover (it is only glued)
File:Samsung galaxy s2 i9100 uart location.jpg|thumb|UART possibly located in this field (red rectangle)
</gallery>
 
=== Photos ===
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/telnet.jpg Initramfs asking for the password via telnet]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/filled.jpg Weston with various programs opened]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/demos.jpg postmarketOS demo menu (XWayland)]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/firefox.jpg Firefox (XWayland)]
* [https://ollieparanoid.github.io/img/2017-05-26/i9100/smoke.jpg Weston-smoke demo]
* [https://wiki.postmarketos.org/wiki/File:Samsung-d710.jpg Weston-smoke demo running on a d710]
* [https://wiki.postmarketos.org/images/3/36/I9100-xfce.jpeg xfce-ui running on i9100]


gps, sensors, camera...
=== See also ===
* {{MR|1598|pmaports}}: initial MR with mainline, has serial output instructions
* [https://code.paulk.fr/article9/galaxy-s2-replicant-port-status-update Galaxy S2 Replicant port status update]
* [https://redmine.replicant.us/projects/replicant/wiki/GalaxyS2I9100 Replicant wiki device page]
* [https://redmine.replicant.us/projects/replicant/wiki/GalaxyS2I9100Installation Replicant wiki installation page]
* {{Device package|samsung-i9100}}
* {{MR|456}} netcat installation method

Latest revision as of 11:33, 1 February 2025

Samsung Galaxy S II
First photo ever released of postmarketOS (from the original introduction post).
First photo ever released of postmarketOS (from the original introduction post).
Manufacturer Samsung
Name Galaxy S II
Codename samsung-i9100
Released 2011
Type handset
Hardware
Chipset Samsung Exynos 4210 Dual
CPU Dual-core 1.2 GHz Cortex-A9
GPU Mali-400 MP4
Display 480x800 AMOLED
Storage 16/32 GB
Memory 1 GB
Architecture armv7
Software
Original software Android
Original version 2.3.4
postmarketOS
Category testing
Pre-built images no
Mainline partial
Unixbench Whet/Dhry score 542.5
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
Works
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
No data
Camera
No data
Camera Flash
No data
Connectivity
WiFi
Works
Bluetooth
Works
GPS
No data
NFC
No data
Modem
Calls
No data
SMS
No data
Mobile data
No data
Miscellaneous
FDE
Partial
USB OTG
No data
HDMI/DP
No data
Sensors
Accelerometer
Works
Magnetometer
No data
Ambient Light
No data
Proximity
No data
Hall Effect
No data
Haptics
No data
Barometer
No data
U-Boot
Primary Bootloader
Works
Secondary Bootloader
No data
Mainline
Broken
Internal Storage
No data
SD card
No data
USB Host
No data
USB Peripheral
No data
Display
No data
Buttons
No data
Running Xfce

Contributors

  • ollieparanoid
  • veggie
  • timbz

Device Owners


What does not work yet

  • Audio
  • Bluetooth
  • Modem
  • MHL (Video-out)
  • See "Hardware specifications" for ideas how to get them working.

Installation

Follow the Installation instructions.

 $ pmbootstrap flasher flash_rootfs
 $ pmbootstrap flasher flash_kernel

Usage

Wifi

- Create conf for wpa_supplicant

 $ wpa_passphrase "SSID" "password" > wifi

Note : If you are connecting to a hidden wireless network, make sure to add line "scan_ssid=1" after the ssid line in your generated conf file

- Connect to wifi AP

 $ sudo wpa_supplicant -i wlan0 -c wifi &

- Get ip address from dhcp server (in another terminal)

 $ sudo udhcpc -i wlan0

To set wifi connection to start automatically on boot, please refer here wifi

Modem

Using Ofono: Best way seems to get Samsung IPC modem support from the patchset https://lists.ofono.org/pipermail/ofono/2012-September/013766.html (but it was not accepted) and does not build https://github.com/tssk/pmbootstrap/commits/device-samsung-i9100_modem . I would appreciate help from someone that understands C.

Second idea was to build Andoird RIL + Samsung RIL and get ofono working with ofono-ril support - https://redmine.replicant.us/projects/replicant/wiki/Samsung-RIL .

GPS

https://univers-libre.net/posts/galaxy-s2-gps-on-replicant.html

https://redmine.replicant.us/projects/replicant/wiki/GSD4t

https://github.com/mnalis/gsd4t_parser

https://redmine.replicant.us/boards/21/topics/897

Setting the hardware clock

If you have already setup chrony and if your hardware clock doesn't have the time set you can set it with,

localhost:~# hwclock -w  # Write the current system time to the hardware clock

Setting the display brightness

To adjust display brightness write a value between 0-255 to file given below,

localhost:~# echo 0 > /sys/class/backlight/panel/brightness #set the display to its lowest brightness

localhost:~# echo 255 > /sys/class/backlight/panel/brightness #set the display to maximum brightness

Reading Accelerometer sensor

Accelerometer sensor data can read from following file

localhost:~$ cat /sys/class/accelerometer/accelerometer/acc_file

Hardware specifications

Note This device is supported by Replicant. With some more research we should be able to get most stuff running with their free software userland drivers.

SoC

Samsung Exynos 4 Dual 45 nm (GT-I9100, SHW-M250S/K/L) source

CPU

1.2 GHz dual-core ARM Cortex-A9 (GT-I9100, GT-I9105, GT-I9100G, SHW-M250S/K/L) source

GPU

ARM Mali-400 MP4 (GT-I9100, SHW-M250S/K/L) source

WiFi / Bluetooth / FM radio

Broadcom BCM4330 (SWB-B42) Bluetooth 4.0 Dual Band WLAN FM source source

Driver? - https://wireless.wiki.kernel.org/en/users/drivers/brcm80211

Firmware - https://android.googlesource.com/platform/hardware/broadcom/wlan/+/master/bcmdhd/firmware/bcm4330/

Memory

1 GB RAM [1]

Storage

16 GB or 32 GB flash memory [2]

Removable storage

microSD (up to 128 GB SDXC) [3]

Modem

  • XMM6260 [4]
  • aka "X-GOLD 626", and it's also used in Nexus 7 [5]
  • it seems to be supported by the mainline kernel (big questionmark here) [6]

Audio

  • Yamaha MC1N2
  • The Android kernel exposes the alsa API.
  • But when you play with the volume sliders in alsamixer, nothing happens
  • /dev/snd/hwC0D0 implements hardware-specific controls (via ioctl) [7] (check the link for a free software Android userspace driver)
  • We could write a daemon, that watches the alsa sound levels, and unmutes channels (speaker, headphones etc.) via hwC0D0 as necessary. (This will only work with the downstream kernel, the sound is probably not implemented in the upstream kernel at all?)
  • Maybe all this is overkill and the strategy from Audio works as well.

Light / proximity sensor

the CM3663 sensor is being use and there is no driver in mainline. A downstream driver is available here.

MHL

  • Fairchild FSA3200UMX switch [8]
  • Maxim MAX8997 PMIC [9]
  • Silicon Image 9244 transmitter [10]
  • Should be all supported to a certain extent in mainline 4.15 kernel (of course the device is still stuck to 3.0 for the time being)

Serial / UART

Pressing home key during early boot enables bootloader debug output. To get kernel logs through 619 kOhm micro-usb serial debugging cable it is required to set the environmental variable SWITCH_SEL to 3 in bootloader SBL shell. To enter SBL shell hold the RETURN key in minicom/picocom/your favorite UART program when starting the device, until you get the SBL> prompt. From there you can then change the CMDLINE and boot with:

 setenv SWITCH_SEL 3
 setenv CMDLINE loglevel=7 console=ttySAC2,115200
 saveenv
 boot

Setting SWITCH_SEL somehow enables serial output on the USB connector.

It is not exactly clear yet where to find UART / serial on the device. For possible location see second image below (red rectangle). Nevertheless a good instruction on hardware teardown is available here. Follow this guide until step 5, than proceed with removing the black cover from the circuit board (see first image below).

Photos

See also