Orange Pi 2G-IOT: peta minefield



Beberapa waktu lalu, saya ditawari untuk bekerja sedikit dengan PC single-board Orange Pi 2G-IOT (built-in 2G dan harganya terlihat sangat menarik). Setelah membaca posting tentang surga oranye , saya berpikir bahwa saya akan mengulangi jalan ini tanpa kesulitan, terutama karena dengan Linux saya berada di "kamu" (atau lebih tepatnya, saya berpikir sekitar tiga minggu yang lalu) dan sudah memiliki pengalaman dengan Raspberry Pi 2 B +. Dalam praktiknya, jalan ini ternyata jauh lebih lama. Ada perasaan bahwa teman-teman Cina kami sengaja menciptakan kesulitan (dan kadang-kadang dengan sinisme khusus). Jika Anda ingin menyimpan dan membeli papan ini, maka pertama baca posting ini dan pikirkan lagi.

Jika memungkinkan, saya akan mencoba menahan emosi atau setidaknya menerjemahkannya ke dalam humor.
Jadi, di sini saya mendapatkan papan dan kartu SD kelas sepuluh. Ayo pergi.

Semua yang tertulis di bawah ini mengacu pada model Orange Pi 2G-IOT, tetapi dalam obrolan Telegram (lihat “Orange Pi dan tidak hanya”) mereka mengatakan bahwa model 2G, 3G dan 4G berperilaku dengan cara yang sama (sama buruknya). Tertulis TIDAK berlaku, misalnya, untuk Orange Pi PC dan Orange Pi One, yang stabil dalam ulasan.

Mina No. 1 (pelatihan): mengunduh gambar OS


Tampaknya akan lebih mudah? Kami pergi ke situs web produsen dan mengunduh. Namun, semua tautan mengarah ke mega.nz, yang mengumpulkannya langsung di peramban. Laptop murah saya dengan 4 GB RAM tidak menarik tugas seperti itu dan tab jatuh. Seseorang dapat menggunakan program berpemilik untuk mengunduh dari Mega, tetapi itu tidak menginspirasi kepercayaan pada saya (terlebih lagi karena beberapa orang menulis di Internet bahwa program tersebut dikenali oleh antivirus sebagai malware). Opsi solusi: unduh dari situs tidak resmi (misalnya, di sini ), gunakan mesin virtual dan masukkan klien untuk mengunduh dari Mega, minta seseorang dengan PC yang lebih modern untuk mengunduh gambar.

Lebih banyak tentang OS untuk oranye
Untuk banyak model Oranye, pengguna merekomendasikan Armbian, tetapi dia tidak membuat saya terkesan pada 2G-IOT: sepertinya Raspbian minimalis. Omong-omong, tidak ada gambar untuk 2G-IOT di situs Armbian, hanya di situs Orange Pi. Saya juga mencoba Ubuntu Server, tetapi tidak menunjukkan tanda-tanda kehidupan sama sekali. Android built-in NAND tampaknya berfungsi, tetapi saya tidak mempelajarinya sama sekali, kemungkinan besar, tanpa layar sentuh itu tidak banyak berguna. By the way, saya mengingatkan Anda bahwa perangkat boot ditentukan oleh posisi jumper di sudut papan, secara default ada boot dari memori NAND bawaan.

Mina No. 2: Akses internet melalui modem


Mengikuti kata demi kata konfigurasi wvdial dan pppd di Internet, tiba-tiba saya mengetahui bahwa permintaan ping lewat dengan baik, tetapi paket TCP biasa tidak dengan cara apa pun:

orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface wlan0 195.201.201.32 46.0.208.54 orangepi@OrangePi:~$ ping 195.201.201.32 -I ppp0 PING 195.201.201.32 (195.201.201.32) from 10.33.64.21 ppp0: 56(84) bytes of data. 64 bytes from 195.201.201.32: icmp_seq=1 ttl=52 time=664 ms 64 bytes from 195.201.201.32: icmp_seq=2 ttl=52 time=240 ms 64 bytes from 195.201.201.32: icmp_seq=3 ttl=52 time=234 ms 64 bytes from 195.201.201.32: icmp_seq=4 ttl=52 time=246 ms 64 bytes from 195.201.201.32: icmp_seq=5 ttl=52 time=241 ms 64 bytes from 195.201.201.32: icmp_seq=6 ttl=52 time=237 ms ^C --- 195.201.201.32 ping statistics --- 7 packets transmitted, 6 received, 14% packet loss, time 6032ms rtt min/avg/max/mdev = 234.634/310.971/664.998/158.370 ms orangepi@OrangePi:~$ 

