Jolla

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

I have an issue/idea/problem aka Where to get help

 * 1) is it the software? No or doubt --> email care@jolla.com
 * 2) check FAQs at http://care.jolla.com/ (or below)
 * 3) do you have a cool idea/app and wish to work on it yourself? Yes --> spread idea in #jollamobile on IRC, get help via sailfish ML
 * 4) is it android compatibility? Yes --> file bug at to be created bugtracker that will be passed on to alien dalvik by Jolla employees
 * 5) is it non-jolla apps? --> maybe give app review, or contact app maker
 * 6) in doubt how to ask questions below --> ask in #jollamobile on IRC
 * 7) is it sailfish UI or jolla apps (basic UI structure)? Yes --> file bug at to be created bugtracker that will be passed onto Jolla employees
 * 8) is it nemo (higher level basic OS (non UI/mobile specific))? Yes --> file bug on nemo tracker or mail the mailing list
 * 9) is it mer (lower level basic OS (non UI))? Yes --> file bug on mer tracker, or mail the mer mailing list
 * 10) is it kernel? Yes --> get help on LKML (or ask in #jollamobile on IRC)
 * 11) anything else? ask on IRC in #jollamobile or file bug at to be created bugtracker

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

Motto of Jolla devs: Don't wait for us, do something and we'll follow you.

'Then that is what we'll do!'

have interesting ideas?: add it and yourself to section TODO list below

working on some apps? add it and yourself to section apps below

list of bugs for sailfish goes here (bugtracker): kernel: LKML mer: nemomobile: nemomobile-packages: sailfish:possibly to be created with nemo or just sailfish-devel ML alien dalvik (android): donno yet

questions on development?: irc://freenode.net/#jollamobile ML: devel@lists.sailfishos.org

forum?: at TMO : http://talk.maemo.org/forumdisplay.php?f=56

git: http://github.com/nemomobile/ http://github.com/nemomobile-packages/ http://github.com/mer-packages/

Features possibly to be added later (aka TODO list)

 * hopefully NFS mounts (maybe via app) -- AL13N
 * BlueTooth pairing with the help of NFC
 * bluetooth GPS pairing (overrides and turn off own GPS sensors)
 * bluetooth car audio (parrot and the likes)
 * better android support
 * qwerty TOH
 * getting qcom open source driver to work
 * security for apps -- AL13N

only jolla devs:
 * improved clock sync (automatic update) [FIXED by Jolla]
 * notification scrolling -- Jolla
 * Landscape browsing -- Jolla
 * 4G support -- Jolla
 * USB Host mode
 * MMS support
 * caldav/carddav support
 * navigation -- apello via Jolla
 * file manager (that can find SD) -- Jolla
 * advanced locale settings (english, but with metric and € and things like that)
 * notes should be similar to other apps and have same cover icons: new + update/sync

harbour stuff:
 * 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?

