gpslogger icon indicating copy to clipboard operation
gpslogger copied to clipboard

Uploading log files fails on old 4.1.2 android phone

Open Manuelgit1 opened this issue 2 years ago • 24 comments

I intend to use an old Samsung S3 android phone as a GPS tracker. The tracking itself works and the GPX-log file is written locally. But I struggle to transfer the files to the net. I have tried using email and alternatively FTP. The phone is running android 4.1.2 after a factory reset, unrooted, with no google play store enabled, wifi and mobile internet connectivity are working, and the phone has no other purpose other than the GPS tracking.

The issue seemed to be (partially) caused by missing certificates. (I honestly wouldn't care, password protection are enough for my taste.) And it seems like nowadays all SMTP-sending requires secure authentication, I tried it with Gmail and a different provider. The error when trying to send stated something about a bountycastle certificate error.

So I transferred one of those root CA2 certificates via usb to the phone and installed it there with the built-in file manager. Now when I tap "Validate SSL Certificate" in the GPS logger app it says "Success The certicate is valid". But the test mail sending still fails saying "Could not send email null QUIT". Account credentials have been double checked. Trying instead over FTP failed with a "ECONNREFUSED (Connection refused) error no matter which settings I tried.

So I am unsure if some certificate stuff is still the cause of the issue and the inquiry may not be the main scope of the app but without uploading capability the whole app becomes useless to me.

So any help or feasable workaround would be appreciated. Thanks!

Manuelgit1 avatar Jun 05 '22 07:06 Manuelgit1

I'm a bit surprised that the app is working on Android 4.1, I've never tested it there. What version are you running?

The 'Could not send email null QUIT' error sounds like it's actually connecting to the SMTP server, but something else is going wrong. I'd need to see the actual errors which will include the extra detail/stack trace that comes with it. You can try recording a debug log, instructions here: https://gpslogger.app/#troubleshooting

Once you have the log, you can remove sensitive information from it (like the username email address) and either post it here, or email it to me - gpslogger at mendhak.com

mendhak avatar Jun 05 '22 17:06 mendhak

Seeing how many open issues there are, I am also surprised to see a reply ;-) Thank you! Android version is 4.1.2, phone model is GT-I8190N, Kernel 3.0.31-1546175

So I turned on the logging switch and pushed the test email button. Here it is, I hope you can make sense of it, perhaps it is just a wrong setting?

