dl9rdz / rdzwx-go

Apache License 2.0
22 stars 3 forks source link

rdzwx-go auf FireHd Tablet 8 #1

Open smarti2019 opened 3 years ago

smarti2019 commented 3 years ago

Hallo,

ich teste gerade die rdzsonde-GO App auf einem FireHd Tablet 8. Leider bekomme ich keine Verbindung zum TTGO. Beide Geräte befinden sich im gleichen WLAN, der Aufruf von Tablet im Browser mit http;//rdzsonde.local erreicht die Webseite des TTGO. Frage hierzu, welche Vorraussetung braucht die APP für die Verbindung zum TTGO? Kann man das einstellen in der APP? Der TTGO hat die aktuellste Software von rdzsonde installiert.

dl9rdz commented 3 years ago

Das funktioniert über mDNS-Discovery. Es wird nach Geräten mit ServiceType _jsonrdz._tcp gesucht, und dann ein Lookup nach dem ersten gefundenen Gerät (i.a. rdzsonde).

Das kann man auch auf einem Linux oder MacOS PC testen dns-sd -B _jsonrdz._tcp . sollte "rdzsonde" finden, und dns-sd -L rdzsonde _jsoonrdz._tcp. sollte den Port 14570 finden

Aber wenn das im Browser mit http://rdzsonde.local/ funktioniert, dann sollte das eigentlich passen (bei http://rdzsonde.local macht der Browser im Prinzip das gleiche nach ServiceType _http._tcp)

Wenn das soweit funktioniert, muss noch eine TCP-Verbindung zum TTGO zum Port 14570 möglich sein. Aber auch das sollte in einem lokalen Netz ohne Firewall kein Problem sein.

Aktuellste Version muss die aktuellste devel-Version sein, nicht die master-Version. Lokale Testumgebung ist ein Android 7-Telefon und ein Android 10-Tablet.

smarti2019 commented 3 years ago

Hallo, also ich hab mal die Befehle eingegeben die du genannt hast, das funktioniert soweit auch. dns-sd -B _jsonrdz.tcp zeigt rdzsonde der 2 Befehl findet auch Port 14570 vom Linux PC aus. Auch habe ich die aktuellste devel-Version von rdzsonde auf meinem TTGO. Ist schon merkwürdig, das der Fire-HD keine Verbindung macht. Das gleiche Problem habe ich auch mit einem älteren LG-Smartphone mit Android 8.

Hab mal zum Testen das BLISS-OS , quasi ein Android für Intel-PC auf meinem Notebook installiert. Da funktioniert die APP fehlerfrei.

dl9rdz commented 3 years ago

