Schlagwort-Archive: Android

BitBastelei #612 – LoRa Mesh-Messenger mit Meshtastic

BitBastelei #612 - LoRa Mesh-Messenger mit Meshtastic

(1 GB) 00:00:00

2024-10-06 10:00 🛈

Meshtastic ist ein Open-Source-Mesh-Kommunikationssystem, das auf Boards mit LoRa basiert. Es ermöglicht es Nachrichten über weite Entfernungen ohne Mobilfunk oder Internet zu senden, indem die Geräte untereinander ein eigenes Netzwerk bilden und direkt miteinander kommunizieren. Meshtastic ist besonders nützlich in abgelegenen Gebieten, bei Outdoor-Aktivitäten oder in Notfallsituationen, in denen die sonst üblichen Kommunikationskanäle nicht verfügbar sind.

Inhalt

  • 00:00 Was ist Meshtastic
  • 04:31 Passende Hardware
  • 09:42 ESP32-Gerät flashen
  • 12:08 Handy-App
  • 14:46 Nachrichten-Test
  • 19:37 Fazit

Fehler und Ergänzungen

  • 10:10 Über dem Display steht, dass es v1.1 ist. Wohl übersehen.
  • 16:10 Es wird empfohlen mindestens 1-2m Abstand zwischen den Knoten zu haben, andernfalls kann es durch ein zu starkes Signal zu Empfangsfehlern kommen.

Links zum Thema

Transparenz

Die Module wurden selbst gekauft und bezahlt. Meshtastic ist freie Software.

BitBastelei #593 – Bluetooth LE (BLE) UART-Emulation mit ESP32-C3 und Arduino

BitBastelei #593 - Bluetooth LE (BLE) UART-Emulation mit ESP32-C3 und Arduino

(352 MB) 00:00:00

2024-05-26 10:00 🛈

Serielle Schnittstellen wie UART sind eine einfache und schnell zu nutzende Schnittstelle zwischen einem Mikrocontroller und einem PC oder Handy, oft per USB. Serial.println und schon erscheint der Text oder Messwert auf der Gegenseite. Was aber, wenn es drahtlos funktionieren soll? Das klassische Bluetooth bietet mit RFCOMM hier einen simplen Ersatz. Es gibt nur einen Haken: Neuere ESP32-Modelle wie der ESP32-C3 unterstützen nur die für wenig Energie optimierte Version „Bluetooth LE“, welche diesen Standard nicht unterstützt. Glück im Unglück: Mit ein paar Libraries und kleineren Einschränkungen kann man die Funktion nachbauen.

Inhalt

  • 00:00 Die Herausforderung
  • 03:45 UART/RFCOMM-Ersatz per BLE
  • 04:57 Arduino-Code
  • 11:36 BLE-Debugging unter Android
  • 14:18 Der Haken mit dem Puffer
  • 17:02 PC als Gegenstelle
  • 21:07 Fazit

Links zum Thema

Transparenz

Das Gerät wurde selbst gekauft und bezahlt.

BitBastelei #593 – Bluetooth LE (BLE) UART-Emulation mit ESP32-C3 und Arduino weiterlesen

BitBastelei #548 – ISOs unterwegs booten: DriveDroid & Ventoy

BitBastelei #548 - ISOs unterwegs booten: DriveDroid & Ventoy

(478 MB) 00:00:00

2023-07-16 10:00 🛈

Um ein Live-System oder Betriebssysteminstallation zu starten nutzt man die Boot-Disk. Zumindest früher, heute sind DVD, CD oder gar Diskettenlaufwerke an PCs und Laptops nur noch selten zu finden. Statt einen USB-Stick zu opfern gibt es aber zwei deutlich flexiblere Alternativen, welche es erlauben mehrere Installationsmedien gleichzeitig zu verwalten.

Inhalt

  • 00:00 Bootmethoden
  • 02:08 DriveDroid
  • 05:56 Ventoy: Single-Boot vs. Multiboot
  • 06:42 Ventoy: Installation
  • 10:03 Ventoy: ISO-Verwaltung
  • 10:57 Secureboot-Hinweise
  • 14:02 Ventoy: Test mit GRML
  • 15:24 Ventoy: Test mit Debian
  • 16:19 Ventoy: Test mit Ubuntu
  • 18:01 Ventoy: Test mit Gentoo
  • 19:34 Ventoy: Test mit ArchLinux
  • 20:32 Ventoy: Test mit Kali Linux
  • 21:16 Ventoy: Test mit Tails
  • 22:35 Ventoy: Test mit Windows 10
  • 23:24 Ventoy: Test mit Windows 11
  • 25:10 Ventoy: Test mit Hardware statt VM
  • 25:59 Fazit

Links zum Thema