00:27:50 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 00:27:50 DEBUG GpsMainActivity$10.onServiceConnected:1382 - Connected to GPSLoggingService from MainActivity 00:27:51 DEBUG GpsLoggingService.startLogging:386 - . 00:27:51 DEBUG GpsLoggingService.setupAutoSendTimers:304 - Setting up autosend timers. Auto Send Enabled - false, Auto Send Delay - 60.0 00:27:51 INFO GpsLoggingService.resetCurrentFileName:775 - Filename: 20220606 00:27:51 INFO GpsLoggingService.notifyClientsStarted:429 - Started 00:27:51 DEBUG GpsLoggingService.notifyByBroadcast:415 - Sending a custom broadcast 00:27:51 INFO GpsLoggingService.startGpsManager:620 - Requesting GPS location updates 00:27:51 DEBUG GpsSimpleViewFragment.onWaitingForLocation:470 - true 00:27:51 INFO GeneralLocationListener.onGpsStatusChanged:141 - GPS started, waiting for fix 00:27:52 DEBUG GeneralLocationListener.onGpsStatusChanged:136 - 0 satellites 00:27:53 DEBUG GpsLoggingService.stopLogging:446 - . 00:27:53 DEBUG GpsLoggingService.stopGpsManager:710 - Removing towerLocationManager updates 00:27:53 DEBUG GpsLoggingService.stopGpsManager:715 - Removing gpsLocationManager updates 00:27:53 INFO GpsLoggingService.notifyClientsStarted:429 - Stopped 00:27:53 DEBUG GpsLoggingService.notifyByBroadcast:415 - Sending a custom broadcast 00:27:53 DEBUG GpsSimpleViewFragment.onWaitingForLocation:470 - false 00:27:58 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 00:27:58 WARN GpsLoggingService.onDestroy:145 - GpsLoggingService is being destroyed by Android OS. 00:27:58 DEBUG Systems.setLocale:136 - Setting language to en 00:27:59 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 00:28:05 DEBUG AutoEmailJob.onRun:127 - Connecting to SMTP Server 00:28:15 ERROR AutoEmailJob.onRun:203 - Could not send email java.net.SocketTimeoutException: null at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491) ~[na:0.0] at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) ~[na:0.0] at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) ~[na:0.0] at java.io.InputStreamReader.read(InputStreamReader.java:244) ~[na:0.0] at java.io.BufferedReader.fillBuf(BufferedReader.java:130) ~[na:0.0] at java.io.BufferedReader.read(BufferedReader.java:238) ~[na:0.0] at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58) ~[na:0.0] at org.apache.commons.net.smtp.SMTP.__getReply(SMTP.java:195) ~[na:0.0] at org.apache.commons.net.smtp.SMTP.connectAction(SMTP.java:267) ~[na:0.0] at org.apache.commons.net.smtp.SMTPSClient.connectAction(SMTPSClient.java:173) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:189) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.email.AutoEmailJob.onRun(AutoEmailJob.java:128) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 00:28:15 DEBUG AutoEmailJob$1.protocolCommandSent:108 - QUIT 00:28:15 DEBUG GpsMainActivity.onEventMainThread:1487 - Auto Email Event completed, success: false 00:28:15 ERROR GpsMainActivity.onEventMainThread:1491 - Email-Could not upload the file 00:28:24 DEBUG CertificateValidationWorkflow.run:63 - Beginning certificate validation - will connect directly to smtp.gmail.com port 465 00:28:24 DEBUG CertificateValidationWorkflow.run:66 - Trying handshake first in case the socket is SSL/TLS only 00:28:24 DEBUG Networks.getKnownServersStore:56 - Getting local truststore - /storage/sdcard0/Android/data/com.mendhak.gpslogger/files/knownservers.bks 00:28:24 DEBUG CertificateValidationWorkflow.connectToSSLSocket:176 - Starting handshake... 00:28:24 DEBUG LocalX509TrustManager.isKnownServer:144 - Checking for certificate - HashCode: 6246591, Subject: CN=smtp.gmail.com, in keystore: false 00:28:27 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 00:28:28 DEBUG GpsMainActivity$10.onServiceConnected:1382 - Connected to GPSLoggingService from MainActivity 00:28:29 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 00:28:29 WARN GpsLoggingService.onDestroy:145 - GpsLoggingService is being destroyed by Android OS. 00:28:30 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service

And then a log extract from the FTP attempt (domain name redacted):