Interesting native apps possibly in the works
(see also the not-up-to-date https://wiki.merproject.org/wiki/Sailfish#App_List )
 * NFCKeyring
 * MOSH (by tbr)
 * [ACCEPTED] CityBike'me - an app to use JCDecaux self-service bike system in many cities (by TheBootroo)
 * Feed'me - a Feedly client with offline mode (by TheBootroo)
 * Staq'me - a StackExchange client (by TheBootroo)
 * Units converter (by BlueMagma)
 * Billboard (by thp)
 * [ACCEPTED] Puzzle Master (by Venemo)
 * IRC Chatter (by Venemo)
 * [ACCEPTED] speedcrunch (by qwazix)
 * [ACCEPTED] Morzyn (by yoktobit)
 * SOWatch (originally by Javispedro, porting attempt by tbr)
 * Network monitor app (by Winfried)
 * Whatsapp (by coderus) Mitakuuluu
 * QuickBar (GiuliettaSW)
 * BitPurse (by Khertan)
 * ownNotes - an OwnCloud Notes app (by Khertan)
 * two paned file manager (by Martin)
 * meepasswords (by Ruediger)
 * qtodo (by Ruediger)
 * Flashlight (by Artem) (waiting on Torch API finalization)
 * [ACCEPTED] HelloWorld Pro (by Artem)
 * [ACCEPTED] Wikipedia (by Artem)
 * Mæp (by Till Harbuam, ported by Damien Caliste), a tiled maps viewer for different sources including Open Street Map, Google Maps or Virtual Earth. GPS positioning and tracks are provided, plus location search and information. More informartion on Maemo forums.
 * modRana flexible navigation system (by Martin)
 * Mieru offline manga (by Martin)
 * comic book reader (by Martin)
 * Currency Converter (by Thomas Tanghus)
 * Kitchen Timer (by Thomas Tanghus)
 * KeepassX (by Marko)
 * [ACCEPTED] MPD (by Hendrik) (update coming)
 * Quando Parte, an Italian train delay monitor (by Luciano Montanaro)
 * SailSoma (by Andrea & Damien)
 * Rockwatch (by mike)
 * [ACCEPTED] SameGame (by Frye)
 * Quando Parte (by Luciano)
 * MeeCast (by Vlad)
 * MeeRun
 * redak (by --RzR (talk) 02:21, 2 January 2014 (UTC)) (WIP but low priority have no devices to test yet)
 * CuteSpotify made by Michael Sheldon (by mattiviljanen)

Cool Ideas, but No Time aka CINT

 * Openstreetmap app using some kind of RCS torrent protocol extension
 * wardriving app with aircrack (also injection)
 * AGTL (Automatic Geocaching Tool for Linux) port
 * Battery graph app

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

[Note for OS X users on SSH over USB connection: You need to install HORNDIS in order to do the above. Get it from http://joshuawise.com/horndis#available_versions Direct link:http://joshuawise.com/downloads/HoRNDIS-rel5.pkg - the download is tiny, only takes a sec. More details here: http://flyingsheeponsailfish.blogspot.dk/2014/01/connecting-to-jolla-via-ssh-over-usb.html]

[General note on SSH over USB connection: If you are on a system where it doesn't work, check if there is an implementation of RNDIS (Microsoft proprietary) on your system. This is what is needed in order connect; if it is not there, try to see if you can find and install one.]

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): apparently it's open, and it has some room left (also as long as you have TOH near phone, they cannot track you!): http://www.reddit.com/r/Jolla/comments/1t9xtv/jolla_white_the_other_half_nfc_contents/
 * 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
Download with the web browser, tap the apk file in the transfers view (Settings) or install any package from the command line:

apkd-install /path/to/apkfile.apk

Do not put the apk file into  directly, apkd has to be used to make sure the new apk file is properly installed and registered.

To remove apk files again, use:

apkd-uninstall apkfile.apk

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.
 * 12) Paid apps might need a small workaround, as the installer may crash in the middle of the process
 * 13) Open SSH-connection to your phone and login.
 * 14) Write "ls -l /data/app-private/vmdl*.tmp" and press enter.
 * 15) See what the latest file is, and write "mv /data/app-private/vmdlXXX.tmp  yourapplication.apk"
 * 16) Write "apkd-install yourapplication.apk"

How do I enable USB tethering?

 * 1) Enable Jolla Developer Mode
 * 2) Configure your PC for RNDIS networking (Linux and Windows Vista and later should have it by default, MacOS needs  )
 * 3) Configure manual IP address on PC, address in 192.168.2.x network (e.g. 192.168.2.1), router 192.168.2.15, valid DNS server (e.g. 8.8.8.8)
 * 4) On Jolla, run
 * 5) echo 1 > /proc/sys/net/ipv4/ip_forward
 * 6) /sbin/iptables -t nat -A POSTROUTING -o rmnet0 -j MASQUERADE
 * 7) /sbin/iptables -A FORWARD -i rmnet0 -o rndis0 -m state --state RELATED,ESTABLISHED -j ACCEPT
 * 8) /sbin/iptables -A FORWARD -i rndis0 -o rmnet0 -j ACCEPT

How do I enable WiFi tethering?

 * 1) Install connman-test package (pkcon install connman-test)
 * 2) Enable WiFi in settings (otherwise you get a dbus.exceptions.DBusException: net.connman.Error.PermissionDenied: Permission denied)
 * 3) Run /usr/lib/connman/test/enable-tethering wifi SSID passphrase

Passphrase must be at least 8 characters, or you will get a net.connman.Error.PassphraseRequired: Passphrase required error.

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. Some specifics from a teardown can be found at.


 * 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 ( *#*#310#*#* and there's some battery related tests/measurements )
 * Charge meter
 * Phone
 * Phone module: There appear to be at least two RF amplifiers; one is an ACPM-7251 manufactured by "Avago Technologies".
 * SIM
 * CPU
 * Core System on Chip
 * RAM
 * Flash
 * Networking
 * Bluetooth
 * Wifi (can do injection, donno about master mode yet)
 * USB
 * NFC: PN544 manufactured by NXP Semiconductors.

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

purpose

 * bugs for sailfish UI
 * bugs for Jolla apps
 * bugs for alien dalvik
 * bugs for harbour

place
tbr will set up a place for it on Devaamo's (no-profit pro-oss Tampere-area association)

Jolla support (?)

 * w00t
 * special
 * (maybe lpotter, though he doesn't like Bugtracker and prefers mailinglist)

Wishlist

 * separate projects for the purpose above
 * english language is fine
 * some kind of tagging to make sure it's triaged
 * daily mail with the newly triaged bug reports and also the top 10 in priority of open bugs (unassigned?)
 * everyone can make it
 * lots of community helpers to keep spam to a low and to keep the devs working on dev stuff and lose as less time as possible on managing bugs :-)
 * if preferable by Jolla employees, a separate mailinglist could possibly be provided to send each bug to (bugs@sailfishos.org) ?

LINKS

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