Falls ein Rechner mit installiertem adb vorhanden ist: Tablet oder Smartphone per USB anschließen, USB debugging erlauben, und dann am Rechner adb logcat | grep rdz ausführen (wenn in der Ausgabe öfters "chatty" steht, dann ggf. vorher noch ein adb logcat -P ""

Da sollte dann beim Starten (TTGO läuft bereits) in etwas das ausgegeben werden:

02-17 11:22:31.677 11054 11191 D dl9rdz-rdzwx: execute: start
02-17 11:22:31.694 11054 11410 D dl9rdz-rdzwx: JsonRdz thread is running
02-17 11:22:31.694 11054 11410 D dl9rdz-rdzwx: no host/port
02-17 11:22:31.696 11054 11191 D rdzwx   : test: found: lat = 12.6, long = 13.5
02-17 11:22:31.697 11054 11409 D dl9rdz-rdzwx: Service discovery started
02-17 11:22:31.697 11054 11409 D dl9rdz-rdzwx: Service discovery successname: rdzsonde, type: _jsonrdz._tcp., host: null, port: 0, txtRecord: 
02-17 11:22:31.697 11054 11409 D dl9rdz-rdzwx: serviceName: rdzsonde  host: null, port: 0
02-17 11:22:31.716 11054 11409 D dl9rdz-rdzwx: Resolve suceeded with host /192.168.42.75 and port 14570
02-17 11:22:31.716 11054 11409 D dl9rdz-rdzwx: setting target host for jsonrdz handler
02-17 11:22:32.695 11054 11410 D dl9rdz-rdzwx: Trying to connect!
02-17 11:22:32.793 11054 11410 D dl9rdz-rdzwx: Connected!
02-17 11:22:32.793 11054 11410 D dl9rdz-rdzwx: Reading from input stream

Wäre interessant, ab wann das dann abweicht.

Ein anderer einfacher Test wäre noch, am Tablet im Browser http://< ip >:14570/ einzugeben, als < ip > die IP vom TTGO. Dabei sollte eine Fehlermeldung "invalid response" erscheinen (EDIT: Browserabhängig ggf. auch anders). Falls dageben ein Fehler "unable to connect" oder "connection refused" erscheint, liegt das Problem irgendwo am Netzwerk

smarti2019 commented 3 years ago

ok, ich teste das heute Abend und werde berichten.

dl9rdz commented 3 years ago

Noch ein Nachtrag: Momentan gibt es eine Abhängigkeit zu Android API Level 24, d.h. Android 7. Das ist im Manifest nicht so eingetragen, d.h. das APK installiert auch auf einem Android 6, aber ein Teil läuft dann nicht richtig. Das würde sich dann auch so äußern, dass keine Verbindung aufgebaut wird.

smarti2019 commented 3 years ago

OK, hab jetzt getestet. Erreichbar ist der Port 14570. Hab Firefox installiert und getestest, da kommen auch Infos angezeigt im Browser mit den scann daten usw vom TTGO.

Der adb debug befehl liefert folgende Daten:

02-17 19:31:19.437 571 3587 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=de.dl9rdz/.MainActivity} from uid 10009 02-17 19:31:19.501 571 590 I ActivityManager: Start proc 17506:de.dl9rdz/u0a173 for activity de.dl9rdz/.MainActivity 02-17 19:31:19.525 17506 17506 E de.dl9rdz: Not starting debugger since process cannot load the jdwp agent. 02-17 19:31:19.549 571 980 I PackageRecency: Queuing notification(s) to package for ActivityInfo{8344f04 de.dl9rdz.MainActivity} 02-17 19:31:19.571 571 652 D AmazonWindowMetrics: On window event - Package de.dl9rdz, isDreaming false, state 1, alexaMode 0 02-17 19:31:19.634 17506 17506 I de.dl9rdz: The ClassLoaderContext is a special shared library. 02-17 19:31:19.699 17506 17506 W de.dl9rdz: Class org.chromium.amazon_webview.browser.metrics.MetricsManager failed lock verification and will run slower. 02-17 19:31:19.699 17506 17506 W de.dl9rdz: Common causes for lock verification issues are non-optimized dex code 02-17 19:31:19.699 17506 17506 W de.dl9rdz: and incorrect proguard optimizations. 02-17 19:31:19.723 17506 17506 W de.dl9rdz: Class com.amazon.webview.metrics.client.events.web.WebViewLoadEvent$1 failed lock verification and will run slower. 02-17 19:31:19.758 571 590 I ActivityManager: Start proc 17530:com.amazon.webview.chromium:sandboxed_process0/u0i20 for webview_service de.dl9rdz/org.chromium.content.app.SandboxedProcessService0 02-17 19:31:20.095 571 597 I ActivityManager: Displayed de.dl9rdz/.MainActivity: +628ms (total +539ms) 02-17 19:31:20.285 571 652 D AmazonWindowMetrics: On window event - Package de.dl9rdz, isDreaming false, state 1, alexaMode 0 02-17 19:31:20.289 348 1032 W SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen de.dl9rdz#0 02-17 19:31:20.290 348 1032 W SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen de.dl9rdz#0 02-17 19:31:20.833 17506 17615 D dl9rdz-rdzwx: execute: start 02-17 19:31:20.842 17506 17615 E PluginManager: at de.dl9rdz.GPSHandler.setupLocationManager(rdzwx-a.kt:254) 02-17 19:31:20.842 17506 17615 E PluginManager: at de.dl9rdz.GPSHandler.initialize(rdzwx-a.kt:230) 02-17 19:31:20.842 17506 17615 E PluginManager: at de.dl9rdz.RdzWx.pluginStart(rdzwx.kt:243) 02-17 19:31:20.842 17506 17615 E PluginManager: at de.dl9rdz.RdzWx.execute(rdzwx.kt:293) 02-17 19:31:29.570 571 583 I PackageRecency: Intent triggered to package: ComponentInfo{com.amazon.firelauncher/com.amazon.fireappscardproducer.service.SystemNotificationProducerService$PackageRecencyReceiver} for Intent { act=android.intent.action.MAIN cat=[android. intent.category.LAUNCHER] flg=0x10200000 cmp=de.dl9rdz/.MainActivity } 02-17 19:31:29.616 1358 17084 I F_C.SystemNotificationP: Marking app de.dl9rdz#de.dl9rdz.MainActivity as accessed 02-17 19:31:30.128 571 583 I PackageRecency: Intent triggered to package: ComponentInfo{com.amazon.kindle.cms/com.amazon.kindle.cms.MaintenanceService$PackageRecencyListener} for Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x102 00000 cmp=de.dl9rdz/.MainActivity }

kannst du da was mit Anfangen?