00:34:32 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:REDACTED _IP(port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 00:34:32 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 00:34:32 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 00:34:32 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 00:34:32 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 00:34:35 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile

Manuelgit1 avatar Jun 05 '22 23:06 Manuelgit1

Yeah I'm still around and doing a little development but not super active. I do need to clean up some issues that I'll never address.

So the main error indicated is socket timeout. This can be either a client problem (phone) or server problem. If the validate certificate step worked, then it must mean something is listening. What you could try is toggling that 'implicit ssl' option too to see if it helps then try sending a test email again.

Along similar lines for the FTP option, try toggling the FTPS, Implicit, and SSL/TLS options. This part:

failed to connect to ftp.DOMAINNAME/2001:608:

It's almost like it's trying to connect over ipv6 and I wonder if that has anything to do with the problem too

mendhak avatar Jun 06 '22 06:06 mendhak

Regarding IPv6: I can visit websites ok in chrome with the device. Also checked a ipv6 checker site and everything showed green. So that seems to be fine, I guess.

I did what you wrote, here is the log below (DOMAINNAME redacted). It still fails to connect.

E-MAIL STARTS HERE

16:34:34 DEBUG AppSettings.onCreate:47 - SLF4J logging configured 16:34:34 DEBUG AppSettings.onCreate:51 - EventBus configured 16:34:35 DEBUG AppSettings.onCreate:62 - Job Queue configured 16:34:35 INFO StartupReceiver.onReceive:41 - Start on bootup - false 16:34:35 DEBUG Systems.setLocale:136 - Setting language to en 16:34:36 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 16:34:36 DEBUG Systems.hasUserGrantedPermission:175 - Permission android.permission.ACCESS_COARSE_LOCATION : true 16:34:36 DEBUG Systems.hasUserGrantedPermission:175 - Permission android.permission.ACCESS_FINE_LOCATION : true 16:34:36 DEBUG Systems.hasUserGrantedPermission:175 - Permission android.permission.WRITE_EXTERNAL_STORAGE : true 16:34:36 DEBUG Systems.hasUserGrantedPermission:175 - Permission android.permission.READ_EXTERNAL_STORAGE : true 16:34:36 DEBUG GpsMainActivity.onCreate:135 - Permission check - OK 16:34:37 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 16:34:39 DEBUG GpsMainActivity$10.onServiceConnected:1382 - Connected to GPSLoggingService from MainActivity 16:34:50 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 16:34:50 WARN GpsLoggingService.onDestroy:145 - GpsLoggingService is being destroyed by Android OS. 16:34:50 DEBUG Systems.setLocale:136 - Setting language to en 16:34:51 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 16:34:54 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 16:34:55 DEBUG GpsMainActivity$10.onServiceConnected:1382 - Connected to GPSLoggingService from MainActivity 16:35:01 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 16:35:01 WARN GpsLoggingService.onDestroy:145 - GpsLoggingService is being destroyed by Android OS. 16:35:01 DEBUG Systems.setLocale:136 - Setting language to en 16:35:02 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 16:35:17 DEBUG AutoEmailJob.onRun:127 - Connecting to SMTP Server 16:35:18 DEBUG AutoEmailJob.onRun:134 - Checking TLS... 16:35:18 DEBUG Networks.getKnownServersStore:56 - Getting local truststore - /storage/sdcard0/Android/data/com.mendhak.gpslogger/files/knownservers.bks 16:35:19 ERROR AutoEmailJob.onRun:203 - Could not send email java.lang.Exception: Permanent SMTP error 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials fi26-20020a170906da1a00b00707d11fd421sm12102415ejb.107 - gsmtp

at com.mendhak.gpslogger.senders.email.AutoEmailJob.checkReply(AutoEmailJob.java:263) ~[na:0.0]
at com.mendhak.gpslogger.senders.email.AutoEmailJob.onRun(AutoEmailJob.java:142) ~[na:0.0]
at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0]
at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0]
at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0]
at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0]
at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0]
at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0]
at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0]
at java.lang.Thread.run(Thread.java:856) ~[na:0.0]

16:35:19 DEBUG GpsMainActivity.onEventMainThread:1487 - Auto Email Event completed, success: false 16:35:19 ERROR GpsMainActivity.onEventMainThread:1491 - Email-Could not upload the file 16:35:42 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 16:35:42 DEBUG GpsMainActivity$10.onServiceConnected:1382 - Connected to GPSLoggingService from MainActivity 16:35:49 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service 16:35:49 WARN GpsLoggingService.onDestroy:145 - GpsLoggingService is being destroyed by Android OS. 16:35:49 DEBUG Systems.setLocale:136 - Setting language to en 16:35:49 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1421 - Stopping the service


FTP STARTS HERE

