CFW: Bluetooth

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Bluetooth

Beitrag von MasterOfGizmo » 11 Feb 2017, 22:47

ski7777 hat geschrieben:Hat jemand schon die serielle Kommunikation zum TX analysiert?
Das wurde in diesem Thread diskutiert:
viewtopic.php?f=33&t=3935&p=28077&hilit=arduino#p28059

Ein paar nette Dokumente sind in diesem Thread verlinkt:
viewtopic.php?f=8&t=1655&hilit=fx1+parser

Es gibt nichts fertiges, aber das gesamte Know-How ist vorhanden.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 01 Mär 2017, 16:04

Bluetooth macht Fortschritte.
Mittlerweile gibt es die pybluez library, mit Hilfe welcher man jetzt nach Geräten suchen kann:
BildBildBildBild

Nun stellt sich mir die Frage, was wir noch brauchen. Einen LE Scan wird es auch noch geben, aber in Ermangelung eines LE Gerätes wird die Funktionsprüfung da schwierig.

Raphael

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Bluetooth

Beitrag von MasterOfGizmo » 01 Mär 2017, 16:22

Das kommt mir aber alles recht bekannt vor. Bist Du sicher, dass Du das geschrieben hast?
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 01 Mär 2017, 16:23

Die Eigentliche App ist von dir, das Modul pybluez und pygattlib habe ich hinzugefügt, und das ganze Scan Zeugs via pybluez habe auch ich hinzugefügt.

Raphael

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 01 Mär 2017, 18:37

Welche Funktionen sind denn noch gewünscht in der Bluetooth App?

Ich würde noch den LE Scan dazu machen und eine Liste aller Dienste, die ein Gerät unterstützt.
Später würde ich dort auch die Einstellungen für PAN(Personal Area Network) / Bluetooth "W-LAN" einbauen.

Raphel

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 01 Mär 2017, 20:11

Ich habe jetzt das Paket pygattlib hinzugefügt, scheitere jedoch daran, dass man LE Scans nur als root machen darf.
Die Commits https://github.com/ski7777/ftcommunity- ... fa1cf8f486 und https://github.com/ski7777/ftcommunity- ... c33c4ddbcd haben nicht geholfen, in der lib einen LE Scan möglich zu machen.
Auch ein

Code: Alles auswählen

 sudo chown -R ftc:ftc /sys/class/bluetooth/
konnte nicht helfen.
Hat jemand eine Idee?

Raphael

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Bluetooth

Beitrag von MasterOfGizmo » 01 Mär 2017, 20:41

Es geht einfach nicht als normaler User. Die Einträge, die ich deswegen in sudoers.d/bluetooth hatte hast Du ja explizit gelöscht. Und mit etwas strace und co kommt man auch drauf warum.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 01 Mär 2017, 20:43

In meinem Bluetooth2 branch sind die Einträge in sudoers.d 1:1 genauso, wie bei dir, außer dass ich das pkill rausgenommen habe.

Raphael

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Bluetooth

Beitrag von MasterOfGizmo » 01 Mär 2017, 20:50

Und genau wegen des lescan war das da ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 01 Mär 2017, 20:51

Ok, dann probiere ich das mal

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 02 Mär 2017, 10:09

Mit pkill wird das auch nix.

Hier mal mein voller strace log von folgendem python Skript:

Code: Alles auswählen

from gattlib import DiscoveryService
service = DiscoveryService("hci0")
devices = service.discover(4)

Code: Alles auswählen