Transparenz

Beide Softwarepakete stehen in einer kostenlosen Version zur Verfügung. Ich bin jeweils nur Anwender/Kunde und habe sonst keine Beziehungen zu den Herstellern/Autoren.

BitBastelei #349 – VPN mit Wireguard

BitBastelei #349 - VPN mit Wireguard

(186 MB) 00:37:55

2019-09-08 10:00 🛈

In perfekten Netzen könnte jeder mit jedem kommunizieren, in der Praxis sieht es oft anders aus. Mittels VPN kann man ein „virtuelles Netzwerkkabel“ zwischen zwei PCs oder Routern aufbauen. Eine solche VPN-Software ist Wireguard, welches für alle gängigen Betriebssysteme verfügbar und vergleichsweise einfach einzurichten ist.

Inhalt

  • 00:10 Was ist ein VPN
  • 05:42 Klassische VPN-Lösungen
  • 08:26 Wireguard
  • 10:04 Installation & Konfiguration unter Debian Linux (CLI)
  • 18:00 Installation & Konfiguration unter Arch Linux (CLI)
  • 24:45 Zugriff auf’s Internet: Forwarding & NAT
  • 27:51 Installation & Konfiguration unter Arch Linux (NetworkManager)
  • 29:59 Installation & Konfiguration unter Windows
  • 32:30 Installation & Konfiguration unter Android

Links

BitBastelei #340 – Bluetooth-Android-Apps für ESP32

BitBastelei #340 - Bluetooth-Android-Apps für ESP32

(183 MB) 00:31:50

2019-07-07 10:00 🛈

ESPs und Arduino habe ich ja schon oft gezeigt, was aber, wenn man diese mit einem Handy verbinden will? Dann spielt der ESP32 seine Bonuspunkte aus: Dieser unterstützt neben WLAN auch Bluetooth und kann so direkt und ohne Router mit einem Handy kommunizieren. Mittels des App Inventor kann man die zugehörige App für Android schnell und einfach zusammenklicken.

Links

BitBastelei #319 – IRC: Immer online mit WeeChat

BitBastelei #319 - IRC: Immer online mit WeeChat

(147 MB) 00:22:36

2019-02-03 11:00 🛈

IRC (Internet Relay Chat) ist eines der ältesten Chatsysteme im IP-basierten Internet. Um hier auch offline Nachrichten empfangen zu können benötigt man einen Bouncer. Mit WeeChat auf dem Homeserver oder im Internet lässt sich etwas passendes einrichten, welches über entsprechende Clients von jedem PC oder Smartphone den Zugriff ermöglicht.

Links:

BitNotice #113 – Android: Auflösung (DPI) ohne Root ändern

BitNotice #113 - Android: Auflösung (DPI) ohne Root ändern

(5 MB) 00:03:17

2017-05-20 13:00 🛈
Geschmäcker sind verschieden, so auch bei der Bildschirmauflösung (DPI) von Handys. Diese Einstellung gibt Android den Hinweis welche Größe der Bildschirm hat – und entsprechend wie groß Symbole und Texte sein sollen.

Ich persönlich bevorzuge kleine Texte um möglichst viel Inhalt auf den Bildschirm zu bringen. Dies kann man erreichen in dem man Android vorgaukelt, dass das Gerät größer wäre. Die Gerätegröße berechnet das System über die Auflösung des Displays, welche durch den Bildschirm vorgegeben ist, und die DPI (Dots per Inch, Bildpunkte pro Zoll). Mehr DPI bedeutet, dass die Bildpunkte des Displays sich auf einer kleineren Fläche befinden, das Gerät also einen physikalisch kleineren Bildschirm hat und Schriften entsprechend größer dargestellt werden sollen.

Mein Display hat eigentlich 430 DPI bei 1920 x 1080 Bildpunkten – übersetzt heißt das es ist etwa 4.5″ hoch (1920/430) und 2.5″ breit, nach dem Satz des Pythagoras also ein 5.1″-Display.
Ich ändere den Wert auf 320dpi – Android meint nun es handle sich um ein fast 7″ großes Tablet und stellt die Schriften und Symbole entsprechend kleiner als zuvor dar.

Bei dieser Methode wird kein Root benötigt, man kann also trotz der Änderung die SafetyNet-Prüfung bestehen, welche z.B. für einige Banking- oder Streaming-Apps benötigt wird.

BitNotice #112 – Android: ADB einschalten

BitNotice #112 - Android: ADB einschalten

(2 MB) 00:01:10

2017-05-19 13:00 🛈
Mit ADB („Android Debug Bridge“) besitzt Android eine Möglichkeit für Entwickler das Handy über USB oder Netzwerk zu verwalten. Dateien Kopieren, Systemlogs einsehen, Befehle ausführen – fast alles ist möglich. Hier wird gezeigt wie man diese Funktion einschaltet.