16:36:02 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:DOMAINNAME (port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 16:36:02 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 16:36:02 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 16:36:02 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 16:36:02 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 16:36:23 DEBUG Networks.getKnownServersStore:56 - Getting local truststore - /storage/sdcard0/Android/data/com.mendhak.gpslogger/files/knownservers.bks 16:36:23 DEBUG Networks.getKnownServersStore:56 - Getting local truststore - /storage/sdcard0/Android/data/com.mendhak.gpslogger/files/knownservers.bks 16:36:23 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:DOMAINNAME (port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 16:36:23 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTPSClient.sendCommand(FTPSClient.java:568) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 16:36:23 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 16:36:23 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 16:36:23 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 16:36:29 DEBUG Networks.getKnownServersStore:56 - Getting local truststore - /storage/sdcard0/Android/data/com.mendhak.gpslogger/files/knownservers.bks 16:36:29 DEBUG Networks.getKnownServersStore:56 - Getting local truststore - /storage/sdcard0/Android/data/com.mendhak.gpslogger/files/knownservers.bks 16:36:29 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:DOMAINNAME (port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 16:36:29 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTPSClient.sendCommand(FTPSClient.java:568) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 16:36:29 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 16:36:29 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 16:36:29 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 16:36:39 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:DOMAINNAME (port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 16:36:39 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 16:36:39 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 16:36:39 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 16:36:39 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 16:36:44 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:DOMAINNAME (port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 16:36:44 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 16:36:44 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 16:36:44 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 16:36:44 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 16:36:49 ERROR FtpJob.upload:178 - Could not connect or upload to FTP server. java.net.ConnectException: failed to connect to ftp.DOMAINNAME/2001:608:DOMAINNAME (port 21) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:224) ~[na:0.0] at libcore.io.IoBridge.connectErrno(IoBridge.java:161) ~[na:0.0] at libcore.io.IoBridge.connect(IoBridge.java:112) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) ~[na:0.0] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) ~[na:0.0] at java.net.Socket.connect(Socket.java:842) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:188) ~[na:0.0] at org.apache.commons.net.SocketClient.connect(SocketClient.java:209) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:124) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208) ~[na:0.0] ... 17 common frames omitted 16:36:49 ERROR FtpJob.upload:192 - Could not logout or disconnect java.io.IOException: Connection is not open at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:494) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:628) ~[na:0.0] at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:602) ~[na:0.0] at org.apache.commons.net.ftp.FTP.quit(FTP.java:884) ~[na:0.0] at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:1151) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.upload(FtpJob.java:182) ~[na:0.0] at com.mendhak.gpslogger.senders.ftp.FtpJob.onRun(FtpJob.java:247) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] 16:36:49 DEBUG GpsMainActivity.onEventMainThread:1535 - FTP Event completed, success: false 16:36:49 ERROR GpsMainActivity.onEventMainThread:1539 - FTP-Could not upload the file 16:36:49 DEBUG FtpFragment.onEventMainThread:219 - FTP Event completed, success: false 16:36:52 DEBUG GpsMainActivity.populateProfilesList:882 - Current profile:Default Profile 16:36:52 DEBUG GpsMainActivity$10.onServiceConnected:1382 - Connected to GPSLoggingService from MainActivity

Manuelgit1 avatar Jun 10 '22 16:06 Manuelgit1

oh I have the concern that the issue may be caused by the fact that google turned off the "less secure app" option a few weeks ago.

Manuelgit1 avatar Jun 10 '22 16:06 Manuelgit1

Yes the email one is quite apparent. It's definitely connecting, just not accepting the credentials. GMail doesn't allow regular username and password, you have to generate a new password via that 'less secure app' option and that should normally work.

The FTP one isn't obvious. Connection refused means it's not even able to reach the target FTP server (ftp.domainname) on that port (21). I can't tell what's going wrong here, it's not even getting to the certificate validation step.

Is that server and port combination correct? You can try verifying by using another FTP client and connecting to that server/port combo, and see what happens.

If you are familiar with commandline and have nmap or netcat installed, you can also test the port using

