giovedì 18 giugno 2015

Disinstallare applicazioni da Android Wear

Per disinstallare applicazione da Android Wear non esiste un sistema integrato all'interno dell'orologio.




Se si ha l'applicazione/installer sul telefono basta agire sul telefono che la modifica si replica anche sull'orologio ma se si sta per esempio sviluppando una applicazione in proprio questa strada non risulta applicabile

Ci viene quindi in aiuto adb ma si deve conoscere il nome reale del pacchetto installato (e non il nome dell'applicazione)

Per listare le applicazioni installazione sull'orologio si puo' digitare

adb shell
pm list packages

diciamo che il pacchetto che si vuole disinstallare luca_innocenti.soundwear si esce dalla shell e si digita

adb uninstall luca_innocenti.soundwear

queste istruzioni funzionano se l'orologio e' collegato via USB (ovvero se e' collegato sulla sua basetta). Se invece il debug e' avviato via bluetooth si deve procedere con


adb forward tcp: 4444 local abstract: / adb hub 
adb connect localhost: 4444 
adb devices a
db-s localhost: 4444 shell 
pm list packages 
adb -s localhost: 4444 uninstall luca_innocenti.soundwear

lunedì 15 giugno 2015

Android Wear con Eclipse


Ho un vecchio progetto (vecchio per modo di dire ... ma nell'informatica un anno ha una valenza un po' particolare) in Eclipse a cui volevo aggiungere il supporto ad Android Wear senza trasportare tutto in Android Studio

La procedura per impostare l'ambiente di sviluppo non e' molto lineare e deriva da quanto descritto a questo link

Per prima cosa da Sdk Manager deve essere aggiunto il Google Repository


Una volta terminato il download si deve andare nella directory del proprio SDK ed in particolare in

./extras/google/m2repository/com/google/android/support/wearable/1.0.0/wearable-1.0.0.aar
copiare il file .aar, rinominarlo in .zip e decomprimerlo (attenzione esiste anche un file wearable-1.0.0.jar da non usare)
Dopo lo scompattamento si entra nella cartella, si crea un directory libs e vi si copia il file classes.jar



Si apre quindi Eclipse e si importa la directory con File/New/Project/Android Project From Existing Code
Dopo l'importazione si clicca destro sulla directory wearable-1.0.0. /Properties/Android, si flagga IsLibrary, Apply, Ok e da questo punto in poi e' stato aggiunto il supporto di Android Wear ad Eclipse



Per aggiungere il supporto ad Android Wear ad un progetto si clicca sulle proprieta' del progetto/Android e si aggiunge la libreria wereable




giovedì 4 giugno 2015

ISS Spotting 1 giugno 2015

Grazie ad un passaggio quasi zenitale, l'assenza di nuvole ed un orario non impossibile (22:30) ho provato a riprendere la ISS (dopo i tentativi del 2013 e 2014)

Questa volta mi sono organizzato con una Pentax Mz con un tempo di apertura di 30 secondi e sensibilita' a 3200 ASA ed un Fuji Lumix DMC LS 5 in modalita' ripresa video (la prima montata su cavalletto la seconda semplicemente appoggiata per terra rivolta verso l'alto)

Pentax modificata aumentando il contrasto

video da Fuji (da vedere a tutto schermo alla massima qualita')

lunedì 1 giugno 2015

Mysql SSH Tunnel

In questo precedente post avevo indicato come mettere in ascolto un demone SSH su due schede di rete

Mi e' stato chiesto, sulla stessa macchina di poter interagire con il server Mysql, sia dalla scheda con indirizzo interno che da quella con indirizzo pubblico. Nonostante i vari tentativi di modificare il bind-address (impostandolo per esempio a 0.0.0.0 per il server SSH) non sono riuscito a mettere il server in ascolto.
A questo punto entra in gioco un piccolo trucco; visto che l'accesso SSH e' garantito si puo' creare un tunnel mysql over ssh, in pratica il traffico mysql viene instradato con canale SSH ed il client non si collega direttamente all'indirizzo remoto ma ad un propria porta locale

Il comando per fare cio' e' il seguente
ssh -fNg -L 3307:127.0.0.1:3306 luca@10.1.1.238

ci si collega dal client alla macchina remota (10.1.1.238) collegando la porta remota 3306 (Mysql) con una porta locale 3307

per collegarsi ed interrogare il database si puo' usare quindi la sintassi
mysql -h 127.0.0.1 -P 3307 -u luca 

(testato su Os X e Linux)

Planet Trails con uno smartphone

In attesa di riprendere la ISS al passaggio del 1° Giugno, ho provato a sostituire la digitale  reflex con il telefonino per riprendere Giove e Venere

Le fotografie sono state riprese dalle 21.47 alle 23.00 del 29/05/2015 con il programma Android Camera FV - 5 con una foto al minuto con un tempo di apertura di 10 secondi

Piu' in alto Giove, piu' luminoso ed in basso Venere

Le foto sono state unite mediante il programma StarTrail
Le tracce sono state registrate ma si vede chiaramente l'assenza delle stelle. Confrontando con il programma Stellarium, Giove e Venere erano gli unici oggetti ripresi con magnitudo negativa



Questa l'animazione (osservando attentamente si osserva anche il passaggio di un aereo)


Considerando che il passaggio della ISS e' previsto per 22:30 del 1° Giugno con una magnitudo -3.6 sara' possibile filmarla con il telefono ma ci si puo' scordare si fotografare oggetti con magntudo inferiore a -1 (quindi non si possono fotografare le stelle)

venerdì 29 maggio 2015

2 Nic su Centos 7

Alcune volte puo' essere comodo avere installate due schede di rete, una con indirizzo pubblico ed una con indirizzo di rete interna.

Su Centos la gestione di una scheda aggiuntiva non e' proprio immediata come su altre distribuzioni, a partire dal nome delle interfacce

Dopo aver installato la scheda si procede montato il modulo corrispondente e si digita ifconfig
---------------------------------------
enp0s29u1u4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.238  netmask 255.255.255.0  broadcast 10.1.1.255
        inet6 fe80::21f:5bff:feff:272e  prefixlen 64  scopeid 0x20<link>
        ether 00:1f:5b:ff:27:2e  txqueuelen 1000  (Ethernet)
        RX packets 513511  bytes 486606241 (464.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 39723 (38.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet xxx.xxx.xxx.xxx  netmask 255.255.255.0  broadcast xxx.xxx.xxx.xxx
        inet6 fe80::76d0:2bff:fe33:1b57  prefixlen 64  scopeid 0x20<link>
        ether 74:d0:2b:33:1b:57  txqueuelen 1000  (Ethernet)
        RX packets 40416982  bytes 21343890651 (19.8 GiB)
        RX errors 0  dropped 9381  overruns 0  frame 0
        TX packets 44936717  bytes 45611506292 (42.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 3209  bytes 330370 (322.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3209  bytes 330370 (322.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
---------------------------------------
l'interfaccia enp3s0' e' quella che e' stata configurata in automatico durante l'installazione mentre la enp0s29u1u4 e' quella aggiunta in un secondo momento. Ci si deve annotare il MAC Address della nuova scheda.

Si va quindi nella directory /etc/sysconfig/network-scripts/ e si duplica il file ifcfg-enp3s0 su un nuovo file ifcfg-enp0s29u1u4 (da notare che il nome corrisponde all'dentificativo di ifconfig)
---------------------------------------------
TYPE=Ethernet
BOOTPROTO=static
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s29u1u4
ONBOOT=yes
IPADDR0=10.1.1.238
PREFIX0=24
IPV6_PEERDNS=yes
HWADDR=00:1f:5b:ff:27:2e

---------------------------------------------
si inserisce in HWADDR il valore copiato da ifconfig e si elimina il gateway

si rilancia la rete con il comando
systemctl restart network.service

Puo' essere utile mettere in ascolto il demone SSH su entrambe le interfacce di rete (sia quella interna che quella esterna). Per fare cio' si edita il file /etc/ssh/sshd_config impostante il ListenAddress a 0.0.0.0 (che equivale a tutti gli indirizzi IP impostati sulla macchina)

il server SSH si aggiorna con 
systemctl restart sshd.service

giovedì 28 maggio 2015

Hack a keyboard

Hack nel senso di migliorare....
Sto lavorando ad un progetto per modificare una tastiera Usb per renderla un footswitch per cambiare pagina su uno spartito elettronico di MuseScore (cio' non mi rendera' sicuramente un miglior musicista ma sicuramente piu' geek)


L'elettronica di una tastiera USB e' molto ridotta ed e' concentrata sullo su una schedina, il resto e' solo una matrice di fili per arrivare alla posizione dei tasti.
Il connettore e' di tipo a 26 piste divise in due sezioni da 13. Cortocircuitando una coppia di pista si simula la pressione di un tasto


Le tastiere generano di solito un codice di scansione per i tasti standard e due codici di scansione per i tasti speciali (per esempio i tasti di espansione aggiungono il codice 224 mentre il tastierino numerico ha come predecessore il codice 0)


A me interessava cercare la combinazione PageUp e PageDown.
Cosi' mediante il seguente programmino in Python mi sono messo a cortocircuitare coppie di piste e trascrivere su una griglia il risultato
------------------------------------------------------
from msvcrt import getch
import sys
z_old = "a"
while True:
    z = getch()
    # escape key to exit
    if ord(z) == 27:
        break
    if (z != z_old):
        print ord(z)
        sys.stdout.flush()
        z_old = z
------------------------------------------------------


Con una buona dose di fortuna ho trovato quasi subito la combinazione giusta
13/18 : PageUp
13/19 : PageDown

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...