Solusinya mendorong edtun : https://www.linux.org.ru/forum/admin/12135523 , meskipun saya akui itu bisa saja lebih sederhana.

Segera diberitahu bahwa modem IMEI dikemas dengan nol. Untungnya, operator telekomunikasi merah-putih tidak memperhatikan hal ini. (Omong-omong, built-in WiFi juga tidak memiliki alamat MAC: itu dibuat secara acak dengan setiap sentakan catu daya.)

Mina No. 3: Port USB


Kami menempel peluit WiFi di konektor USB dan ... Tidak ada yang terjadi. lsusb menampilkan port USB kosong. Penggalian kecil menunjukkan bahwa board hanya memiliki satu USB. Dan secara default, terhubung ke port microUSB. Untuk mengalihkannya ke USB HOST biasa, Anda perlu mengganti jumper di papan, yang terletak di sebelah jumper untuk memilih boot. Deskripsi mereka ada di w3bsit3-dns.com:
Solusi: alihkan jumper ke posisi: 1234 turun, 5678 atas.

Baru saat itulah saya menemukan sedikit nuansa ini dalam manual Orange Pi.

Mina No. 4: Pengemudi


Sekarang perangkat terdeteksi dalam sistem, lsusb menampilkan kode pabrikan dan produk, tetapi antarmuka jaringan nirkabel tidak terdeteksi dalam sistem. Karena pengembang tidak memberikan driver untuk adapter WiFi oranye. Dan tidak ada sama sekali. Ada driver hanya untuk WiFi built-in, tidak lebih dan tidak kurang. Dan apa yang kita lakukan ketika kita tidak memiliki driver untuk perangkat keras kita? Benar, mari kumpulkan mereka dari kode sumber !

Milik saya # 5: Bersiap untuk Membangun


Dalam korespondensi, bad__day menyarankan untuk berkumpul langsung di Orange Pi. Mungkin ini mungkin, tetapi saya gagal.

Untuk Orange Pi, para pengembang membuat Sistem Pembuat Pi Orange khusus, dengan bantuan yang, secara teori, untuk membangun kernel atau modul, cukup dengan hanya mengikuti instruksi di layar. Instruksi lengkap diberikan dalam manual mulai dari halaman 61. Tampaknya hanya mengikuti, dan semuanya akan baik-baik saja, tetapi tidak.

Pertama, agar tidak mengedit secara manual semua dependensi di komputer saya (saya secara teratur memperbarui perangkat lunak, ini hebat, tetapi tidak kali ini), saya menggunakan mesin virtual dengan Ubuntu 16.04 dan melakukan semua tindakan di sana. Kedua, kesalahan merayap di skrip di suatu tempat, dan Build System tidak menempatkan toolchain untuk kompilasi lintas platform. Ini diselesaikan dengan tongkat penyangga seperti itu:

  1. Apt-get'om secara manual menempatkan toolchain untuk lintas-kompilasi di bawah ARM.
  2. Membuat symlink:
     mkdir $HOME/OrangePiRDA/toolchain/bin ln -s $(which arm-linux-gnueabi-ld) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-ld ln -s $(which arm-linux-gnueabi-gcc-4.9) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-gcc ln -s $(which arm-linux-gnueabi-g++-4.9) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-g++ ln -s $(which arm-linux-gnueabi-ar) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-ar ln -s $(which arm-linux-gnueabi-nm) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-nm ln -s $(which arm-linux-gnueabi-objcopy) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-objcopy ln -s $(which arm-linux-gnueabi-size) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-size 
    Harap dicatat: kompiler diambil versi 4.9, tidak ada yang dikumpulkan pada versi di atas.
  3. Buka OrangePiRDA / script / Prep_toolchain.sh dan untuk berjaga-jaga, komentari baris yang menyebutkan toolchain.