execve("/usr/bin/python", ["python"], [/* 15 vars */]) = 0
brk(NULL)                               = 0x21000
uname({sysname="Linux", nodename="FT-txt", ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ffa000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/v7l/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/v7l/neon", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/v7l/vfp", 0xbefff470)  = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/v7l", 0xbefff470)      = -1 ENOENT (No such file or directory)
open("/lib/tls/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/lib/tls/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/neon", 0xbefff470)     = -1 ENOENT (No such file or directory)
open("/lib/tls/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/vfp", 0xbefff470)      = -1 ENOENT (No such file or directory)
open("/lib/tls/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/tls", 0xbefff470)          = -1 ENOENT (No such file or directory)
open("/lib/v7l/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/v7l/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/lib/v7l/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/v7l/neon", 0xbefff470)     = -1 ENOENT (No such file or directory)
open("/lib/v7l/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/v7l/vfp", 0xbefff470)      = -1 ENOENT (No such file or directory)
open("/lib/v7l/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/v7l", 0xbefff470)          = -1 ENOENT (No such file or directory)
open("/lib/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/neon/vfp", 0xbefff470)     = -1 ENOENT (No such file or directory)
open("/lib/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/neon", 0xbefff470)         = -1 ENOENT (No such file or directory)
open("/lib/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/vfp", 0xbefff470)          = -1 ENOENT (No such file or directory)
open("/lib/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib", {st_mode=S_IFDIR|0775, st_size=1291, ...}) = 0
open("/usr/lib/tls/v7l/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/v7l/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/v7l/neon", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/v7l/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/v7l", 0xbefff470)  = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/neon", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/vfp", 0xbefff470)  = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls", 0xbefff470)      = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/v7l/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/v7l/neon", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/v7l/vfp", 0xbefff470)  = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/v7l", 0xbefff470)      = -1 ENOENT (No such file or directory)
open("/usr/lib/neon/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/neon/vfp", 0xbefff470) = -1 ENOENT (No such file or directory)
open("/usr/lib/neon/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/neon", 0xbefff470)     = -1 ENOENT (No such file or directory)
open("/usr/lib/vfp/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/vfp", 0xbefff470)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libpython3.5m.so.1.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\30\332\2\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1518624, ...}) = 0
mmap2(NULL, 1715068, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e34000
mprotect(0xb6f60000, 65536, PROT_NONE)  = 0
mmap2(0xb6f70000, 290816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12c000) = 0xb6f70000
mmap2(0xb6fb7000, 129916, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6fb7000
close(3)                                = 0
open("/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0EF\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=107060, ...}) = 0
mmap2(NULL, 78424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e20000
mmap2(0xb6e30000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0xb6e30000
mmap2(0xb6e32000, 4696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e32000
close(3)                                = 0
open("/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0<\t\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=9640, ...}) = 0
mmap2(NULL, 73912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e0d000
mprotect(0xb6e0f000, 61440, PROT_NONE)  = 0
mmap2(0xb6e1e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6e1e000
close(3)                                = 0
open("/lib/libutil.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\360\t\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=9676, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff9000
mmap2(NULL, 73904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dfa000
mprotect(0xb6dfc000, 61440, PROT_NONE)  = 0
mmap2(0xb6e0b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6e0b000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0<\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=411048, ...}) = 0
mmap2(NULL, 475280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d85000
mprotect(0xb6de9000, 61440, PROT_NONE)  = 0
mmap2(0xb6df8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x63000) = 0xb6df8000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\235h\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=898752, ...}) = 0
mmap2(NULL, 968040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c98000
mprotect(0xb6d70000, 61440, PROT_NONE)  = 0
mmap2(0xb6d7f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd7000) = 0xb6d7f000
mmap2(0xb6d82000, 9576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6d82000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff8000
set_tls(0xb6ff84c0, 0xb6ff8b98, 0xb6fff050, 0xb6ff84c0, 0xb6fff050) = 0
mprotect(0xb6d7f000, 8192, PROT_READ)   = 0
mprotect(0xb6df8000, 4096, PROT_READ)   = 0
mprotect(0xb6e0b000, 4096, PROT_READ)   = 0
mprotect(0xb6e1e000, 4096, PROT_READ)   = 0
mprotect(0xb6e30000, 4096, PROT_READ)   = 0
mprotect(0xb6ffe000, 4096, PROT_READ)   = 0
set_tid_address(0xb6ff8068)             = 1413
set_robust_list(0xb6ff8070, 12)         = 0
rt_sigaction(SIGRTMIN, {0xb6e241c5, [], SA_RESTORER|SA_SIGINFO, 0xb6cbd0b1}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb6e24265, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0xb6cbd0b1}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
brk(NULL)                               = 0x21000
brk(0x42000)                            = 0x42000
getrandom("\21\327\234\224\256\323\211M\364\21\10\352~\315O\\\206F \37m(K\4", 24, GRND_NONBLOCK) = 24
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
mmap2(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6c58000
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
stat64("/bin/python", 0xbeff7aa0)       = -1 ENOENT (No such file or directory)
stat64("/sbin/python", 0xbeff7aa0)      = -1 ENOENT (No such file or directory)
stat64("/usr/bin/python", {st_mode=S_IFREG|0755, st_size=4292, ...}) = 0
readlink("/usr/bin/python", "python3", 4096) = 7
readlink("/usr/bin/python3", "python3.5", 4096) = 9
readlink("/usr/bin/python3.5", 0xbefeca58, 4096) = -1 EINVAL (Invalid argument)
open("/usr/bin/pyvenv.cfg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/pyvenv.cfg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/usr/bin/Modules/Setup", 0xbefeda00) = -1 ENOENT (No such file or directory)
stat64("/usr/bin/lib/python3.5/os.py", 0xbefed9f0) = -1 ENOENT (No such file or directory)
stat64("/usr/bin/lib/python3.5/os.pyc", 0xbefed9f0) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/os.py", 0xbefed9f0) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/os.pyc", {st_mode=S_IFREG|0644, st_size=31338, ...}) = 0
stat64("/usr/bin/pybuilddir.txt", 0xbefeda00) = -1 ENOENT (No such file or directory)
stat64("/usr/bin/lib/python3.5/lib-dynload", 0xbefeda00) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/lib-dynload", {st_mode=S_IFDIR|0755, st_size=2471, ...}) = 0
clock_gettime(CLOCK_REALTIME, {1488445543, 619555755}) = 0
clock_gettime(CLOCK_MONOTONIC, {1919, 17688030}) = 0
mmap2(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6c18000
brk(0x63000)                            = 0x63000
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000
read(3, "MemTotal:         238420 kB\nMemF"..., 1024) = 1024
close(3)                                = 0
munmap(0xb6ff7000, 4096)                = 0
mmap2(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6bd8000
sigaltstack({ss_sp=0x53710, ss_flags=0, ss_size=8192}, NULL) = 0
stat64("/usr/lib/python35.zip", 0xbefff1f0) = -1 ENOENT (No such file or directory)
stat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=16258, ...}) = 0
stat64("/usr/lib/python35.zip", 0xbeffee78) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 200 entries */, 32768) = 6752
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/encodings/__init__.cpython-35m-arm-linux-gnueabihf.so", 0xbeffefe8) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/encodings/__init__.abi3.so", 0xbeffefe8) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/encodings/__init__.so", 0xbeffefe8) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/encodings/__init__.py", 0xbeffefe8) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/encodings/__init__.pyc", {st_mode=S_IFREG|0644, st_size=3877, ...}) = 0
open("/usr/lib/python3.5/encodings/__init__.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
fstat64(3, {st_mode=S_IFREG|0644, st_size=3877, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=3877, ...}) = 0
read(3, "\26\r\r\n\312\325\266X\313\23\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0@\0\0"..., 3878) = 3877
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/codecs.pyc", {st_mode=S_IFREG|0644, st_size=35331, ...}) = 0
open("/usr/lib/python3.5/codecs.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=35331, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=35331, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\207\215\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0:\0\0\0@\0\0"..., 35332) = 35331
read(3, "", 1)                          = 0
close(3)                                = 0
brk(0x8a000)                            = 0x8a000
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/encodings", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 126 entries */, 32768) = 4456
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/encodings/aliases.pyc", {st_mode=S_IFREG|0644, st_size=7593, ...}) = 0
open("/usr/lib/python3.5/encodings/aliases.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=7593, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=7593, ...}) = 0
read(3, "\26\r\r\n\312\325\266X\266<\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\204\2\0\0@\0\0"..., 7594) = 7593
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
stat64("/usr/lib/python3.5/encodings/ascii.pyc", {st_mode=S_IFREG|0644, st_size=2037, ...}) = 0
open("/usr/lib/python3.5/encodings/ascii.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2037, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=2037, ...}) = 0
read(3, "\26\r\r\n\312\325\266X\340\4\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0@\0\0"..., 2038) = 2037
read(3, "", 1)                          = 0
close(3)                                = 0
rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER, 0xb6cbd0a1}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXFSZ, {SIG_IGN, [], SA_RESTORER, 0xb6cbd0a1}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGHUP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGILL, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTRAP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGABRT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGBUS, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGFPE, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGKILL, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR1, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSEGV, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR2, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPIPE, NULL, {SIG_IGN, [], SA_RESTORER, 0xb6cbd0a1}, 8) = 0
rt_sigaction(SIGALRM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSTKFLT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGCONT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSTOP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTSTP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTTIN, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTTOU, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGURG, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXCPU, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXFSZ, NULL, {SIG_IGN, [], SA_RESTORER, 0xb6cbd0a1}, 8) = 0
rt_sigaction(SIGVTALRM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPROF, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGWINCH, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGIO, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPWR, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSYS, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_2, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_3, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_4, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_5, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_6, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_7, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_8, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_9, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_10, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_11, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_12, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_13, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_14, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_15, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_16, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_17, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_18, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_19, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_20, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_21, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_22, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_23, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_24, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_25, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_26, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_27, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_28, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_29, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_30, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_31, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_32, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0xb6eeef3d, [], SA_RESTORER, 0xb6cbd0a1}, {SIG_DFL, [], 0}, 8) = 0
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
stat64("/usr/lib/python3.5/encodings/utf_8.pyc", {st_mode=S_IFREG|0644, st_size=1737, ...}) = 0
open("/usr/lib/python3.5/encodings/utf_8.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1737, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=1737, ...}) = 0
read(3, "\26\r\r\n\312\325\266X\355\3\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0@\0\0"..., 1738) = 1737
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
stat64("/usr/lib/python3.5/encodings/latin_1.pyc", {st_mode=S_IFREG|0644, st_size=2049, ...}) = 0
open("/usr/lib/python3.5/encodings/latin_1.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2049, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=2049, ...}) = 0
read(3, "\26\r\r\n\312\325\266X\360\4\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0@\0\0"..., 2050) = 2049
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/io.pyc", {st_mode=S_IFREG|0644, st_size=3486, ...}) = 0
open("/usr/lib/python3.5/io.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3486, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=3486, ...}) = 0
read(3, "\26\r\r\n\311\325\266XD\r\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\22\0\0\0@\0\0"..., 3487) = 3486
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/abc.pyc", {st_mode=S_IFREG|0644, st_size=7893, ...}) = 0
open("/usr/lib/python3.5/abc.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=7893, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=7893, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\264!\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0@\0\0"..., 7894) = 7893
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/_weakrefset.pyc", {st_mode=S_IFREG|0644, st_size=8449, ...}) = 0
open("/usr/lib/python3.5/_weakrefset.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=8449, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=8449, ...}) = 0
read(3, "\26\r\r\n\311\325\266XI\26\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0@\0\0"..., 8450) = 8449
read(3, "", 1)                          = 0
close(3)                                = 0
dup(0)                                  = 3
close(3)                                = 0
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
_llseek(0, 0, 0xbefff858, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
_llseek(0, 0, 0xbefff8d8, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
dup(1)                                  = 3
close(3)                                = 0
fstat64(1, {st_mode=S_IFREG|0644, st_size=23902, ...}) = 0
ioctl(1, TCGETS, 0xbefff8a4)            = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(1, 0, [24049], SEEK_CUR)        = 0
ioctl(1, TCGETS, 0xbefff9d4)            = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(1, TCGETS, 0xbefff97c)            = -1 ENOTTY (Inappropriate ioctl for device)
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/_bootlocale.pyc", {st_mode=S_IFREG|0644, st_size=1072, ...}) = 0
open("/usr/lib/python3.5/_bootlocale.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1072, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=1072, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\25\5\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0\0@\0\0"..., 1073) = 1072
read(3, "", 1)                          = 0
close(3)                                = 0
_llseek(1, 0, [24859], SEEK_CUR)        = 0
_llseek(1, 0, [24903], SEEK_CUR)        = 0
dup(2)                                  = 3
close(3)                                = 0
fstat64(2, {st_mode=S_IFREG|0644, st_size=25032, ...}) = 0
ioctl(2, TCGETS, 0xbefff8a4)            = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(2, 0, [25179], SEEK_CUR)        = 0
ioctl(2, TCGETS, 0xbefff9d4)            = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(2, TCGETS, 0xbefff97c)            = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(2, 0, [25393], SEEK_CUR)        = 0
_llseek(2, 0, [25437], SEEK_CUR)        = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/site.pyc", {st_mode=S_IFREG|0644, st_size=17633, ...}) = 0
open("/usr/lib/python3.5/site.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=17633, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=17633, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\371R\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0@\0\0"..., 17634) = 17633
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/os.pyc", {st_mode=S_IFREG|0644, st_size=31338, ...}) = 0
open("/usr/lib/python3.5/os.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=31338, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=31338, ...}) = 0
read(3, "\26\r\r\n\311\325\266Xj\220\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0000\0\0\0@\0\0"..., 31339) = 31338
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/stat.pyc", {st_mode=S_IFREG|0644, st_size=4190, ...}) = 0
open("/usr/lib/python3.5/stat.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4190, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=4190, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\256\23\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0@\0\0"..., 4191) = 4190
read(3, "", 1)                          = 0
close(3)                                = 0
mmap2(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6b98000
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/posixpath.pyc", {st_mode=S_IFREG|0644, st_size=11163, ...}) = 0
open("/usr/lib/python3.5/posixpath.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=11163, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=11163, ...}) = 0
read(3, "\26\r\r\n\311\325\266X!:\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0@\0\0"..., 11164) = 11163
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/genericpath.pyc", {st_mode=S_IFREG|0644, st_size=3960, ...}) = 0
open("/usr/lib/python3.5/genericpath.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3960, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=3960, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\f\21\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0\0@\0\0"..., 3961) = 3960
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/_collections_abc.pyc", {st_mode=S_IFREG|0644, st_size=29665, ...}) = 0
open("/usr/lib/python3.5/_collections_abc.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=29665, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=29665, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\202`\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\26\0\0\0@\0\0"..., 29666) = 29665
read(3, "", 1)                          = 0
close(3)                                = 0
brk(0xac000)                            = 0xac000
stat64("/usr/lib/python3.5/", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/_sitebuiltins.pyc", {st_mode=S_IFREG|0644, st_size=3697, ...}) = 0
open("/usr/lib/python3.5/_sitebuiltins.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3697, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=3697, ...}) = 0
read(3, "\26\r\r\n\311\325\266X+\f\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0@\0\0"..., 3698) = 3697
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/usr/bin/pyvenv.cfg", 0xbeffef38) = -1 ENOENT (No such file or directory)
stat64("/usr/pyvenv.cfg", 0xbeffef38)   = -1 ENOENT (No such file or directory)
geteuid32()                             = 1001
getuid32()                              = 1001
getegid32()                             = 1001
getgid32()                              = 1001
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 200 entries */, 32768) = 6752
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/sysconfig.pyc", {st_mode=S_IFREG|0644, st_size=16937, ...}) = 0
open("/usr/lib/python3.5/sysconfig.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=16937, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=16937, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\23_\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\31\0\0\0@\0\0"..., 16938) = 16937
read(3, "", 1)                          = 0
close(3)                                = 0
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=114, ...}) = 0
lstat64("/usr/bin", {st_mode=S_IFDIR|0755, st_size=6910, ...}) = 0
lstat64("/usr/bin/python", {st_mode=S_IFLNK|0777, st_size=7, ...}) = 0
readlink("/usr/bin/python", "python3", 4096) = 7
lstat64("/usr/bin/python3", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0
readlink("/usr/bin/python3", "python3.5", 4096) = 9
lstat64("/usr/bin/python3.5", {st_mode=S_IFREG|0755, st_size=4292, ...}) = 0
stat64("/usr/bin/Modules/Setup.dist", 0xbeffe560) = -1 ENOENT (No such file or directory)
stat64("/usr/bin/Modules/Setup.local", 0xbeffe560) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/_sysconfigdata.pyc", {st_mode=S_IFREG|0644, st_size=21676, ...}) = 0
open("/usr/lib/python3.5/_sysconfigdata.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=21676, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=21676, ...}) = 0
read(3, "\26\r\r\n\311\325\266XVW\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\f\5\0\0@\0\0"..., 21677) = 21676
read(3, "", 1)                          = 0
close(3)                                = 0
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=114, ...}) = 0
lstat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=16258, ...}) = 0
lstat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
lstat64("/usr/lib/python3.5/config-3.5m", {st_mode=S_IFDIR|0755, st_size=31, ...}) = 0
stat64("/home/ftc/.local/lib/python3.5/site-packages", 0xbefff040) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/python3.5/site-packages", {st_mode=S_IFDIR|0755, st_size=2745, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/site-packages", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 96 entries */, 32768)  = 4152
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
open("/usr/lib/python3.5/site-packages/easy-install.pth", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=325, ...}) = 0
ioctl(3, TCGETS, 0xbeffee0c)            = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR)            = 0
ioctl(3, TCGETS, 0xbeffedc4)            = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR)            = 0
read(3, "import sys; sys.__plen = len(sys"..., 8192) = 325
brk(0xcd000)                            = 0xcd000
brk(0xc8000)                            = 0xc8000
stat64("/usr/lib/python3.5/site-packages/PyBluez-0.22-py3.5-linux-x86_64.egg", {st_mode=S_IFREG|0644, st_size=95469, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/gattlib-0.20150805-py3.5-linux-x86_64.egg", {st_mode=S_IFREG|0644, st_size=724300, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
read(3, "", 8192)                       = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/site-packages/PyBluez-0.22-py3.5-linux-x86_64.egg", {st_mode=S_IFREG|0644, st_size=95469, ...}) = 0
open("/usr/lib/python3.5/site-packages/PyBluez-0.22-py3.5-linux-x86_64.egg", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, FIOCLEX)                       = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=95469, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000
fstat64(3, {st_mode=S_IFREG|0644, st_size=95469, ...}) = 0
_llseek(3, 95232, [95232], SEEK_SET)    = 0
read(3, "GG-INFO/zip-safePK\1\2\24\3\24\0\0\0\10\0\362\210aJ"..., 215) = 215
read(3, "PK\5\6\0\0\0\0\20\0\20\0E\4\0\0\222p\1\0\0\0", 1024) = 22
_llseek(3, 94208, [94208], SEEK_SET)    = 0
read(3, "\275Gk\265\353\241J\253\212i\373\263\310>\256w\240\363m\361N\376\323\t\377\235\3074j*_\263"..., 1024) = 1024
stat64("/usr/lib/python3.5/encodings", {st_mode=S_IFDIR|0755, st_size=2468, ...}) = 0
stat64("/usr/lib/python3.5/encodings/cp437.pyc", {st_mode=S_IFREG|0644, st_size=7412, ...}) = 0
open("/usr/lib/python3.5/encodings/cp437.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=7412, ...}) = 0
_llseek(4, 0, [0], SEEK_CUR)            = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=7412, ...}) = 0
read(4, "\26\r\r\n\312\325\266X\4\207\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0@\0\0"..., 7413) = 7412
read(4, "", 1)                          = 0
close(4)                                = 0
mmap2(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6b58000
read(3, "GG-INFO/zip-safePK\1\2\24\3\24\0\0\0\10\0\362\210aJ"..., 1024) = 237
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0xb6ff7000, 4096)                = 0
stat64("/usr/lib/python3.5/site-packages/gattlib-0.20150805-py3.5-linux-x86_64.egg", {st_mode=S_IFREG|0644, st_size=724300, ...}) = 0
open("/usr/lib/python3.5/site-packages/gattlib-0.20150805-py3.5-linux-x86_64.egg", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, FIOCLEX)                       = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=724300, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000
fstat64(3, {st_mode=S_IFREG|0644, st_size=724300, ...}) = 0
_llseek(3, 723968, [723968], SEEK_SET)  = 0
read(3, "\0\35\0\0\0\0\0\0\0\0\0\0\0\244\201.\10\v\0EGG-INFO/depe"..., 310) = 310
read(3, "PK\5\6\0\0\0\0\10\0\10\0%\2\0\0\21\v\v\0\0\0", 1024) = 22
_llseek(3, 722944, [722944], SEEK_SET)  = 0
read(3, "\304\217\n\0\0\0\10\0\0\0\26\0\0\0EGG-INFO/top_level"..., 1024) = 1024
read(3, "\0\35\0\0\0\0\0\0\0\0\0\0\0\244\201.\10\v\0EGG-INFO/depe"..., 1024) = 332
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0xb6ff7000, 4096)                = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 4 entries */, 32768)   = 112
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 5 entries */, 32768)   = 136
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/plat-linux", {st_mode=S_IFDIR|0755, st_size=93, ...}) = 0
stat64("/usr/lib/python3.5/plat-linux", {st_mode=S_IFDIR|0755, st_size=93, ...}) = 0
stat64("/usr/lib/python3.5/plat-linux", {st_mode=S_IFDIR|0755, st_size=93, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/plat-linux", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 7 entries */, 32768)   = 208
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/lib-dynload", {st_mode=S_IFDIR|0755, st_size=2471, ...}) = 0
stat64("/usr/lib/python3.5/lib-dynload", {st_mode=S_IFDIR|0755, st_size=2471, ...}) = 0
stat64("/usr/lib/python3.5/lib-dynload", {st_mode=S_IFDIR|0755, st_size=2471, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/lib-dynload", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 51 entries */, 32768)  = 3240
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/site-packages", {st_mode=S_IFDIR|0755, st_size=2745, ...}) = 0
stat64("/usr/lib/python3.5/site-packages", {st_mode=S_IFDIR|0755, st_size=2745, ...}) = 0
stat64("/usr/lib/python3.5/site-packages", {st_mode=S_IFDIR|0755, st_size=2745, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.5/site-packages", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 96 entries */, 32768)  = 4152
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/plat-linux", {st_mode=S_IFDIR|0755, st_size=93, ...}) = 0
stat64("/usr/lib/python3.5/lib-dynload", {st_mode=S_IFDIR|0755, st_size=2471, ...}) = 0
stat64("/usr/lib/python3.5/site-packages", {st_mode=S_IFDIR|0755, st_size=2745, ...}) = 0
write(2, "Python 3.5.2 (default, Mar  1 20"..., 77Python 3.5.2 (default, Mar  1 2017, 15:07:46) 
[GCC 5.3.1 20160113] on linux
) = 77
write(2, "Type \"help\", \"copyright\", \"credi"..., 71Type "help", "copyright", "credits" or "license" for more information.
) = 71
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
getcwd("/home/ftc", 1024)               = 10
stat64("/home/ftc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/home/ftc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/home/ftc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/home/ftc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 18 entries */, 32768)  = 632
getdents64(3, /* 0 entries */, 32768)   = 0
close(3)                                = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/plat-linux", {st_mode=S_IFDIR|0755, st_size=93, ...}) = 0
stat64("/usr/lib/python3.5/lib-dynload", {st_mode=S_IFDIR|0755, st_size=2471, ...}) = 0
stat64("/usr/lib/python3.5/lib-dynload/readline.cpython-35m-arm-linux-gnueabihf.so", {st_mode=S_IFREG|0755, st_size=17944, ...}) = 0
futex(0xb6e1f0ac, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/usr/lib/python3.5/lib-dynload/readline.cpython-35m-arm-linux-gnueabihf.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0T\35\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=17944, ...}) = 0
mmap2(NULL, 82280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b43000
mprotect(0xb6b47000, 61440, PROT_NONE)  = 0
mmap2(0xb6b56000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xb6b56000
close(3)                                = 0
open("/lib/libreadline.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libreadline.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\270\313\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=160308, ...}) = 0
mmap2(NULL, 229304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b0b000
mprotect(0xb6b2e000, 65536, PROT_NONE)  = 0
mmap2(0xb6b3e000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0xb6b3e000
mmap2(0xb6b42000, 4024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6b42000
close(3)                                = 0
open("/usr/lib/libncurses.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0P\240\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=173752, ...}) = 0
mmap2(NULL, 239496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ad0000
mprotect(0xb6af8000, 65536, PROT_NONE)  = 0
mmap2(0xb6b08000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0xb6b08000
close(3)                                = 0
rt_sigaction(SIGWINCH, {0xb6b44e49, [], SA_RESTORER, 0xb6cbd0a1}, {SIG_DFL, [], 0}, 8) = 0
ioctl(1, TCGETS, 0xbefff364)            = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(1, TCGETS, 0xbefff2bc)            = -1 ENOTTY (Inappropriate ioctl for device)
stat64("/home/ftc/.terminfo", 0xbeffe288) = -1 ENOENT (No such file or directory)
stat64("/usr/share/terminfo", {st_mode=S_IFDIR|0755, st_size=69, ...}) = 0
access("/usr/share/terminfo/x/xterm", R_OK) = 0
open("/usr/share/terminfo/x/xterm", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3270, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000
read(3, "\32\0010\0&\0\17\0\235\1l\5xterm|xterm terminal"..., 4096) = 3270
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0xb6ff7000, 4096)                = 0
ioctl(2, TCGETS, 0xbefff2bc)            = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(2, TCGETS, 0xbefff28c)            = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(0, TIOCGWINSZ, {ws_row=48, ws_col=140, ws_xpixel=0, ws_ypixel=0}) = 0
ioctl(0, TIOCGWINSZ, {ws_row=48, ws_col=140, ws_xpixel=0, ws_ypixel=0}) = 0
ioctl(0, TIOCSWINSZ, {ws_row=48, ws_col=140, ws_xpixel=0, ws_ypixel=0}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
stat64("/home/ftc/.inputrc", 0xbefff338) = -1 ENOENT (No such file or directory)
stat64("/etc/inputrc", {st_mode=S_IFREG|0644, st_size=1180, ...}) = 0
open("/etc/inputrc", O_RDONLY|O_LARGEFILE) = 3
read(3, "# /etc/inputrc - global inputrc "..., 1180) = 1180
close(3)                                = 0
getcwd("/home/ftc", 1024)               = 10
stat64("/home/ftc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=45, ...}) = 0
stat64("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg", {st_mode=S_IFDIR|0755, st_size=62, ...}) = 0
stat64("/usr/lib/python3.5", {st_mode=S_IFDIR|0755, st_size=3757, ...}) = 0
stat64("/usr/lib/python3.5/rlcompleter.pyc", {st_mode=S_IFREG|0644, st_size=5810, ...}) = 0
open("/usr/lib/python3.5/rlcompleter.pyc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5810, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=5810, ...}) = 0
read(3, "\26\r\r\n\311\325\266X\243\30\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0\0@\0\0"..., 5811) = 5810
read(3, "", 1)                          = 0
close(3)                                = 0
stat64("/etc/inputrc", {st_mode=S_IFREG|0644, st_size=1180, ...}) = 0
open("/etc/inputrc", O_RDONLY|O_LARGEFILE) = 3
read(3, "# /etc/inputrc - global inputrc "..., 1180) = 1180
close(3)                                = 0
open("/home/ftc/.python_history", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0600, st_size=1928, ...}) = 0
read(3, "import bluetooth as bt\nimport bl"..., 1928) = 1928
close(3)                                = 0
gettimeofday({1488445544, 400017}, NULL) = 0
gettimeofday({1488445544, 400644}, NULL) = 0
gettimeofday({1488445544, 401221}, NULL) = 0
gettimeofday({1488445544, 401778}, NULL) = 0
gettimeofday({1488445544, 402335}, NULL) = 0
gettimeofday({1488445544, 403170}, NULL) = 0
gettimeofday({1488445544, 403725}, NULL) = 0
gettimeofday({1488445544, 404253}, NULL) = 0
gettimeofday({1488445544, 404770}, NULL) = 0
gettimeofday({1488445544, 405281}, NULL) = 0
gettimeofday({1488445544, 405798}, NULL) = 0
gettimeofday({1488445544, 406317}, NULL) = 0
gettimeofday({1488445544, 406832}, NULL) = 0
gettimeofday({1488445544, 407345}, NULL) = 0
gettimeofday({1488445544, 408101}, NULL) = 0
gettimeofday({1488445544, 408639}, NULL) = 0
gettimeofday({1488445544, 409160}, NULL) = 0
gettimeofday({1488445544, 409682}, NULL) = 0
gettimeofday({1488445544, 410200}, NULL) = 0
gettimeofday({1488445544, 410715}, NULL) = 0
gettimeofday({1488445544, 411230}, NULL) = 0
gettimeofday({1488445544, 411745}, NULL) = 0
gettimeofday({1488445544, 412259}, NULL) = 0
gettimeofday({1488445544, 412975}, NULL) = 0
gettimeofday({1488445544, 413510}, NULL) = 0
gettimeofday({1488445544, 414032}, NULL) = 0
gettimeofday({1488445544, 414552}, NULL) = 0
gettimeofday({1488445544, 415074}, NULL) = 0
gettimeofday({1488445544, 415592}, NULL) = 0
gettimeofday({1488445544, 416110}, NULL) = 0
gettimeofday({1488445544, 416629}, NULL) = 0
gettimeofday({1488445544, 417148}, NULL) = 0
gettimeofday({1488445544, 417756}, NULL) = 0
gettimeofday({1488445544, 418319}, NULL) = 0
gettimeofday({1488445544, 419524}, NULL) = 0
gettimeofday({1488445544, 420958}, NULL) = 0
gettimeofday({1488445544, 421578}, NULL) = 0
gettimeofday({1488445544, 422117}, NULL) = 0
gettimeofday({1488445544, 422766}, NULL) = 0
gettimeofday({1488445544, 423359}, NULL) = 0
gettimeofday({1488445544, 423883}, NULL) = 0
gettimeofday({1488445544, 424400}, NULL) = 0
gettimeofday({1488445544, 424912}, NULL) = 0
gettimeofday({1488445544, 425428}, NULL) = 0
gettimeofday({1488445544, 425942}, NULL) = 0
gettimeofday({1488445544, 426459}, NULL) = 0
gettimeofday({1488445544, 426976}, NULL) = 0
gettimeofday({1488445544, 427491}, NULL) = 0
gettimeofday({1488445544, 428150}, NULL) = 0
gettimeofday({1488445544, 428690}, NULL) = 0
gettimeofday({1488445544, 429217}, NULL) = 0
gettimeofday({1488445544, 429733}, NULL) = 0
gettimeofday({1488445544, 430253}, NULL) = 0
gettimeofday({1488445544, 430767}, NULL) = 0
gettimeofday({1488445544, 431282}, NULL) = 0
gettimeofday({1488445544, 431795}, NULL) = 0
gettimeofday({1488445544, 432308}, NULL) = 0
gettimeofday({1488445544, 432947}, NULL) = 0
gettimeofday({1488445544, 433477}, NULL) = 0
gettimeofday({1488445544, 434201}, NULL) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(1, TCGETS, 0xbefff584)            = -1 ENOTTY (Inappropriate ioctl for device)
write(2, ">>> ", 4>>> )                     = 4
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000
read(0, "\33[A", 1024)                  = 3
read(0, "\33[A", 1024)                  = 3
read(0, "\33[A", 1024)                  = 3
read(0, "\r", 1024)                     = 1
read(0, "\33[A", 1024)                  = 3
read(0, "\33[A", 1024)                  = 3
read(0, "\33[A", 1024)                  = 3
read(0, "\r", 1024)                     = 1
read(0, "\33[A\33[A", 1024)             = 6
read(0, "\33[A", 1024)                  = 3
read(0, "\r", 1024)                     = 1
read(0, strace: Process 1413 detached
 <detached ...>
>>> 
KeyboardInterrupt

Vielleicht hat ja jemand eine Idee

Raphael

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 02 Mär 2017, 10:11

Ups, der Log ist unvollständig

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 02 Mär 2017, 10:13

Hier der Log vom eigentlichen Scan Aufruf:

Code: Alles auswählen

ioctl(0, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0xb6b44e49, [], SA_RESTORER, 0xb6cbd0a1}, {0xb6b2410d, [], SA_RESTORER|SA_RESTART, 0xb6cbd0a1}, 8) = 0
gettimeofday({1488445942, 582029}, NULL) = 0
getsockopt(4, SOL_IP, IP_TTL, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", [16]) = 0
setsockopt(4, SOL_IP, IP_TTL, "\20\0\0\0\1\300\0\0\0\0\0@\v \0\0", 16) = 0
writev(4, [{iov_base="\1", iov_len=1}, {iov_base="\v \7", iov_len=3}, {iov_base="\1\20\0\20\0\0\0", iov_len=7}], 3) = -1 EPERM (Operation not permitted)
setsockopt(4, SOL_IP, IP_TTL, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
write(2, "Traceback (most recent call last"..., 35Traceback (most recent call last):
) = 35
write(2, "  File \"<stdin>\", line 1, in <mo"..., 38  File "<stdin>", line 1, in <module>
) = 38
open("<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python3.5/site-packages/PyBluez-0.22-py3.5-linux-x86_64.egg/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOTDIR (Not a directory)
open("/usr/lib/python3.5/site-packages/gattlib-0.20150805-py3.5-linux-x86_64.egg/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOTDIR (Not a directory)
open("/usr/lib/python3.5/site-packages/robolt-1.0.0-py3.5.egg/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python3.5/site-packages/wedo-1.0.0-py3.5.egg/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python35.zip/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python3.5/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python3.5/plat-linux/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python3.5/lib-dynload/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/python3.5/site-packages/<stdin>", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "RuntimeError: Set scan parameter"..., 57RuntimeError: Set scan parameters failed (are you root?)
) = 57
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, TIOCGWINSZ, {ws_row=48, ws_col=140, ws_xpixel=0, ws_ypixel=0}) = 0
ioctl(0, TIOCSWINSZ, {ws_row=48, ws_col=140, ws_xpixel=0, ws_ypixel=0}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = 0
w

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 02 Mär 2017, 23:32

ski7777 hat geschrieben:Bluetooth macht Fortschritte.
Mittlerweile gibt es die pybluez library, mit Hilfe welcher man jetzt nach Geräten suchen kann:
BildBildBildBild

Nun stellt sich mir die Frage, was wir noch brauchen. Einen LE Scan wird es auch noch geben, aber in Ermangelung eines LE Gerätes wird die Funktionsprüfung da schwierig.

Raphael
Und da gehts weiter;
BildBildBildBild
Theoretisch zeigt die Detailseite zu einem Service bis zu:
  • description
  • provider
  • protocol
  • port
  • service-classes
  • profiles
  • service-id
Ich hab keine Ahnung, was das alles genau bedeutet, aber pybluez gibt mir das halt ;)

Was soll noch alles in die App, außer der LE Scan?

Raphael

nq30
Beiträge: 144
Registriert: 25 Feb 2017, 07:44

Re: CFW: Bluetooth

Beitrag von nq30 » 03 Mär 2017, 06:58

Cool :)
Danke für die Mühe :D
Mit freundlichen Grüssen
nq30

ft:cool :)

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Bluetooth

Beitrag von MasterOfGizmo » 04 Mär 2017, 10:03

Das wird ja eher eine Art Bluetooth-Explorer aber nichts, womit ein Endanwender etwas anfangen kann. Wäre es da nicht sinvoll, das in einer seperaten App zu machen und die über den Store zu vertreiben?
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

nq30
Beiträge: 144
Registriert: 25 Feb 2017, 07:44

Re: CFW: Bluetooth

Beitrag von nq30 » 04 Mär 2017, 10:25

Was soll und sollte das werden?
Da ist zwar ein Scan und alles aber was bringt dir ein Scan ohne verbinden?
Mit freundlichen Grüssen
nq30

ft:cool :)

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 04 Mär 2017, 10:35

Der "Bluetooth Explorer" ist mehr ein ausgeartetes Nebenwerk. Ich habe jetzt noch eine Funktion zur Namensänderung hinzugefügt:
BildBildBildBild
Um auf den Dialog zur Namensänderung zu kommen, einfach im roten Bereich drücken.

Der Vorgang war etwas knifflig, da ich verschiedene Dateien in /var/lib löschen muss (Bei jeder Änderung) und noch die main.conf von Bluetooth ändern muss. Das löschen mache ich jetzt generell bei jedem abschalten von Bluetooth, da das der letzte Moment ist, in dem ich die MAC-Adresse noch kenne, die ich brauche, um den Pfad zu generieren. Die Konfiguration ändere ich nicht, wie erwartet per Configparser, sondern manipuliere die Datei direkt. Die main.conf darf der Nutzer ftc komplett bearbeiten.
Als nächstes steht jetzt PAN.D und LE auf meiner ToDo-Liste.

Raphael

P.S. Beim

Unten gehts weiter ;)
Zuletzt geändert von ski7777 am 04 Mär 2017, 11:10, insgesamt 1-mal geändert.

nq30
Beiträge: 144
Registriert: 25 Feb 2017, 07:44

Re: CFW: Bluetooth

Beitrag von nq30 » 04 Mär 2017, 11:00

Lieber ski7777,
Wird es verbinden geben??
Aber deine Namenssache ist sehr praktisch.
Wie lang ist deine ToDo-Liste?
und was ist pan.d?
Mit freundlichen Grüssen
nq30

ft:cool :)

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Bluetooth

Beitrag von ski7777 » 04 Mär 2017, 11:09

Oh, da habe ich ja glatt das P.S. unterschlagen.
Verbinden ist so eine Sache, die ist recht komplex. Ihr kennt das sicher von euren Geräten zu Hause. Einmal will das Gerät gar keinen Pin und gut ist, das nächste will einen Pin wissen und beim Dritten wird auf beiden Seiten eine Kennung angezeigt, die man dann haargenau überprüft und dann ohne Überprüfung auf OK drückt ;) Da rauszufinden,was das Gerät will und das dann umsetzen wir wohl etwas schwierig. Deshalb würde ich dieses Funktion direkt in die entsprecende App bringen. So sollte es dann z.B. bei der neuen Fernbedienung eine Test-App geben, in der dann auch gepairt werden kann. Weil auch nur dieses App weiß, wie das RFCOMM eingestellt werden muss. Für den TX wird es später auch mal eine eigene App geben (wenn ich von ft die Daten habe und das ganze umgesetzt ist).

Also auf meiner ToDo Liste steht nur noch der LE Scan und PAN.D (Bluetooth TCP/IP Netwerk)

Raphael

Antworten