A solution to turn your Android smartphone into a GNSS RTK receiver with a Linux distribution and RTKlib
- Trace logs llh
- Centimetric positioning on all your applications with geolocalisation
- All that can do RTKlib...
Attention, it is necessary to have an RTK base close to the acquisition area. https://centipede.fr
Smartphone
- a 64 bits smartphone / tablette.
- No need to root your device.
- USB OTG
GNSS antenna for dual-frequency reception
Required Android applications
Userland > UserLAnd is an open-source app which allows you to run several Linux distributions like Ubuntu, Debian, and Kali.
ConnectBot > ConnectBot is a powerful open-source Secure Shell (SSH) client. It allows multiple simultaneous SSH sessions, tunneling, and copy/paste with other applications.
TCPUART > This application allows you to connect an UART (Serial) USB adapter to a TCP socket, to send and receive data. this application is necessary because Userland does not yet have access to the Android usb mount point.
Optional Android applications
droidinfo > check that his smartphone is 64-bits
Lefebure > take NMEA position data from RTKlib display solution and enable android mock location.
First of all it is necessary to update the firmware of your F9P module.
-
Install U-center (Windows or Linux Wine)
- install Userland, ConnectBot and TCPUART from PlayStore
- download RTKlib-debian-rootfs_X_X.tar.gz on Android internal storage.
- Start Userland
- Go to "files system" & click +
- fill in the gaps:
- name file system: RTKlib
- user nme: rover
- password: 123456
- password vnc: 123456
- files system: Debian
- Click on Show advanced options and select the image you downloaded earlier.
- Save (top right)
- Go to "Sessions" & click +
- fill in the gaps:
- session name: rover
- files system: RTKlib:Debian
- service type: ssh
- Save (top right)
- Connect via usb the antenna to the smartphone (OTG adapter)
- Start TCPUART application:
- click on Connect
- modify port to 8080
- click on Start
- DON'T CLOSE TCPUART, come back on android home with your buton
- Start Userland
- Go to "Sessions"
- One click on rover --> RTKlib:Debian
- authorize ConnectBot to connect
- enter password 123456
- RTKlibDroid display
Paramétres actuels
------------------
Positionnement: kinematic
Mount Point: LIENSS
Rate: 1000 ms
Model: Pedestrian
Elevation: 10°
Input: tcpcli :@localhost:8080:
caster: caster.centipede.fr:2101 rtcm3
GPS : Oui
GAL : Oui
BDS : Oui
QZSS: Oui
GLO : Oui
------------------
1) Start Rover
2) Display Param
3) Modification
4) Quit
Choisir une action:
- if parameters are OK then start Rover RTKLIB: write 1 + enter
Choisir une action: 1
** rtkrcv ver.demo5 b33b2 console (h:help) **
rtk server start
rtkrcv>
- You can write
status 1
+ enter for display status
rtkrcv> status 1
ex:
Parameter : Value
rtklib version : demo5 b33b2
rtk server thread : 335542016
rtk server state : run
processing cycle (ms) : 10
positioning mode : kinematic
frequencies : L1+L2
accumulated time to run : 00:06:25.7
cpu time for a cycle (ms) : 25
missing obs data count : 0
bytes in input buffer : 0,0
# of input data rover : obs(1929),nav(30),gnav(7),ion(174),sbs(0),pos(0),dgps(0),ssr(0),err(0)
# of input data base : obs(384),nav(34),gnav(9),ion(0),sbs(0),pos(26),dgps(0),ssr(0),err(0)
# of input data corr : obs(0),nav(0),gnav(0),ion(0),sbs(0),pos(0),dgps(0),ssr(0),err(0)
# of rtcm messages rover :
# of rtcm messages base : 1004(385),1005(13),1006(13),1012(385),1019(156),1020(221),1042(130),1045(646),1046(646),1077(385),1087(385),1097(385),1127(384)
# of rtcm messages corr :
solution status : fix
time of receiver clock rover: 2020/02/03 14:56:19.199867116
time sys offset (ns) : 49.277,-4.175,41.798,0.000
solution interval (s) : 0.200
age of differential (s) : 2.200
ratio for ar validation : 3.113
# of satellites rover : 36
# of satellites base : 41
# of valid satellites : 20
GDOP/PDOP/HDOP/VDOP : 1.4,1.3,0.7,1.0
# of real estimated states : 9
# of all estimated states : 353
pos xyz single (m) rover : 4438272.095,-79653.936,4564680.439
pos llh single (deg,m) rover: 45.99214112,-1.02818042,55.256
vel enu (m/s) rover : -0.003,-0.005,0.003
pos xyz float (m) rover : 4438271.878,-79653.347,4564680.174
pos xyz float std (m) rover : 0.014,0.018,0.009
pos xyz fixed (m) rover : 4438272.095,-79653.936,4564680.439
pos xyz fixed std (m) rover : 0.007,0.004,0.005
pos xyz (m) base : 4426044.934,-89425.964,4576296.255
pos llh (deg,m) base : 46.14264305,-1.15747430,67.958
# of average single pos base: 0
ant type rover :
ant delta rover : 0.000 0.000 0.000
ant type base :
ant delta base : 0.000 0.000 0.000
vel enu (m/s) base : 0.000,0.000,0.000
baseline length float (m) : 19491.935
baseline length fixed (m) : 19491.618
last time mark : -
receiver time mark count : 0
rtklib time mark count : 0
NMEA is enable at http://localhost:9000
When a session start logs are writings on a share directory available on android : Storage/Android/data/tech.ula/files/storage/gnss/solution
Choisir une action: 3
1) RTK setting 3) Caster Connexion 5) Return
2) Antenna Connexion 4) Satellites
Modifier:1
1) Positionning Mode 3) Elevation 5) Return
2) Model 4) Rate
Modifier:1
Change 1: kinematic to:
3 : static
2 : single
1 : kinematic
Modifier:2
Change Model: 3 : Pedestrian to:
0 : Portable
2 : Stationary
3 : Pedestrian
4 : Automotive
5 : Sea
6 : Airborne <1g
7 : Airborne <2g
8 : Airborne <3g
Modifier:3
Change elevation mask: 10° to:
Modifier:4
change Rate: 200 ms to:
Modifier:2
1) RCV connection
2) Return
Modifier:1
Change receiver connection: tcpcli to:
2 : serial
1 : tcpcli
- default parameters tcp:
:@localhost:8080:
+ llh logs outpath/storage/internal/gnss/solutions/
- Use serial if you want to run RTKlibDroid on a PC, default parameters serial:
ttyACM0:115200:8:n:1:off
+ llh logs outpath./solution/
Modifier:3
1) Caster Mount Point 3) Caster Port 5) Caster Password
2) Caster Adresse 4) Caster Username 6) Return
Modifier:1
change Mount Point: LIENSS to:
Modifier:2
change caster adrss: caster.centipede.fr to:
Modifier:3
change caster port: 2101 to:
Modifier:4
!!!Paramètre non intégré!!!
change caster username: to:
Modifier:5
!!!Paramètre non intégré!!!
change caster password: to:
Modifier:4
1) GPS
2) GAL
3) GLO
4) BDS
5) QZSS
6) Return
Modifier:1
GPS activ: Oui to:
Non : 0
Oui : 1
Modifier:2
GALILEO activ: Oui to:
Non : 0
Oui : 1
Modifier:3
GLONASS activ: Oui to:
Non : 0
Oui : 1
Modifier:4
BEIDOU activ: Oui to:
Non : 0
Oui : 1
Modifier:5
QZSS activ: Oui to:
Non : 0
Oui : 1
You can edit conf files with nano, they are here:
./var/rtkrcv_var.txt
./var/F9P_var.cmd
You can use Lefebure apk to see status and use android mock location. ...