Faktanya, semua skrip ini hanya memanggil apt-get install -y ... dan buat. Skrip tidak menawarkan pengguna untuk mengubah konfigurasi dengan cara apa pun (atau apakah saya tidak menemukannya?).

Tetapi bagaimanapun juga, tidak ada yang menghalangi kita untuk menyebut diri kita sendiri

 make menuconfig 

dan tandai driver yang diperlukan. Kami melakukan ini dan mengumpulkan lagi (sekarang hanya modul yang mungkin) dan ...

Milik saya # 6 (dengan sensor gerak IR yang kacau dan detonator cadangan): Unit driver


... Dan kemudian skrip mulai mengajukan pertanyaan tentang cara mengkonfigurasi kernel. Dia memanggil konfigurator kernel kuno, tetapi mengapa ?! Apa yang salah

Ternyata Makefile ditulis untuk memeriksa perubahan konfigurasi TIME (!!!)!



Komentar itu berbunyi "seseorang sedang menggali." (Dalam tangkapan layar, Makefile yang sudah dimodifikasi, saya mendaftarkan menuconfig.) Saya mencoba memanggil make oldconfig, saya tidak memperhatikan bahwa ini mengubah apa pun di suatu tempat. Oke, sekarang setelah menuconfig dipanggil saat perakitan, itu tidak menakutkan. Saya memanggil majelis lagi, majelis memperhatikan bahwa "seseorang sedang menggali konfigurasi", memanggil menuconfig, saya keluar dan menunggu penyelesaian. Sekarang bayangkan kejutan saya ketika saya tidak menemukan driver yang saya pilih.

Penafian sebelum membaca
Pada titik ini, saya meninggalkan pemahaman tentang apa yang terjadi, dan akhirnya saya kehilangan kontak dengan kenyataan, akal sehat dan peradaban dari planet Ross 128 b. Saya melampaui batas pengetahuan saya, semua teman dan TARDIS. Saya mulai membuat omong kosong, dan satu-satunya tujuan adalah mengumpulkan driver [SENSOR] ini di semua biaya. Jika, ketika membaca teks di atas, Anda meraih kepala Anda lebih dari dua kali, maka jangan membaca teks di bawah ini. Itu akan lebih tenang untuk Anda dan saya. Jika Anda dapat memberikan penjelasan yang jelas tentang apa yang terjadi dan menjelaskan di mana saya salah dan bagaimana, maka tolong beri tahu saya. Tolong.



Ya, kita memanjat untuk mengerti. Ternyata make membuat file modules.order, yang menjelaskan semua modul yang akan dikompilasi. Dan bahkan setelah semua perubahan konfigurasi dan penyimpanannya, file ini diisi dengan set yang sama. Saya tidak menemukan sesuatu yang lebih baik daripada menambahkan baris secara manual (peluit saya dipasang pada chipset RTL8192CU):

 kernel/driver/net/wireless/rtlwifi.ko kernel/driver/net/wireless/rtlwifi/rtl8192cu.ko 

Semua referensi ke file ini di Makefile digantikan oleh modules.order.fake. Saya memulai perakitan. Kali ini, majelis pergi, tetapi terputus, karena tidak ada file serupa di folder kode sumber rtlwifi. Saya mengganti nama modules.order.fake file menjadi modules.order di folder dan subfolder ini, dan ini adalah petualangan terakhir saya dalam membangun driver. Setelah itu, sistem menunjukkan saya menuconfig dua kali lagi, seolah-olah bertanya kepada saya “apakah Anda benar-benar menginginkan ini?”, Tetapi masih mengumpulkan tiga file .ko berharga lainnya, yang berakhir seperti yang diharapkan.

Mina No. 7: Kerja bersama WiFi eksternal dan modem


Setelah bermain sedikit dengan airodump dan memastikan bahwa perangkat setidaknya dapat menangkap paket dalam mode monitor, saya memutuskan untuk memeriksa modem lagi. Melakukan

 sudo wvdial 

