PeerTalk, BeagleBone, dan Raspberry Pi
Jawatan ini pada asalnya diterbitkan dalam dua bahagian [1,2] pada The Daily ACK 25 Ogos, 20012. Ia diposkan semula di sini di laman web MAKE dengan kebenaran.
Saya mendapat sedikit sihir oleh Rasmus Andersson yang dipanggil PeerTalk. Ia adalah perpustakaan Objektif-C yang membolehkan anda berkomunikasi antara iPhone dan Mac anda melalui kabel dok USB menggunakan soket TCP.
Pemikiran segera saya ialah jika ini benar-benar hanya bergantung kepada keupayaan mod hos USB di hujungnya, mekanisme yang sama sepatutnya dapat digunakan untuk bercakap dengan sesuatu seperti BeagleBone, atau Raspberry Pi, bukan hanya Mac anda. Ini akan membolehkan anda menyambungkan telefon anda terus ke papan pengawal mikro dan memacu perkakasan secara langsung, seperti kabel Redpark tetapi melangkaui rangka kerja Akses Luar Apple.
Jadi, saya mula menggali di dalam kod sumber untuk mengetahui sama ada ia bergantung kepada apa yang akan menjadi khusus kepada OS X, ia menjadi jelas bahawa PeerTalk kebanyakannya kod soket yang benar-benar baik duduk di atas USB Multiplex Daemon (usbmuxd). Ini sedikit perisian yang bertanggungjawab untuk bercakap dengan iPhone anda melalui USB dan menyelaraskan akses ke perkhidmatannya oleh aplikasi lain. Berkesan ini adalah penggunaan iTunes dan Xcode untuk bercakap dengan telefon anda apabila anda memasukkannya ke port USB Mac anda.
Jadi mana-mana peranti yang mahu bercakap dengan iPhone menggunakan keperluan kaedah iniusbmuxd. Nasib baik bagi saya terdapat beberapa orang yang telah bekerja bagaimana bercakap dengan iPhone dari Linux, dan ada kerjausbmuxd untuk Linux.
Terdapat juga beberapa kebergantungan lain yang tidak terdapat di stok Ångström Linux saham pada BeagleBone saya, atau bahkan pakej melaluiopkg, bangunanusbmuxd pada BeagleBone saya memerlukanlibusb dancmake. Jadi sebelum membinausbmuxd, Saya terpaksa membinacmake, yang bermaksud menyelesaikan beberapa masalah dengan perpustakaan mampatan saham yang dihantar dengan Ångström.
Walau bagaimanapun beberapa jam kemudian selepas menunggu cukup untuk perisian untuk membina untuk meyakinkan saya bahawa sebelum melakukan apa-apa perkembangan yang serius pada BeagleBone saya benar-benar harus membina alat tool ARMv7 pada Mac saya untuk menyusun menyusun perkara bukan membina mereka secara langsung di papan ....
... Saya berjaya mendapatkan yang mudah"Hello" dari iPhone saya ke BeagleBone dan kemudian melaluiskrin ke Mac menggunakan port forwarding dan pendirian lama itu,telnet.
Walaupun saya meretas untuk mendapatkan kerja ini, saya tidak bersendirian. David House melihat ke bawah beberapa lorong belakang yang sama untuk mendapatkan PeerTalk bercakap dengan Ras Raspberry Pi, dan kami memukul masalah bolak-balik di Twitter sambil menunggu kod dikumpulkan dengan baik ke dalam malam ...
Semasa saya bekerja di satu hujung, David bekerja di pihak yang lain, meletakkan pelanggan di Raspberry Pi duduk di atas usbmuxd yang akan bercakap secara asli kepada PeerTalk pada iOS yang dia panggil peertalk-python. Oleh kerana kita mempunyai kod sumber kedua-dua hujung, ia tidak begitu keras. Hanya cukup keras.
Jika anda ingin meniru ini pada BeagleBone, atau Raspberry Pi, anda perlu memuat turun dan membina perpustakaan PeerTalk, kemudian membina dan menggunakan aplikasi contoh iOS dan OSX dan dapatkannya dan berjalan.
Kemudian sambungkan dan boot BeagleBone anda. Anda perlu kuasa papan menggunakan penyesuai utama seperti ketika anda menyusun sesuatu. Anda mungkin akan menarik amperaj yang mencukupi bahawa komputer anda akan mematikan port USB untuk melindungi dirinya sendiri dan sebagai akibatnya turun BeagleBone anda. Saya mempunyai ini berlaku kepada saya beberapa kali sebelum akhirnya saya menggali penyesuai utama keluar dari laci pejabat saya. Walau bagaimanapun, kerana anda menyalakan papan dari sesalur kuasa, anda juga perlu menyambungkan kabel Ethernet supaya anda bolehssh [email dilindungi] dan log masuk ke papan atas rangkaian.
1. Teruskan dan log masuk ke BeagleBone sebagai root. 2. Muat turun, bina dan pasanglibusb. Versi 1.0.9 membina, menghubungkan dan memasang okay. 3. Muat turun, bina dan pasangcmake,yang anda perlu binausbmuxd kemudian. Anda perlu merebut pembayaran malam Git terkini kerana versi pelepasan yang lebih tua tidak membina, menghadapi masalah dengan stoklibbz2mampatan pada BeagleBone.
4. Kita juga perlukanpercuma,Walau bagaimanapun, ini boleh didapati sebagai sebahagian daripada sistem pengurusan pakej di Ångström Linux, jadi semua yang perlu anda lakukan untuk memasang ini adalah jenisopkg install libplist-dev pada masa itu.
5. Muat turun, bina dan pasangusbmuxd. Versi 1.0.8 membina, mengaitkan dan memasang okay, walaupun anda mungkin menggunakannyaccmake dan konfigurasikan dengan tangan, bukannya menggunakancmake, kerana ia tidak dapat mencarilibusb termasuk fail yang telah dipasang/ usr / setempat. 6. Buat ausbmux pengguna
groupadd -r usbmux -g 114 useradd -r -g usbmux -d / -s / sbin / nologin -c "usbmux user" -u 114 usbmux
7. Seperti BeagleBoard tidak mempunyai syslog dihidupkan secara lalai, dan anda memerlukannya untuk debugging, hidupkansyslogd dari skrip yang relevan di/etc/init.d.
8. Mainkanusbmux deamon, dengan menaipusbmuxd -v -vpada masa itu. 9. Palamkan iPhone anda ke USB (sisi tuan rumah) USB pada BeagleBoard anda, anda perlu melihat beberapa menatal debug dengan masuk/ var / log / mesej.
10. Muat turun David House'speertalk-python dan pergantungannya.
11. Pada iPhone anda mulakan pelanggan PeerTalk untuk iOS.
12. Mulakan pelanggan python di BeagleBone dengan menaippython ./peertalk.py pada masa itu.
Ketik mesej pada prompt, dan anda sepatutnya melihat sesuatu seperti ini ...
Dari sana ia cukup remeh untuk membina"Hai dunia" contohnya, hanya dengan menggodam dengan kod David dan menukarkan denyutan jantung apabila LED BeagleBone menerima sebarang mesej.
(run) = 'echo 0' / sys / class / leds / beaglebone :: usr0 / brightness 'i = 0 while self._running: try: msg = self._psock.recv (16) if len (msg)> 0: frame = framestructure.unpack (msg) size = frame [3] msgdata = self._psock.recv (size) print "Received:% s" msgdata if i == 0: os.system (ledOn) i = 1 else: os.system (ledOff) i =
Yang membawa anda ke titik ini ... Yang cukup banyak di mana saya telah sampai sekarang. Langkah seterusnya adalah aplikasi yang sesuai pada hujung IOS perkara dengan kawalan lebih generik pin header BeagleBone, dan backend Python yang lebih fleksibel pada BeagleBone itu sendiri. David House juga berjaya mendapatkan segala-galanya dan bekerja di Raspberry Pi.
Satu-satunya perubahan dari prosedur yang ditetapkan BeagleBone ialah anda perlu ambilpercuma menggunakanapt-get bukannyaopkg, dan kerana anda tidak akan dilog masuk sebagai root yang perlu diingatsudousbmuxd -v -v apabila anda memulakan daemon USB. Selain itu, anda harus baik untuk pergi ...