nc -v -w5 -z ftp.domainname 21 

For example

$ nc -v -w5 -z ftp.ubuntu.com 21
Connection to ftp.ubuntu.com 21 port [tcp/ftp] succeeded!

mendhak avatar Jun 11 '22 10:06 mendhak

The connectivity issues seems to be resolved, at least for FTP. Turned out I had connected the phone with a Wi-Fi that has FTP ports blocked. Sorry about that :-D

Now that I have the log data on my FTP, I want to have it visualised on a map and access that visulisation with a different android phone. Seems like quite a parsing headache... So in the GPSLogger App I tried using the Openstreetmap option instead but it fails with another error. It appears older android versions suffer from broken SSL implementation: https://stackoverflow.com/questions/29916962/javax-net-ssl-sslhandshakeexception-javax-net-ssl-sslprotocolexception-ssl-han

So overall, do you have a simple proposal how to reach my goal without using the google play store? I could install another app through direct APKs if necessary.

Manuelgit1 avatar Jun 15 '22 20:06 Manuelgit1

I see so FTP was a local firewall issue. Good that's resolved.

So on OSM unfortunately I don't know when the OSM integration broke, I'd suspect it has something to do with SSL/TLS protocols changing somewhere on the OSM side as many sites are moving to newer versions of TLS and older OSes are unable to handle it. But the biggest problem for me is the emulator does not produce the same error at all. Instead I get "ENETUNREACH (Network is unreachable)" which isn't the same thing. I've still tried a whole heap of workarounds in the code, and tried out every suggestion, from:

https://stackoverflow.com/questions/49980508/okhttp-sslhandshakeexception-ssl-handshake-aborted-failure-in-ssl-library-a-pro https://stackoverflow.com/questions/29916962/javax-net-ssl-sslhandshakeexception-javax-net-ssl-sslprotocolexception-ssl-han/50640113#50640113 https://github.com/square/okhttp/issues/4378

But none of them work. So it seems on pre-Android 5, GPSLogger's OpenStreetMap integration is broken. I would need to completely reimplement OSM functionality using a different set of libraries just to cater to pre-Android 5, which is too large a task.

On visualization. Yes ideally OSM would have been the best place to do it. Somehow or another you'd have to get the GPX file to a location where a map software can access it.

NextCloud has a map feature which can probably read off GPX files, I've never tried it.

mendhak avatar Jun 17 '22 19:06 mendhak

@Manuelgit1 scratch that last comment. Hope may still be there. While trying to solve for TLS 1.3 I think there might be a way to also solve for OpenStreetMap. I just tried the mentioned Conscrypt library and I think I have to be specific about where I implement it as a security provider - by doing so I was able to click Authorize and the browser workflow popped up.

I tried this on Android 4.4 emulator:

image

mendhak avatar Jun 18 '22 14:06 mendhak

If you are able to test, an APK is here: https://github.com/mendhak/gpslogger/releases/tag/v123-rc1

Note that this version is incompatible with the F-Droid version as they use different signatures; if you install this you'll lose all existing GPSLogger data.

mendhak avatar Jun 18 '22 16:06 mendhak

very cool, data is just for testing currently, so I will check out the new apk and see if I get the browser direction.

Manuelgit1 avatar Jun 18 '22 17:06 Manuelgit1

No luck, as before it returns an error when tapping "Valicate certificate": ...SSL handshake aborted: ssl=0x5f3e4188: Failure in SSL library, usually a protocol error: 1407742E:SSL routines: SSL23_GET_SERVER_HELLO: tlsv1 alert protocol version. If it was up to me, the whole certificate/encryption stuff should be bypassed - this is not a banking software after all... But I guess the site openstreetmap.org requires it.

Manuelgit1 avatar Jun 18 '22 18:06 Manuelgit1

Somehow that was still working for me. I uninstalled and reinstalled on the emulator and I'm now getting the error again. Now I'm confused as to how it originally started working. I shall scratch my head on this a bit more.

