Jolla

Jolla is a mobile Linux phone based on Sailfish OS and Mer.

Developing for Jolla
To develop applications for Jolla, you need to download the SailFish SDK.

Features possibly to be added later

 * improved clock sync (automatic update)
 * notification scrolling
 * Landscape browsing
 * USB Host mode
 * 4G support
 * MMS support
 * hopefully NFS mounts (maybe via app)
 * caldav/carddav support
 * navigation
 * file manager (that can find SD)
 * bluetooth pairing with the help of NFC
 * harbour public list of apps
 * harbour user reviews of apps
 * harbour real data
 * harbour list of apps being worked on, maybe, visible for app devs only? so that other devs know something is being worked on, so they don't have to do it themselves?
 * notes should be similar to other apps and have same cover icons: new + update/sync
 * better android
 * security for apps

Interesting native apps possibly in the works

 * NFCKeyring
 * MOSH (by tbr)
 * CityBike'me (by TheBootroo)
 * Billboard (by thp)
 * Puzzle Master (by Venemo)
 * IRC Chatter (by Venemo)
 * speedcrunch
 * Morzyn
 * SOWatch (originally by Javispedro, porting attempt by tbr)

try to get beta updates and fail to get devmode back on again

 * 1) log in with x@sales with any password, it fails
 * 2) turn back devmode again

try to get developer access in devmode

 * try 'ssu domain sales'

See pirate pad for more
http://piratepad.net/JollaFAQ

How to connect to SSH over usb connection from PC
the usb is either usb_storage or usb_net


 * 1) enable developer mode
 * 2) enable SSH (it's openssh, not dropbear)
 * 3) set password
 * 4) goto usb settings
 * 5) change that to developer mode
 * 6) reconnect usb cable
 * 7) you should see the ip address of the device on the UI
 * 8) you should be able to ssh to that address from PC (set an ip address first)

optional:
 * 1) copy ssh public key to /home/nemo/.ssh/authorized_keys
 * 2) ssh-copy-id nemo@192.168.2.15
 * 3) copy ssh public key to /root/.ssh/authorized_keys
 * 4) devel-su
 * 5) copy -a /home/nemo/.ssh /root
 * 6) chown root:root -R /root/.ssh

How is The Other Half connecting to the Phone?

 * see http://talk.maemo.org/showpost.php?p=1390512&postcount=174 for possible pins
 * NFC (a unique ID)
 * I²C (bandwidth/pins unknown as of yet)
 * 1,8V I2C (400kHz default setting in kernel)
 * Other half expected to work in slave mode, phone is master
 * Dedicated INT GPIO (1,8V) for interrupts
 * power in (for charging)
 * power out (for using battery)
 * 3,3V VDD (max 300mA, preferrably < 150mA to avoid thermal issues)

and of course also
 * Bluetooth
 * Wifi
 * USB

Where do I put .apk files

 * 1) download from web and choose install

or


 * 1) put apk into ~/ (home directory)
 * 2) launch it with "xdg-open `pwd`/${app}.apk" (where $app is your app name)

or other not encouraged way :


 * 1) go into developer mode
 * 2) put the .apk file into /data/app/ (chown to root)
 * 3) if icon doesn't show up automagically "systemctl restart apkd.service" (or reboot device)

How to install the Google Play Store
(From )


 * 1) Enable Jolla Developer Mode and allow SSH-connection.
 * 2) Download http://goo.im/gapps/gapps-jb-20121011-signed.zip and extract it.
 * 3) Plug your Jolla with USB to computer in normal mode.
 * 4) Copy system-folder from your extract files to Jolla.
 * 5) Open SSH-connection to your phone and login.
 * 6) Write "devel-su" and press enter. After that, write your password.
 * 7) Write command: rsync -av --ignore-existing /home/nemo/system /opt/alien
 * 8) Reboot phone
 * 9) Install Google Play services to Jolla
 * 10) Install Google Play Store to Jolla
 * 11) Start Play Store and do updates.

How is the software structured

 * 1) jolla hw adaptation for device
 * 2) mer
 * 3) nemo
 * 4) sailfishos middle layer
 * 5) sailfishos UI
 * 6) native apps or android app via emulator or html5 apps via browser(gecko engine)

What kind of new software is used

 * kernel 3.4
 * btrfs as rootfs
 * ext4 mounts
 * systemd with journal
 * pulseaudio
 * wayland
 * qt5.1
 * libhybris (load Android bionic libraries and HAL in a glibc system)

Jolla Hardware
This is a basic overview of the hardware subsystems of the Jolla phone. Please populate the items. See http://wiki.maemo.org/N900_Hardware_Subsystems for one suggested style.


 * Audio
 * Video
 * USB
 * User interaction
 * Touchscreen
 * Accelerometer
 * GPS
 * Magnetometer
 * Gyroscope
 * Switches
 * Proximity Sensor
 * Light sensor
 * Storage
 * On-board 16 GB eMMC
 * MicroSD slot (with ~15M/s write performance, so Class 10)
 * Power managment
 * Battery
 * Charge meter
 * Phone
 * Phone module
 * SIM
 * CPU
 * Core System on Chip
 * RAM
 * Flash

Thoughts on security

 * app security
 * run all apps as regular user
 * put every app in a cgroup container?
 * have a list of policykit defined rules for system/hardware things
 * developer mode dependency? (ie: sudo root access? for certain things)
 * on harbour: app creator can ask for extra policykit defined rules
 * on harbour: list the username you wish to run your app as (does not have to be unique if there's a specific reason for that)
 * on harbour: defined policykit rules that app exports/handles for other apps to use functionality
 * on harbour: requested limits/priority for cgroup (nice/realtime)
 * on harbour: developer to be reachable for bugs/update request(eg; security reasons)? (estimated timeframe of app update? does the dev want to be warned? willingness to keep app updated? app take-over? abandonware?)
 * policy on how to handle unsecure apps? (lock down cgroup/user/...? warn user? ...)

Thoughts on app development

 * developer to be reachable for bugs/update request(eg; security reasons)? (estimated timeframe of app update? does the dev want to be warned? willingness to keep app updated? app take-over? abandonware?)
 * each app to define services (for other apps) via API on some versioning rules (add to API means new minor release, remove/change from API means new major release, etc...)
 * install requirements to be similar (rpm spec requires/suggests)
 * tasks/bundled rpms? (referring to optional suggests)

this helps documentation and working on apps compatible with each other...

new version major of any app can then be used to email dependant app maintainer to check and/or update their app for compatibility

LINKS

 * https://plus.google.com/+MikkoAhlroth/posts/ZQFRBfCjRsy