dl9rdz commented 3 years ago

Dazu 02-17 19:31:20.842 17506 17615 E PluginManager: at de.dl9rdz.GPSHandler.setupLocationManager(rdzwx-a.kt:254) wäre etwas mehr Infos aus "adb logcat" (ohne grep rdz) noch hilfreich.

Zwei naheliegende Fehlerquellen:

smarti2019 commented 3 years ago

Also alle Anforderungen GPS hatte ich erlaubt. Allerdings hat das FireHD Tablet keinen GPS-Chip direkt on Board. Und von der Version sollte es Android 9 sein, also das FireOS basiert auf Android 9.

Folgende Zeilen nochmal aus dem adb logcat

02-17 20:37:03.283 15268 15355 D dl9rdz-rdzwx: execute: start 02-17 20:37:03.286 15268 15355 E PluginManager: Uncaught exception from plugin 02-17 20:37:03.286 15268 15355 E PluginManager: java.lang.IllegalArgumentException: provider doesn't exist: gps 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.Parcel.createException(Parcel.java:1954) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.Parcel.readException(Parcel.java:1918) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.Parcel.readException(Parcel.java:1868) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:755) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.location.LocationManager.requestLocationUpdates(LocationManager.java:1007) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.location.LocationManager.requestLocationUpdates(LocationManager.java:561) 02-17 20:37:03.286 15268 15355 E PluginManager: at de.dl9rdz.GPSHandler.setupLocationManager(rdzwx-a.kt:254) 02-17 20:37:03.286 15268 15355 E PluginManager: at de.dl9rdz.GPSHandler.initialize(rdzwx-a.kt:230) 02-17 20:37:03.286 15268 15355 E PluginManager: at de.dl9rdz.RdzWx.pluginStart(rdzwx.kt:243) 02-17 20:37:03.286 15268 15355 E PluginManager: at de.dl9rdz.RdzWx.execute(rdzwx.kt:293) 02-17 20:37:03.286 15268 15355 E PluginManager: at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:117) 02-17 20:37:03.286 15268 15355 E PluginManager: at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98) 02-17 20:37:03.286 15268 15355 E PluginManager: at org.apache.cordova.PluginManager.exec(PluginManager.java:132) 02-17 20:37:03.286 15268 15355 E PluginManager: at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59) 02-17 20:37:03.286 15268 15355 E PluginManager: at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.MessageQueue.nativePollOnce(Native Method) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.MessageQueue.next(MessageQueue.java:326) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.Looper.loop(Looper.java:160) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.HandlerThread.run(HandlerThread.java:65) 02-17 20:37:03.286 15268 15355 E PluginManager: Caused by: android.os.RemoteException: Remote stack trace: 02-17 20:37:03.286 15268 15355 E PluginManager: at com.android.server.LocationManagerService.requestLocationUpdatesLocked(LocationManagerService.java:2113) 02-17 20:37:03.286 15268 15355 E PluginManager: at com.android.server.LocationManagerService.requestLocationUpdates(LocationManagerService.java:2094) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.location.ILocationManager$Stub.onTransact(ILocationManager.java:72) 02-17 20:37:03.286 15268 15355 E PluginManager: at android.os.Binder.execTransact(Binder.java:731) 02-17 20:37:03.286 15268 15355 E PluginManager: 02-17 20:37:03.296 856 856 I wpa_supplicant: nl80211: Drv Event 33 (NL80211_CMD_TRIGGER_SCAN) received for wlan0 02-17 20:37:03.344 15268 15301 D NetworkSecurityConfig: No Network Security Config specified, using platform default 02-17 20:37:03.362 15268 15301 E System : TRACE Starting certificate trust 02-17 20:37:03.362 15268 15301 D CRLSetManager: getInstance binder: android.os.BinderProxy@41f26b2 02-17 20:37:03.373 15268 15355 I App : WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired! 02-17 20:37:03.501 15268 15336 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::vsyncEventPhaseOffsetNs retrieved: 1000000 (default) 02-17 20:37:03.501 15268 15336 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::vsyncSfEventPhaseOffsetNs retrieved: 1000000 (default) 02-17 20:37:04.256 15268 15276 W System : A resource failed to call close

dl9rdz commented 3 years ago

Ok, kein GPS-Chip ist auch eine Erklärung für 02-17 20:37:03.286 15268 15355 E PluginManager: java.lang.IllegalArgumentException: provider doesn't exist: gps

Für die Sondensuche vor Ort ist das ohne GPS natürlich eher eine suboptimale Platform, aber ich kann das gerne in der nächsten Version so anpassen, dass es ohne GPS nicht ganz kaputt geht, sondern alles andere weiterhin funktioniert.