mendhak avatar Jun 19 '22 08:06 mendhak

OK bit of an odd one, can you try this:

Open the app. Go to Custom URL. Click Validate SSL Certificate. Doesn't matter if it errors, just click it. Then go to OpenStreetMap. Click Authorize this app.

Does that work suddenly?

mendhak avatar Jun 19 '22 08:06 mendhak

OK I've replaced the APKs again, try this: https://github.com/mendhak/gpslogger/releases/tag/v123-rc1

This time I'm doing the Conscrypt provider earlier in the lifecycle for OpenStreetMap.

I tested by uninstalling from emulator, reinstalling, then going straight to OSM and click Authorize.

mendhak avatar Jun 19 '22 09:06 mendhak

I uninstalled the app and re-installed with the latest APKs, and it worked: Clicking "Authorize this app" got me redirected to the browser and I signed in to openstreetmap.org (OSM). So far, so good. After app logging for about 2 hours, I still do not see an upload at the OSM site though. It should pop up under My GPS Traces -> My traces , right? Settings are default except(?) Log to GPX = on, Log GPS/GNSS locations = on, Log network locations = on in sending settings: allow auto sending = on, how often? = 20 min, send zip file = on, OSM = on in OSM settings: allow auto sending = on, visibility = private, description = empty, tags = empty

Manuelgit1 avatar Jun 19 '22 21:06 Manuelgit1

A side comment regarding the conscrypt libary: 4 MB indeed is alot regarding the previous app size but even on older smartphones that's almost nothing. If we consider it a major use case of this app to repurpose old smartphones for something useful instead of causing toxic waste, then backwards compatibility is worth a couple of MBs more. And since those phones are no longer in daily use, their internal memory is unused anyways.

Manuelgit1 avatar Jun 19 '22 21:06 Manuelgit1

You are able to authorize, that's good. Now try a manual upload to OpenStreetMap and see what happens. It's the 'up arrow' icon at the bottom of the app. It will bring up selection, choose OSM, then choose a file to upload. You should see a progress bar and a pass/fail error message. If it fails try enabling debug log again and logging your upload, failing, then posting it here.

mendhak avatar Jun 20 '22 08:06 mendhak

Unfortunately, the manual upload attempt resulted with the previously mentioned error, see log below:

17:26:48 DEBUG GpsMainActivity.populateProfilesList:922 - Current profile:Default Profile 17:26:48 DEBUG GpsMainActivity$10.onServiceConnected:1434 - Connected to GPSLoggingService from MainActivity 17:26:50 DEBUG GpsMainActivity.onMenuItemClick:1158 - Menu Item: Upload 17:26:52 DEBUG GpsMainActivity.onMenuItemClick:1158 - Menu Item: OpenStreetMap 17:26:54 DEBUG GpsMainActivity.onResult:246 - OSM_FILE_UPLOAD_DIALOG 17:26:57 DEBUG GpsMainActivity.onResult:246 - FILE_UPLOAD_DIALOG 17:26:57 INFO GpsMainActivity.onResult:341 - Selected file to upload- 20220619.gpx 17:26:57 INFO GpsMainActivity.onResult:344 - Using sender: OSM_SENDER 17:26:57 DEBUG OSMJob.onAdded:66 - OSM Job added 17:27:08 ERROR OSMJob.onCancel:111 - Could not send to OpenStreetMap javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x5f4fdbf0: Failure in SSL library, usually a protocol error error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741 0x410a176a:0x00000000) at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:412) ~[na:0.0] at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:302) ~[na:0.0] at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:270) ~[na:0.0] at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:162) ~[na:0.0] at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) ~[na:0.0] at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) ~[na:0.0] at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) ~[na:0.0] at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) ~[na:0.0] at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) ~[na:0.0] at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) ~[na:0.0] at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) ~[na:0.0] at se.akerfeldt.okhttp.signpost.SigningInterceptor.intercept(SigningInterceptor.java:46) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) ~[na:0.0] at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) ~[na:0.0] at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) ~[na:0.0] at okhttp3.RealCall.execute(RealCall.java:77) ~[na:0.0] at com.mendhak.gpslogger.senders.osm.OSMJob.onRun(OSMJob.java:95) ~[na:0.0] at com.birbit.android.jobqueue.Job.safeRun(Job.java:229) ~[na:0.0] at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:407) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:326) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:354) ~[na:0.0] at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36) ~[na:0.0] at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:389) ~[na:0.0] at java.lang.Thread.run(Thread.java:856) ~[na:0.0] Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x5f4fdbf0: Failure in SSL library, usually a protocol error error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741 0x410a176a:0x00000000) at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) ~[na:0.0] at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371) ~[na:0.0] ... 31 common frames omitted 17:27:08 DEBUG GpsMainActivity.onEventMainThread:1573 - OSM Event completed, success: false 17:27:08 ERROR GpsMainActivity.onEventMainThread:1577 - OpenStreetMap-Could not upload the file 17:27:13 DEBUG GpsMainActivity.onResult:246 - SimpleDialog. 17:27:19 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1496 - Stopping the service 17:27:19 WARN GpsLoggingService.onDestroy:145 - GpsLoggingService is being destroyed by Android OS. 17:27:19 DEBUG GpsMainActivity.stopAndUnbindServiceIfRequired:1496 - Stopping the service