Dan LED pada adaptor WiFi eksternal padam, dan SSH jatuh. Kemudian saya membaca di log bahwa adaptor itu terputus. Pikiran pertama adalah masalah dengan nutrisi. Sampai saat itu, saya menggunakan charger saya seharga 1,5 Ampere, dan pabrikan merekomendasikan sebanyak 3 (di mana begitu banyak? Dia bahkan tidak makan satu Ampere ). Di tangan adalah pengisi daya 2-amp, yang selama bertahun-tahun secara teratur memberi makan Raspberry Pi.

Saat ini, saya belum menemukan solusi stabil untuk masalah ini. Berikut adalah beberapa upaya solusi:

  • Dengan probabilitas 80%, Anda dapat menonaktifkan WiFi eksternal menggunakan:

     chmod 777 /sys/bus/usb/drivers/usb/unbind echo 1-1 > /sys/bus/usb/drivers/usb/unbind 

    dan kemudian jalankan wvdial, yang akan mencoba membuat koneksi dengan 1-3 upaya dan Anda bisa online. Dalam 20% dari semua jenis hang dan gangguan.
  • Sekali, secara kebetulan, ternyata wvdial terbunuh, tetapi pppd tetap berfungsi (bagaimana bisa?), Setelah itu WiFi eksternal naik (lihat di atas, kita menulis bind, bukannya unbind) dan ada koneksi melalui modem. Itu tidak mungkin untuk mereproduksi situasi.
  • Ternyata tanpa membangun kembali kernel, Anda dapat mematikan daya ke USB menggunakan utilitas seperti itu dengan perintah

     ./hub-ctrl -h 0 -P 1 -p 0 

    dan nyalakan daya
     ./hub-ctrl -h 0 -P 1 -p 1 
    Pada 2G-IOT, perilaku tidak dapat diprediksi: pemadaman listrik dapat dilakukan selama satu detik, atau sebelum reboot. Dalam beberapa fase bulan, upaya untuk mengembalikan kekuatan menyebabkan papan membeku.
  • Ganti jumper ke OTG (1234 ke atas, 5678 ke bawah), berikan daya ke kaki GPIO 2 dan 6 (dering, mereka terhubung langsung ke daya microUSB)

    Pinout


    Hubungkan adaptor WiFi melalui adaptor USB-OTG dari smartphone. Sistem tidak melihat perangkat USB sama sekali. Mungkin Anda perlu bermain lebih banyak dengan jumper.

Tidak diuji, tetapi mungkin berhasil (berencana untuk mencoba semua opsi ini):

  • Adaptor WiFi lain.
  • Catu daya yang sangat stabil dengan arus maksimum 3 Amps.
  • Daya ekstra ke kaki USB.
  • Bensin dan korek api.

Secara umum, tugasnya seperti menarik selimut segitiga di atas oranye segi empat.

Itu saja untuk saat ini.

Ucapan Terima Kasih
Saya ingin mengucapkan terima kasih kepada bad__day , edtun , A. Repin, pengguna forum dari w3bsit3-dns.com , orang-orang tua di obrolan Telegram dan Kotu, yang dengan sabar mendengarkan saya selama ini dan hampir tidak mencoba untuk melarikan diri.


UPD: Hari ini mereka membawakan saya catu daya dengan output 5V 3A. Dengan itu, dimungkinkan untuk meluncurkan modem dan USB WiFi adapter secara bersamaan. Modem menaburi kesalahan, berhenti merespons, tetapi rata-rata terhubung dari upaya ketiga. Setelah itu, Anda dapat menggunakan USB WiFi.

Untuk meringkas.


Single-board Orange Pi 2G-IOT sangat mentah dan hampir tidak didukung oleh pabrikan. Bahkan pada hal-hal sederhana, di mana tampaknya tidak ada yang menandakan masalah, ada sesuatu yang salah. Jika Anda perlu menggunakan perangkat dengan akses Internet melalui jaringan seluler dan Anda tidak yakin dapat mengatasi Orange Pi, maka lebih baik membayar ekstra dan mengambil sesuatu yang lebih andal dan debugged. Hemat waktu dan saraf.

Source: https://habr.com/ru/post/id440960/


All Articles