Hinweis: Das Menü „Entwickleroptionen“ ist standardmäßig ausgeblendet. Wie man es einblendet erfahrt Ihr hier: https://www.youtube.com/watch?v=AjVHyU98bFk

BitNotice #111 – Android: Entwicklereinstellungen freischalten

BitNotice #111 - Android: Entwicklereinstellungen freischalten

(2 MB) 00:00:50

2017-05-18 21:26 🛈
Unter Android gibt es ein verstecktes Menü, welches diverse Befehle zur Fehlersuche bereitstellt. Über einen kleinen Trick lässt sich dieses auf fast jeder Android-Installation freischalten.

Amdroid/CM: Eingehende SMS werden nicht angezeigt

Die Älteren unter euch können sich eventuell erinnern: SMS. Ein System um Textnachrichten an Mobiltelefone zu senden. Begrenzte Textlänge, hohe Gebühren und nicht verschlüsselt. Eigentlich heute Obsolet, aber einige Anbieter denken immer noch, dass dieses Verfahren modern sei – auch wenn es seit fast 7 Jahren als unsicher eingestuft wird. Hallo Banken. Es kam wie es kommen musste: Ich sah mich genötigt ein Produkt über eine dieser Gesellschaften zu bezahlen und – nichts. Während die Webseite freudig vermeldete, dass ich eine passende TAN erhalten hätte machte mein Handy keinen Mucks. Toll, ich hab ein Zahlungsziel. Aber auch nichts ungewöhnliches – im Telefonica-Netz kommt es ja nicht unbedingt selten zu Störungen, also warten wir halt.

Einige Stunden später noch immer nichts, also müssen wir wohl selbst Hand anlegen. Erste Anlaufstelle: Test-SMS senden. Gar nicht so einfach, denn SMS-Funktion hab ich eigentlich auf keinem anderen Gerät mehr installiert. Glücklicherweise habe ich noch einen „echten“ Telefonanschluss ohne VoIP und konnte daher per Modem ein SMS-Gateway erreichen. Allerdings ohne Erfolg. Also machen wir mal ein altes Handy fit und versuchen es da – woho, SMS. Es muss also an meinem Endgerät liegen.

Per ADB zeigt sich nach einigem (teuren) Geteste folgender Fehler:

12-14 11:07:05.216  3179  5307 W MmsSmsDatabaseHelper: Upgrading database from version 64 to 67.
12-14 11:07:05.216  3179  5307 E SQLiteLog: (1) table sms_restricted already exists
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper: table sms_restricted already exists (code 1): , while compiling: CREATE VIEW sms_restricted AS SELECT * FROM sms WHERE type=1 OR type=2;
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper: android.database.sqlite.SQLiteException: table sms_restricted already exists (code 1): , while compiling: CREATE VIEW sms_restricted AS SELECT * FROM sms WHERE type=1 OR type=2;
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at com.android.providers.telephony.MmsSmsDatabaseHelper.upgradeDatabaseToVersion66(MmsSmsDatabaseHelper.java:1721)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at com.android.providers.telephony.MmsSmsDatabaseHelper.onUpgrade(MmsSmsDatabaseHelper.java:1466)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at com.android.providers.telephony.SmsProvider.query(SmsProvider.java:160)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.content.ContentProvider.query(ContentProvider.java:1020)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.content.ContentProvider$Transport.query(ContentProvider.java:239)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper:  at android.os.Binder.execTransact(Binder.java:565)
12-14 11:07:05.218  3179  5307 E MmsSmsDatabaseHelper: Destroying all old data.

Das kommt mir doch irgendwie bekannt vor… Schade, dass der Fehler nicht in der GUI erscheint und man so vermutet, dass alles ohne Störung funktionieren würde. Also löschen wir auch hier die kaputte Datenbank. Leider nicht ganz so einfach, denn zu dieser Meldung schweigen sich die Suchmaschinen aus und auch im Log wird der Dateiname der betroffenen Datenbank leider nicht erwähnt. Abhilfe schafft „Self Rubber Ducking“ , welcher augenscheinlich sehr von Migrationscode angetan ist. Fündig wurde ich dann im Ordner, welcher sich auch schon bei der Telefonie als Verursacher zeigte – hätte man drauf kommen können. Meh.

Also – leicht angepasst:

adb shell
su -
rm -rf /data/user_de/0/com.android.providers.telephony/databases/mmssms.*

Nach einem Reboot kann dann auch der Fintechler wieder mit mir kommunizieren. Ich wäre ja dafür langsam mal offene Standards für sowas zu schaffen – sowas wie U2F mit angezeigten Transaktionsdaten…