Manuelgit1 avatar Jun 20 '22 15:06 Manuelgit1

Alright, xth time is the charm, they say. Where x is a variable.

I've re-uploaded the APK here: https://github.com/mendhak/gpslogger/releases/tag/v123-rc1

Uninstall yours, install this new APK.

This time, something different - on the OSM screen you'll see an item at the bottom talking about Conscrypt.

image

Press that, you'll get sent to a different Github Repo. That will have an APK. If you install that APK, next time GPSLogger starts it will detect that Conscrypt Provider, and include it. That should then help with OSM both the authorization as well as the upload job.

This solves two problems - modern TLS for older devices, and it reduces bloat in the main application. Only the users that need it can install this extra APK, that is, if they are having connectivity problems.

Also let me know if the wording can be improved somehow. It's difficult to explain TLS in a general way that most users can understand.

mendhak avatar Jun 20 '22 22:06 mendhak

Looks like the value of the variable x may be lower than infinity ;-) The GPX manual upload has worked now and it shows up on OSM's "My traces" tab.

As requested, a little suggestion on the wording:

[...], installing the Conscrypt Provider library might help (choose apk file, then restart this app).

While Conscrypt may be more than a library, it is what users will understand better. And to tell them that they need the apk as more files are listed on the linked page.

As I am not familiar with OSM, still need to get the visualisation as I want it and check on recurring uploads, but the manual uploaded GPX file is indeed there.

Manuelgit1 avatar Jun 21 '22 19:06 Manuelgit1

Oh yeah good point, that should make the message more accessible.

Thanks for testing!! It's really useful to me because the older emulators aren't behaving the same as devices.

To visualize, if you go to OpenStreetMap My Traces, click edit next to the trace it should appear on the edit view.

Another useful tool is https://www.gpsvisualizer.com/ where you can upload the GPX file and it will show it to you on a map.

mendhak avatar Jun 21 '22 20:06 mendhak

I've moved the Conscrypt Provider item into General settings. The branch is merged but it'll be a while before I push to F-Droid.

mendhak avatar Jul 16 '22 20:07 mendhak

sounds like a good idea, keep it up

Manuelgit1 avatar Jul 20 '22 18:07 Manuelgit1

OK it's on F-Droid now: https://f-droid.org/en/packages/com.mendhak.gpslogger/
Closing this issue

mendhak avatar Sep 12 '22 19:09 mendhak