Jolla Phone (jolla-sbj): Difference between revisions
No edit summary |
m gitlab.com -> gitlab.postmarketos.org (bot edit) |
||
(28 intermediate revisions by 14 users not shown) | |||
Line 4: | Line 4: | ||
| name = Jolla Phone | | name = Jolla Phone | ||
| codename = jolla-sbj | | codename = jolla-sbj | ||
| image = File: | | image = File:Jolla1-sbj-sxmo.jpg | ||
| imagecaption = Jolla Phone | | imagecaption = Jolla Phone | ||
| releaseyear = 2013 | | releaseyear = 2013 | ||
| originalsoftware = Sailfish 1 | | originalsoftware = Sailfish | ||
| chipset = Qualcomm Snapdragon 400 | | originalversion = 1 | ||
| chipset = Qualcomm Snapdragon 400 (MSM8930) | |||
| cpu = Dual-core 1.4 GHz Krait 300 | | cpu = Dual-core 1.4 GHz Krait 300 | ||
| gpu = Adreno 305 | | gpu = Adreno 305 | ||
Line 14: | Line 15: | ||
| display = 540x960 IPS | | display = 540x960 IPS | ||
| memory = 1 GB | | memory = 1 GB | ||
| architecture = | | architecture = armv7 | ||
| | | type = handset | ||
| status_usbnet = P | | status_usbnet = P | ||
| status_flashing = P | | status_flashing = P | ||
| status_touch = | | status_touch = Y | ||
| status_screen = | | status_screen = Y | ||
| status_wifi = | | status_wifi = Y | ||
| status_xwayland = | | status_xwayland = N | ||
| status_fde = | | status_fde = | ||
| status_mainline = | | status_mainline = N | ||
| status_battery = | | status_battery = Y | ||
| status_3d = | | status_3d = N | ||
| status_accel = | | status_accel = N | ||
| status_audio = | | status_audio = Y | ||
| status_bluetooth = | | status_bluetooth = N | ||
| status_camera = | | status_camera = N | ||
| status_gps = | | status_gps = N | ||
| status_mobiledata = | | status_mobiledata = N | ||
| status_sms = | | status_sms = N | ||
| status_calls = | | status_calls = N | ||
| booting = yes | | booting = yes | ||
}} | }} | ||
Line 41: | Line 42: | ||
* MartijnBraam | * MartijnBraam | ||
* PureTryOut | * PureTryOut | ||
* Postmarketeer | |||
== Backup the Jolla system == | == Backup the Jolla system == | ||
Line 52: | Line 54: | ||
# While still holding down the volume down button, press the power button till the phone shakes. If done correctly, the Jolla logo will be shown constantly in combination with the led lighting up white | # While still holding down the volume down button, press the power button till the phone shakes. If done correctly, the Jolla logo will be shown constantly in combination with the led lighting up white | ||
# Plug in the phone to a PC with telnet installed | # Plug in the phone to a PC with telnet installed | ||
# On your PC, | # On your PC, it should appear as a new network interface. Connect to it. | ||
# If you see an USB device connected, but without network interface, try <syntaxhighlight lang="shell-session">$ sudo modprobe rndis_host</syntaxhighlight> | |||
# Open a terminal and use telnet to get into the recovery <syntaxhighlight lang="shell-session">$ telnet 10.42.66.66</syntaxhighlight> | |||
# A menu will be shown, press 4 and enter to get a shell. The device will ask for your devicelock code | # A menu will be shown, press 4 and enter to get a shell. The device will ask for your devicelock code | ||
# Insert a sdcard into your phone with a partition on it big enough to fit the system (make sure it ''isn't'' FAT32 formatted, as it can only store files up to 4GB big which might be too small). The sdcard will show up as "/dev/mmcblk1" | # Insert a sdcard into your phone with a partition on it big enough to fit the system (make sure it ''isn't'' FAT32 formatted, as it can only store files up to 4GB big which might be too small). The sdcard will show up as "/dev/mmcblk1" | ||
# Mount the sdcard partition to a directory. < | # Mount the sdcard partition to a directory. <syntaxhighlight lang="shell-session"># mkdir /tmp/phone-backup; mount /dev/mmcblk1p1 /tmp/phone-backup</syntaxhighlight> | ||
# dd your system to an image file on the sdcard. < | # dd your system to an image file on the sdcard. <syntaxhighlight lang="shell-session"># dd if=/dev/mmcblk0p28 of=/tmp/phone-backup/jolla-fullBackup.img</syntaxhighlight> | ||
# When the disk image is made, unmount the sdcard. < | # When the disk image is made, unmount the sdcard.<syntaxhighlight lang="shell-session"># umount /tmp/phone-backup</syntaxhighlight> | ||
'''Restore:''' | '''Restore:''' | ||
Line 63: | Line 67: | ||
# Telnet to the device like before | # Telnet to the device like before | ||
# Mount the sdcard to a partition again | # Mount the sdcard to a partition again | ||
# dd the backup image to the device < | # dd the backup image to the device <syntaxhighlight lang="shell-session"># dd if=/mnt/backup/jolla-fullBackup.img of=/dev/mmcblk0p28</syntaxhighlight> | ||
# Reboot | # Reboot | ||
== Reverting back to stock w/o backup == | |||
To install latest stock version you need to flash an image, because the recovery image of factory reset is not updatable. | |||
A decent version can be found [https://talk.maemo.org/showthread.php?t=100528 here]. | |||
== Flashing mode == | == Flashing mode == | ||
The Jolla phone uses fastboot from the Mer project rather than Android. To enter fastboot shut down the device, then | The Jolla phone uses fastboot from the Mer project rather than Android. To enter fastboot shut down the device, then {{Button|Plug in USB lead}} while pressing {{Button|Volume Down}}. | ||
== USB connection == | == USB connection == | ||
Line 76: | Line 85: | ||
First, find the interface name using <code>ip a</code>. | First, find the interface name using <code>ip a</code>. | ||
Then, we have to assign the device a mac address (replace the interface name with what you found from the previous command). | Then, we have to assign the device a mac address (replace the interface name with what you found from the previous command). | ||
< | <syntaxhighlight lang="shell-session"> | ||
# ip l set enp1s0f0u3 address 12:12:12:12:12:12 | # ip l set enp1s0f0u3 address 12:12:12:12:12:12 | ||
</ | </syntaxhighlight> | ||
After some seconds an IP address will be assigned automatically. | |||
You can now use SSH to connect to the device on <code>172.16.42.1</code>. | You can now use SSH to connect to the device on <code>172.16.42.1</code>. | ||
== Install to SD-card only == | |||
Its possible to install to sdcard and boot via fastboot without flashing. | |||
* Install to sdcard<syntaxhighlight lang="shell-session"> | |||
# pmbootstrap install --sdcard=/dev/XXX | |||
</syntaxhighlight> | |||
* Enter fastboot mode | |||
* Boot via fastboot<syntaxhighlight lang="shell-session"> | |||
# pmbootstrap flasher boot --cmdline "root=/dev/mmcblk1p2 androidboot.hardware=qcom user_debug=30 ehci-hcd.park=3 maxcpus=2 zram.num_devices=2" | |||
</syntaxhighlight> | |||
If you see an error <code>Booting FAILED (remote: 'access denied. need privilege!')</code>, it means that the bootloader is locked. You need to unlock the bootloader by going in the recovery mode (https://talk.maemo.org/showthread.php?p=1556497 / https://jolla.zendesk.com/hc/en-us/articles/204709607-Jolla-Phone-How-to-use-Recovery-Mode): | |||
# Turn off your Jolla device and remove all cables and the battery. | |||
# Press and hold down the Volume Down button while re-inserting the battery. | |||
# While still holding down the Volume key, press the Power key until Jolla vibrates. | |||
You can now release both buttons. You have now put your device into Recovery Mode. | |||
If you have a device lockcode, there could be an issue saying the code is incorrect even after typing the correct one (https://forum.sailfishos.org/t/jolla-recovery-v0-3-1-unlockable/8013/2) so you may need to disable the lockcode in Sailfish OS settings before unlocking the bootloader in recovery mode. | |||
If the bootloader is unlocked, it should display "Unlocked" in red on the top left when entering fastboot. | |||
If your screen stays black after booting, it could mean that you have used an interface that is not supported: https://wiki.postmarketos.org/wiki/Category:Interface#Which_interfaces_work_where_.28and_which_interface_should_I_use.3F.29 | |||
You can reboot into fastboot again as root if <code>reboot-mode</code> is installed. | |||
<syntaxhighlight lang="shell-session"> | |||
# (sleep 2 && reboot-mode bootloader ) & exit | |||
</syntaxhighlight> | |||
{{Button|CTRL}}+{{Button|D}} | |||
== SIGILL in kernel log == | |||
Kernel log are flushed with these messages: | |||
<syntaxhighlight lang="text"> | |||
sshd(3029) send signal 4 to sshd(3029) | |||
sshd (3029): undefined instruction: pc=4038c98c | |||
Code: 4770 ec51 0f1e 4770 (ffb0) 0300 | |||
</syntaxhighlight> | |||
This is due to probing of processor capabilities in libcrypt of OpenSSL. | |||
Its reduced by changing debug level to <code>user_debug=30</code>. | |||
This also blocks debugging with <code>gdb</code>. Workaround can be found here <https://www.openssl.org/docs/faq.html#PROG17>. | |||
== Devices == | |||
{| class="wikitable" | |||
! Component | |||
! Model | |||
! Driver | |||
! Device | |||
! Info | |||
|- | |||
| Touchscreen | |||
| Synaptics S3202 | |||
| synaptics_s3202_touch | |||
| /devices/i2c-3/3-0020/input/input0 | |||
/devices/i2c-3/3-0020/input/input1 | |||
| touch_synaptics | |||
capkey_synaptics | |||
|- | |||
| Vibration motor | |||
| pm8038 | |||
| pm8xxx-vibrator | |||
| /devices/platform/msm_ssbi.0/pm8038-core/pm8xxx-vib/input/input2 | |||
| | |||
|- | |||
| Power Key | |||
| pmic8038 | |||
| pmic8xxx_pwrkey | |||
| /devices/platform/msm_ssbi.0/pm8038-core/pm8xxx-pwrkey/input/input3 | |||
| | |||
|- | |||
| The Other Half Smart Cover | |||
| | |||
| toh-event | |||
| /devices/virtual/input/input4 | |||
| | |||
|- | |||
| Audio | |||
| MSM Sitar | |||
| msm8930 | |||
| /devices/platform/soc-audio.0/sound/card0/input5 | |||
/devices/platform/soc-audio.0/sound/card0/input6 | |||
| Button Jack | |||
Headset Jack | |||
|- | |||
| Accelerometer | |||
| BMA255 | |||
| bma2x2 | |||
| /devices/virtual/input/input7 | |||
| <code>echo 1 > input7/enable</code> | |||
|- | |||
| Magnetometer | |||
| BMM050 | |||
| bmm050 | |||
| /devices/virtual/input/input8 | |||
| | |||
|- | |||
| Gyroscope | |||
| l3gd20 | |||
| l3gd20_gyr | |||
| /devices/i2c-12/12-006a/input/input9 | |||
| | |||
|- | |||
| Proximity | |||
| tsl2772 | |||
| tsl277x | |||
| /devices/virtual/input/input10 | |||
| | |||
|- | |||
| Ambient light | |||
| tsl2772 | |||
| tsl277x | |||
| /devices/virtual/input/input11/als_lux | |||
| <code>echo 1 > input11/als_can_wake</code> | |||
|- | |||
| GPIO keys | |||
| | |||
| | |||
| /devices/platform/gpio-keys/input/input12 | |||
| | |||
|- | |||
| Backlight | |||
| | |||
| | |||
| /sys/class/leds/wled/brightness | |||
| | |||
|- | |||
| LEDs | |||
| | |||
| | |||
|/sys/class/leds/red/brigtness | |||
/sys/class/leds/green/brightness | |||
/sys/class/leds/blue/brightness | |||
| | |||
|} | |||
== Vendor Firmware == | |||
<syntaxhighlight lang="text"> | |||
/dev/mmcblk0p25 on /persist type ext4 | |||
WCNSS_qcom_cfg.ini WCNSS_qcom_wlan_nv0.bin WCNSS_qcom_wlan_nv1.bin WCNSS_qcom_wlan_nv2.bin | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="text"> | |||
/dev/mmcblk0p18 on /firmware type vfat | |||
modem.b00 modem.b03 modem.b06 modem.b09 | |||
modem.b01 modem.b04 modem.b07 modem.b10 | |||
modem.b02 modem.b05 modem.b08 modem.mdt | |||
modem_fw.b00 modem_fw.b03 modem_fw.b09 modem_fw.b12 modem_fw.b16 modem_fw.b25 modem_fw.b31 | |||
modem_fw.b01 modem_fw.b04 modem_fw.b10 modem_fw.b13 modem_fw.b23 modem_fw.b27 modem_fw.fli | |||
modem_fw.b02 modem_fw.b05 modem_fw.b11 modem_fw.b15 modem_fw.b24 modem_fw.b28 modem_fw.mdt | |||
q6.b00 q6.b04 q6.mdt | |||
q6.b01 q6.b05 | |||
q6.b03 q6.b06 | |||
tzapps.b00 tzapps.b03 | |||
tzapps.b01 tzapps.mdt | |||
tzapps.b02 | |||
wcnss.b00 wcnss.b04 | |||
wcnss.b01 wcnss.b05 | |||
wcnss.b02 wcnss.mdt | |||
</syntaxhighlight> | |||
RPMs can't be downloaded directly, but exported from device with <code>pkcon -vvv download . <pkg-name></code>. | |||
<syntaxhighlight lang="shell-session"> | |||
# rpm2archive sbj-wlan-0.2.7-1.3.6.jolla.armv7hl.rpm && tar tzvf sbj-wlan-0.2.7-1.3.6.jolla.armv7hl.rpm.tgz | grep -o " ./.*wlan[\./].*" | |||
./lib/modules/3.4.108.20200929.1/kernel/net/wireless/wlan.ko | |||
./system/etc/firmware/wlan/prima/ | |||
./system/etc/firmware/wlan/prima/WCNSS_cfg.dat | |||
./system/etc/firmware/wlan/prima/WCNSS_qcom_cfg.ini -> /persist/WCNSS_qcom_cfg.ini | |||
./system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv0.bin -> /persist/WCNSS_qcom_wlan_nv0.bin | |||
./system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv1.bin -> /persist/WCNSS_qcom_wlan_nv1.bin | |||
./system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv2.bin -> /persist/WCNSS_qcom_wlan_nv2.bin | |||
# rpm2cpio ../kernel-adaptation-sbj-3.4.108.20200929.1-1.11.2.jolla.armv7hl.rpm | cpio -t | grep cfg | |||
./lib/modules/3.4.108.20200929.1/kernel/net/wireless/cfg80211.ko | |||
</syntaxhighlight> | |||
== WiFi == | |||
WiFi works with firmware and the original proprietary <code>wlan.ko</code>, which depends on <code>cfg80211.ko</code>. | |||
It must be activated in this order (these steps may not be necessary and could be ignored): | |||
<syntaxhighlight lang="shell-session"> | |||
# echo 1 > /dev/wcnss_wlan 2>/dev/null | |||
# sleep 1 | |||
# modprobe wlan | |||
# echo sta > /sys/module/wlan/parameters/fwpath | |||
</syntaxhighlight> | |||
You can use <code>sudo nmtui</code> to connect to a Wi-Fi network (<code>nmcli</code> can be used also: https://wiki.postmarketos.org/wiki/WiFi#Using_NetworkManager). You may see WiFi networks listed under 2 network interfaces, p2p0 and wlan0. The correct interface for WiFi is wlan0. | |||
If you have problems to connect to a WiFi network with Network Manager (for example with a message "Error: Connection activation failed: (5) IP configuration could not be reserved (no available address, timeout, etc.)."), you can install <code>dhclient</code> (by adding it when running <code>pmbootstrap init</code> on your computer) and replace <code>dhcp=internal</code> with <code>dhcp=dhclient</code> below <code>[main]</code> in <code>/etc/NetworkManager/NetworkManager.conf</code>. Then you need to restart Network Manager with the command <code>sudo service networkmanager restart</code> (solution based on https://bbs.archlinux.org/viewtopic.php?id=232833 / https://forum.salixos.org/viewtopic.php?f=30&t=7284). | |||
Network Manager should then be connected to the WiFi network. If you still don't have access to Internet because there is no default route, you need to execute this command: <code>sudo dhclient wlan0</code>. | |||
== Modem == | |||
Firmware loads, but modem can't be enabled. Might be fixable, because it works for similar samsung-i9195 ({{issue|1054}}). To get more features working like the modem, the phone must be ported first to the mainline kernel (https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/commit/2e30fa4281b43df769bd2546931fd63ba9857b53#note_846861351). | |||
<syntaxhighlight lang="shell-session"> | |||
# apk add ofono ofono-scripts | |||
# service ofono start | |||
# echo 2 > /sys/devices/virtual/smdpkt/smdcntl0/open_timeout | |||
# /usr/lib/ofono/test/enable-modem | |||
</syntaxhighlight> | |||
modem and modem_fw is loaded. | |||
<syntaxhighlight lang="text"> | |||
pil pil0: q6: Brought out of reset | |||
apr_tal:Q6 Is Up | |||
diag: proc 2, msg mask update fail -12, tried 419 | |||
pil pil1: modem_fw: Brought out of reset | |||
pil pil2: modem: Brought out of reset | |||
Notify: smsm init | |||
smd_pkt_open: wait on smd_pkt_dev id:0 allocation failed rc:-110 | |||
</syntaxhighlight> | |||
== Photos == | |||
|[[File:Jolla Phone.jpg|400x400px]] | |||
=== postmarketOS users that own the device === | |||
{{Device owners}} | |||
== Links == | == Links == | ||
* [https:// | * [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/device-jolla-sbj Device package] | ||
* [https:// | * [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/linux-jolla-sbj Kernel package] | ||
* [http://releases.sailfishos.org/sources/2.0.5.6/ Jolla sources] | * [http://releases.sailfishos.org/sources/2.0.5.6/ Jolla sources] | ||
* [https://wiki.merproject.org/wiki/Compiling_Jolla_kernel Mer project page] | * [https://wiki.merproject.org/wiki/Compiling_Jolla_kernel Mer project page] |
Latest revision as of 13:34, 4 November 2024
![]() Jolla Phone | |
Manufacturer | Jolla |
---|---|
Name | Jolla Phone |
Codename | jolla-sbj |
Released | 2013 |
Type | handset |
Hardware | |
Chipset | Qualcomm Snapdragon 400 (MSM8930) |
CPU | Dual-core 1.4 GHz Krait 300 |
GPU | Adreno 305 |
Display | 540x960 IPS |
Storage | 16 GB |
Memory | 1 GB |
Architecture | armv7 |
Software | |
Original software | Sailfish |
Original version | 1 |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | no |
Flashing |
Partial |
---|---|
USB Networking |
Partial |
Internal storage |
No data |
SD card |
No data |
Battery |
Works |
Screen |
Works |
Touchscreen |
Works |
Multimedia | |
3D Acceleration |
Broken |
Audio |
Works |
Camera |
Broken |
Camera Flash |
No data |
Connectivity | |
WiFi |
Works |
Bluetooth |
Broken |
GPS |
Broken |
NFC |
No data |
Modem | |
Calls |
Broken |
SMS |
Broken |
Mobile data |
Broken |
Miscellaneous | |
FDE |
No data |
USB OTG |
No data |
HDMI/DP |
No data |
Sensors | |
Accelerometer |
Broken |
Magnetometer |
No data |
Ambient Light |
No data |
Proximity |
No data |
Hall Effect |
No data |
Haptics |
No data |
Barometer |
No data |
Contributors
- MartijnBraam
- PureTryOut
- Postmarketeer
Backup the Jolla system
If you want to flash postmarketOS to your phone itself rather than an sdcard, it might be smart to first backup your system.
Backup:
- Shutdown the device and remove all cables and the battery
- Insert the battery while holding down the volume down button
- While still holding down the volume down button, press the power button till the phone shakes. If done correctly, the Jolla logo will be shown constantly in combination with the led lighting up white
- Plug in the phone to a PC with telnet installed
- On your PC, it should appear as a new network interface. Connect to it.
- If you see an USB device connected, but without network interface, try
$ sudo modprobe rndis_host
- Open a terminal and use telnet to get into the recovery
$ telnet 10.42.66.66
- A menu will be shown, press 4 and enter to get a shell. The device will ask for your devicelock code
- Insert a sdcard into your phone with a partition on it big enough to fit the system (make sure it isn't FAT32 formatted, as it can only store files up to 4GB big which might be too small). The sdcard will show up as "/dev/mmcblk1"
- Mount the sdcard partition to a directory.
# mkdir /tmp/phone-backup; mount /dev/mmcblk1p1 /tmp/phone-backup
- dd your system to an image file on the sdcard.
# dd if=/dev/mmcblk0p28 of=/tmp/phone-backup/jolla-fullBackup.img
- When the disk image is made, unmount the sdcard.
# umount /tmp/phone-backup
Restore:
- Telnet to the device like before
- Mount the sdcard to a partition again
- dd the backup image to the device
# dd if=/mnt/backup/jolla-fullBackup.img of=/dev/mmcblk0p28
- Reboot
Reverting back to stock w/o backup
To install latest stock version you need to flash an image, because the recovery image of factory reset is not updatable. A decent version can be found here.
Flashing mode
The Jolla phone uses fastboot from the Mer project rather than Android. To enter fastboot shut down the device, then
while pressing .USB connection
The USB connection works, but needs some manual configuration (as found here).
First, find the interface name using ip a
.
Then, we have to assign the device a mac address (replace the interface name with what you found from the previous command).
# ip l set enp1s0f0u3 address 12:12:12:12:12:12
After some seconds an IP address will be assigned automatically.
You can now use SSH to connect to the device on 172.16.42.1
.
Install to SD-card only
Its possible to install to sdcard and boot via fastboot without flashing.
- Install to sdcard
# pmbootstrap install --sdcard=/dev/XXX
- Enter fastboot mode
- Boot via fastboot
# pmbootstrap flasher boot --cmdline "root=/dev/mmcblk1p2 androidboot.hardware=qcom user_debug=30 ehci-hcd.park=3 maxcpus=2 zram.num_devices=2"
If you see an error Booting FAILED (remote: 'access denied. need privilege!')
, it means that the bootloader is locked. You need to unlock the bootloader by going in the recovery mode (https://talk.maemo.org/showthread.php?p=1556497 / https://jolla.zendesk.com/hc/en-us/articles/204709607-Jolla-Phone-How-to-use-Recovery-Mode):
- Turn off your Jolla device and remove all cables and the battery.
- Press and hold down the Volume Down button while re-inserting the battery.
- While still holding down the Volume key, press the Power key until Jolla vibrates.
You can now release both buttons. You have now put your device into Recovery Mode.
If you have a device lockcode, there could be an issue saying the code is incorrect even after typing the correct one (https://forum.sailfishos.org/t/jolla-recovery-v0-3-1-unlockable/8013/2) so you may need to disable the lockcode in Sailfish OS settings before unlocking the bootloader in recovery mode. If the bootloader is unlocked, it should display "Unlocked" in red on the top left when entering fastboot.
If your screen stays black after booting, it could mean that you have used an interface that is not supported: https://wiki.postmarketos.org/wiki/Category:Interface#Which_interfaces_work_where_.28and_which_interface_should_I_use.3F.29
You can reboot into fastboot again as root if reboot-mode
is installed.
# (sleep 2 && reboot-mode bootloader ) & exit
+
SIGILL in kernel log
Kernel log are flushed with these messages:
sshd(3029) send signal 4 to sshd(3029)
sshd (3029): undefined instruction: pc=4038c98c
Code: 4770 ec51 0f1e 4770 (ffb0) 0300
This is due to probing of processor capabilities in libcrypt of OpenSSL.
Its reduced by changing debug level to user_debug=30
.
This also blocks debugging with gdb
. Workaround can be found here <https://www.openssl.org/docs/faq.html#PROG17>.
Devices
Component | Model | Driver | Device | Info |
---|---|---|---|---|
Touchscreen | Synaptics S3202 | synaptics_s3202_touch | /devices/i2c-3/3-0020/input/input0
/devices/i2c-3/3-0020/input/input1 |
touch_synaptics
capkey_synaptics |
Vibration motor | pm8038 | pm8xxx-vibrator | /devices/platform/msm_ssbi.0/pm8038-core/pm8xxx-vib/input/input2 | |
Power Key | pmic8038 | pmic8xxx_pwrkey | /devices/platform/msm_ssbi.0/pm8038-core/pm8xxx-pwrkey/input/input3 | |
The Other Half Smart Cover | toh-event | /devices/virtual/input/input4 | ||
Audio | MSM Sitar | msm8930 | /devices/platform/soc-audio.0/sound/card0/input5
/devices/platform/soc-audio.0/sound/card0/input6 |
Button Jack
Headset Jack |
Accelerometer | BMA255 | bma2x2 | /devices/virtual/input/input7 | echo 1 > input7/enable
|
Magnetometer | BMM050 | bmm050 | /devices/virtual/input/input8 | |
Gyroscope | l3gd20 | l3gd20_gyr | /devices/i2c-12/12-006a/input/input9 | |
Proximity | tsl2772 | tsl277x | /devices/virtual/input/input10 | |
Ambient light | tsl2772 | tsl277x | /devices/virtual/input/input11/als_lux | echo 1 > input11/als_can_wake
|
GPIO keys | /devices/platform/gpio-keys/input/input12 | |||
Backlight | /sys/class/leds/wled/brightness | |||
LEDs | /sys/class/leds/red/brigtness
/sys/class/leds/green/brightness /sys/class/leds/blue/brightness |
Vendor Firmware
/dev/mmcblk0p25 on /persist type ext4
WCNSS_qcom_cfg.ini WCNSS_qcom_wlan_nv0.bin WCNSS_qcom_wlan_nv1.bin WCNSS_qcom_wlan_nv2.bin
/dev/mmcblk0p18 on /firmware type vfat
modem.b00 modem.b03 modem.b06 modem.b09
modem.b01 modem.b04 modem.b07 modem.b10
modem.b02 modem.b05 modem.b08 modem.mdt
modem_fw.b00 modem_fw.b03 modem_fw.b09 modem_fw.b12 modem_fw.b16 modem_fw.b25 modem_fw.b31
modem_fw.b01 modem_fw.b04 modem_fw.b10 modem_fw.b13 modem_fw.b23 modem_fw.b27 modem_fw.fli
modem_fw.b02 modem_fw.b05 modem_fw.b11 modem_fw.b15 modem_fw.b24 modem_fw.b28 modem_fw.mdt
q6.b00 q6.b04 q6.mdt
q6.b01 q6.b05
q6.b03 q6.b06
tzapps.b00 tzapps.b03
tzapps.b01 tzapps.mdt
tzapps.b02
wcnss.b00 wcnss.b04
wcnss.b01 wcnss.b05
wcnss.b02 wcnss.mdt
RPMs can't be downloaded directly, but exported from device with pkcon -vvv download . <pkg-name>
.
# rpm2archive sbj-wlan-0.2.7-1.3.6.jolla.armv7hl.rpm && tar tzvf sbj-wlan-0.2.7-1.3.6.jolla.armv7hl.rpm.tgz | grep -o " ./.*wlan[\./].*"
./lib/modules/3.4.108.20200929.1/kernel/net/wireless/wlan.ko
./system/etc/firmware/wlan/prima/
./system/etc/firmware/wlan/prima/WCNSS_cfg.dat
./system/etc/firmware/wlan/prima/WCNSS_qcom_cfg.ini -> /persist/WCNSS_qcom_cfg.ini
./system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv0.bin -> /persist/WCNSS_qcom_wlan_nv0.bin
./system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv1.bin -> /persist/WCNSS_qcom_wlan_nv1.bin
./system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv2.bin -> /persist/WCNSS_qcom_wlan_nv2.bin
# rpm2cpio ../kernel-adaptation-sbj-3.4.108.20200929.1-1.11.2.jolla.armv7hl.rpm | cpio -t | grep cfg
./lib/modules/3.4.108.20200929.1/kernel/net/wireless/cfg80211.ko
WiFi
WiFi works with firmware and the original proprietary wlan.ko
, which depends on cfg80211.ko
.
It must be activated in this order (these steps may not be necessary and could be ignored):
# echo 1 > /dev/wcnss_wlan 2>/dev/null
# sleep 1
# modprobe wlan
# echo sta > /sys/module/wlan/parameters/fwpath
You can use sudo nmtui
to connect to a Wi-Fi network (nmcli
can be used also: https://wiki.postmarketos.org/wiki/WiFi#Using_NetworkManager). You may see WiFi networks listed under 2 network interfaces, p2p0 and wlan0. The correct interface for WiFi is wlan0.
If you have problems to connect to a WiFi network with Network Manager (for example with a message "Error: Connection activation failed: (5) IP configuration could not be reserved (no available address, timeout, etc.)."), you can install dhclient
(by adding it when running pmbootstrap init
on your computer) and replace dhcp=internal
with dhcp=dhclient
below [main]
in /etc/NetworkManager/NetworkManager.conf
. Then you need to restart Network Manager with the command sudo service networkmanager restart
(solution based on https://bbs.archlinux.org/viewtopic.php?id=232833 / https://forum.salixos.org/viewtopic.php?f=30&t=7284).
Network Manager should then be connected to the WiFi network. If you still don't have access to Internet because there is no default route, you need to execute this command: sudo dhclient wlan0
.
Modem
Firmware loads, but modem can't be enabled. Might be fixable, because it works for similar samsung-i9195 (#1054). To get more features working like the modem, the phone must be ported first to the mainline kernel (https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/commit/2e30fa4281b43df769bd2546931fd63ba9857b53#note_846861351).
# apk add ofono ofono-scripts
# service ofono start
# echo 2 > /sys/devices/virtual/smdpkt/smdcntl0/open_timeout
# /usr/lib/ofono/test/enable-modem
modem and modem_fw is loaded.
pil pil0: q6: Brought out of reset
apr_tal:Q6 Is Up
diag: proc 2, msg mask update fail -12, tried 419
pil pil1: modem_fw: Brought out of reset
pil pil2: modem: Brought out of reset
Notify: smsm init
smd_pkt_open: wait on smd_pkt_dev id:0 allocation failed rc:-110
Photos
postmarketOS users that own the device
- Aa13q
- Afontain (Notes: broken screen)
- Baptx
- DylanVanAssche (Notes: Sailfish OS)
- Etam
- MartijnBraam
- Mtek89 (Notes: Running SailfishOS, but doesn't hold charge)
- PureTryOut
- Retourmy (Notes: broken SIM slot)
- Simonschmeisser (Notes: partition table gone ...)