Arduino: Baris perintah membutuhkan X11

Dibuat pada 1 Apr 2014  ·  45Komentar  ·  Sumber: arduino/Arduino

Saya ingin menggunakan CLI di Arduino 1.5 pada Raspberry Pi tanpa kepala (hanya diakses melalui SSH, tidak ada lingkungan X11), untuk membuat platform integrasi berkelanjutan.

Saat memanggil arduino di baris perintah, Java mengeluh bahwa lingkungan X11 tidak disetel dan diperlukan (yang seharusnya tidak diperlukan untuk program CLI).

Keluaran CLI:

$ arduino --verify foo.ino
Exception in thread "main" java.lang.ExceptionInInitializerError
    at processing.app.Base.main(Base.java:113)
Caused by: java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at sun.awt.HeadlessToolkit.getMenuShortcutKeyMask(HeadlessToolkit.java:231)
    at processing.core.PApplet.<clinit>(Unknown Source)
    ... 1 more
zsh: exit 1     arduino --verify foo.ino
CLI IDE Bug

Komentar yang paling membantu

Jika Anda menutup ini, harap secara terang-terangan mendokumentasikan bahwa mode "CLI" untuk editor arduino + tombol makro sebenarnya bukan mode CLI.

Saya hanya membuang banyak waktu dan memasang cruft senilai 220 MB hanya untuk menemukan bahwa mode CLI benar-benar rusak dan sebenarnya hanya mode GUI tanpa beberapa panggilan imbang.

Fakta bahwa Anda memerlukan penginstalan fungsional X11 harus dicetak tebal di bagian atas halaman dokumen resmi yang merujuk padanya, seperti http://playground.arduino.cc/Learning/CommandLine

Semua 45 komentar

Ini sepertinya terkait dengan # 1970, tetapi mungkin ini masalah yang terpisah. Saya akan meletakkan ini di daftar saya untuk diselidiki, terima kasih telah melaporkan.

@jamur_kejang

Memikirkan hal ini lebih lanjut, saya pikir ini tidak akan mudah untuk diperbaiki. Saat ini, saat menjalankan perintah CLI, semua inisialisasi normal terjadi secara normal, kecuali untuk membuat dan menampilkan jendela. Untuk memperbaikinya, kita perlu melakukan refactor kode GUI agar kurang digabungkan dengan fungsionalitas kompilasi, yang tidak akan mudah. Kita harus melakukan ini pada akhirnya, tetapi ini mungkin membutuhkan usaha yang signifikan.

Saya ingin berkomentar bahwa saya memiliki masalah yang sama, dan ingin sekali menjalankan kompilasi dan mengunggah perintah melalui SSH (tanpa X11).

Hai matthijskoijman masalah yang sama pada Mesin Virtual Debian tanpa GUI, saya telah mencoba menggunakan arduino-mk, tetapi toh tidak berhasil ...

Masalah yang sama dengan 1.5.8 pada Debian Wheezy (Raspbian) yang berjalan di Raspberry Pi.

Masalah yang sama - mencoba melakukan Integrasi Berkelanjutan pada node Jenkins OS X untuk memverifikasi file Arduino, tetapi itu harus tanpa kepala. Saya sudah mencoba ino tetapi sepertinya sudah ketinggalan zaman. Apakah ada solusi lain untuk sementara itu? Saya pernah mendengar tentang bii hive , saya akan mencobanya juga, tetapi rekomendasi lainnya diterima.

Bersulang,
Raquel

Kami menggunakan jenkins setiap saat. Untuk mengatasi kebutuhan IDE, kami telah menginstal https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin

Terima kasih banyak @ffissore , saya akan mencobanya.

Maaf jika ini sedikit keluar dari topik. @ffissore , Di platform

Di mac kami tidak menggunakan plugin itu karena node diluncurkan melalui java web start. Hal ini memungkinkan proses java pada node mac untuk mengakses tampilan. Memang, sesekali, IDE muncul dan menjalankan pengujian fungsionalnya

Saya tidak yakin saya mengerti. Apakah itu berarti tidak mungkin untuk menguji ini pada node Mac? :(

Justru sebaliknya. Kami melakukannya setiap saat. Tetapi Anda harus memulai node mac dengan benar. Saya tidak ingat tutorial mana yang saya gunakan untuk mengaturnya, tetapi hasilnya adalah pengguna utama mac kami memiliki aplikasi "start jenkins" startup yang terhubung ke master menggunakan java web start

Oh begitu. Saya akan google itu! Terima kasih banyak!

Menutup sebagai wontfix. Memperbaiki akan membutuhkan pembongkaran IDE. Kami membuat langkah-langkah kecil setiap hari, tetapi tidak dapat benar-benar mengatur jadwal

Jika Anda menutup ini, harap secara terang-terangan mendokumentasikan bahwa mode "CLI" untuk editor arduino + tombol makro sebenarnya bukan mode CLI.

Saya hanya membuang banyak waktu dan memasang cruft senilai 220 MB hanya untuk menemukan bahwa mode CLI benar-benar rusak dan sebenarnya hanya mode GUI tanpa beberapa panggilan imbang.

Fakta bahwa Anda memerlukan penginstalan fungsional X11 harus dicetak tebal di bagian atas halaman dokumen resmi yang merujuk padanya, seperti http://playground.arduino.cc/Learning/CommandLine

Coba PlaformIO , ini bekerja dengan sempurna untuk saya.

@wollew - Di situlah saya berakhir, setelah melalui 3 atau 4 opsi lain.

Perhatikan bahwa ini sebenarnya didokumentasikan di https://github.com/arduino/Arduino/blob/ide-1.5.x/build/shared/manpage.adoc#bugs , yang merupakan dokumentasi utama untuk mode commandline yang ditautkan dari halaman Anda direferensikan.

@agdl , bisakah Anda memperbarui tautan di http://playground.arduino.cc/Learning/CommandLine untuk mengarahkannya ke https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc karena tautan saat ini mungkin akan putus di masa mendatang.

Saya membuka kembali masalah ini, karena saya yakin masalah ini harus diperbaiki pada suatu saat. Itu memang membutuhkan pemfaktoran ulang kode yang signifikan, jadi ini tidak akan menjadi sesuatu yang akan segera diperbaiki, tetapi "wontfix" tampaknya menjadi resolusi yang sulit.

@matthijskooijman maaf tetapi baru saja memperhatikan tag ke saya .... tautan diperbarui maaf lagi

Melakukan ini dengan vi pasti akan menimbulkan masalah. Melakukannya dengan gerhana sebagian besar tentang memiliki kemauan untuk memulai dan 1/2 hari untuk membawanya sampai akhir. Idenya tidak terlalu besar. Agak tidak teratur, tetapi tidak ada refleksi atau ketergantungan yang tidak terlihat di mana pun. Bahkan jika Anda membutuhkan waktu sehari jika fokus, itu masih hanya satu hari untuk produk yang telah ada selama bertahun-tahun ...
Satu-satunya pb dengan melakukannya adalah itu berarti mengambil tanggung jawab untuk semuanya, yang melihat bagaimana beberapa kode diubah selama bertahun-tahun, tampaknya telah menjadi sesuatu yang ingin dihindari (saya berasumsi karena keinginan untuk dapat untuk melakukan perbaikan / peningkatan dengan mudah dari pemrosesan). Tetapi kenyataannya adalah bahwa kode kehilangan kompatibilitas beberapa waktu yang lalu ... sayangnya tanpa mengambil keuntungan sejauh ini dari kebebasan yang dihasilkan (maksud saya pada intinya).
Seseorang harus mencobanya, IMHO benar-benar tidak serumit kelihatannya.

Jika membantu, saya telah mengatasinya di sini: http://playground.arduino.cc/Main/Headless (dari milis pengembang, terima kasih kepada Matthew Beckler)

Ugh, bagaimana ini masih menjadi masalah? Solusi di atas masih mengasumsikan tampilan java. export JAVA_TOOL_OPTIONS='-Djava.awt.headless=true' tidak membantu, bahkan dengan # 5132 karena Anda masih mendapatkan kesalahan pada layar pembuka. Apakah tidak ada cara untuk mengkompilasi dan mengunggah sketsa pada tampilan tanpa kepala?

Masih belum diperbaiki ... sayangnya.

Menabrak ini karena itu mempengaruhi kami juga, menjalankan CLI pada perangkat yang disematkan kami benar-benar lebih suka tidak menjalankan Xvfb untuk mem-flash papan yang terpasang. 😄

FYI, seperti yang disarankan @wollew , saya beralih ke PlatformIO yang dapat melakukan pembuatan dan pengunggahan sketsa Arduino tanpa kepala. Bagi mereka yang dapat menjalankan Python di lingkungan tanpa head mereka, ini bisa menjadi solusi sementara. Ini bekerja luar biasa untuk pengujian Travis misalnya.

Kerangka PlatformIO multi-target yang sangat ironis dapat melakukannya dan IDE resmi khusus Arduino tidak dapat melakukannya. Astaga

Kerangka PlatformIO multi-target yang sangat ironis dapat melakukannya dan IDE resmi khusus Arduino tidak dapat melakukannya. Astaga

Ironisnya, saya ingin menunjukkan jumlah pekerjaan yang dibutuhkan untuk mencapai itu. Arduino IDE adalah garpu Pemrosesan yang telah dirancang dari awal sebagai aplikasi GUI: tentunya membutuhkan lebih banyak pekerjaan untuk mendapatkan aplikasi CLI yang "murni" dibandingkan dengan aplikasi yang ... yah ... lahir sebagai perintah utilitas garis! :-)
Pertimbangkan juga bahwa jumlah pengguna yang menjalankan IDE dari CLI adalah minoritas kecil (dan yang menggunakannya "tanpa kepala" di Linux bahkan sebagian dari mereka), itulah mengapa masalah ini belum menjadi prioritas utama kami, mengingat juga fakta bahwa ada solusi sederhana.

Bagaimanapun, saya baru saja mendorong https://github.com/arduino/Arduino/pull/5578 yang seharusnya menyelesaikan masalah ini sekali untuk semua.

Terima kasih banyak atas upaya Anda pada @cmaglie ini

Akan sangat bagus untuk dapat memverifikasi Arduino membangun secara otomatis, menggunakan toolchain resmi.

Maaf jika saya bersikap kasar, itu bukan niat saya ... Saya hanya kagum. saya minta maaf
Seperti yang dikatakan @njh , terima kasih banyak atas kerja bagus Anda dalam hal ini dan masalah lainnya, @cmaglie.

"Pertimbangkan juga bahwa jumlah pengguna yang menjalankan IDE dari CLI adalah minoritas kecil"
Mempertimbangkan semua hal di atas, berapa banyak yang Anda harapkan?

"menjalankan-arduino-cli-from-a-headless-linux-machine" mencapai <0,01% basis pengguna kami yang sebagian besar adalah Windows / Mac dengan PC desktop. BTW sekarang sudah diperbaiki, tidak ada gunanya membahas ini lebih lanjut.

Terima kasih untuk pekerjaan ini! Ini akan memungkinkan segala macam hal mulai dari membiarkan orang menggunakan editor teks favorit mereka atau IDE untuk kode arduino hingga membangun kembali dan menerapkan otomatis.

Saya masih memperhatikan kebutuhan untuk solusi X11 ini baru-baru ini seperti build 1.8.5, sebagai bagian dari pekerjaan pengembangan pada sistem Integrasi Berkelanjutan untuk Arduino (https://github.com/ianfixes/arduino_ci).

Selain apa yang saya asumsikan adalah layar splash yang bermunculan, beberapa kesalahan disajikan secara grafis alih-alih melalui konsol, yang menyebabkan hang - menunggu grafis "ok" sebelum melanjutkan.

Apakah ada tombol baris perintah yang saya lewatkan?

Saya melihat ini juga dengan 1.8.5 - bahkan jika saya menjalankan X Forwarding - karena ribuan aplikasi lain berjalan dengan baik.

$ arduino
Gtk-Message: 12:07:10.935: GtkDialog mapped without a transient parent. This is discouraged.
java.awt.HeadlessException
        at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:117)
        at processing.app.Base.<init>(Base.java:206)
        at processing.app.Base.main(Base.java:135)

Saya menjalankan fedora 27 dalam QubesOS. Masalah ini tidak terjadi sebelumnya, meskipun saya belum pernah menggunakan arduino IDE dalam setahun terakhir.
Pesan eror:

$ arduino
java.awt.HeadlessException
    at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:117)
    at processing.app.Base.<init>(Base.java:206)
    at processing.app.Base.main(Base.java:135)

dnf info arduino keluaran:

Name         : arduino
Epoch        : 1
Version      : 1.8.5
Release      : 4.fc27
Arch         : noarch
Size         : 3.0 M
Source       : arduino-1.8.5-4.fc27.src.rpm
Repo         : <strong i="11">@System</strong>
From repo    : updates
[... description, license, ASO redacted for brevity]

@GammaSQ tampaknya Anda menggunakan versi Arduino IDE yang diinstal melalui manajer paket. Itu telah dimodifikasi dengan cara yang tidak diketahui oleh pihak ketiga, yang mungkin menjadi penyebab masalah. Saya sarankan untuk menghapus hal itu dan mencoba Arduino IDE resmi yang diunduh dari:
https://www.arduino.cc/en/Main/Software

@GammaSQ @CRCinAU
menjalankan hanya arduino akan meluncurkan Arduino IDE (GUI), Anda perlu memberikan beberapa perintah untuk benar-benar melakukan sesuatu (complie / verifikasi / unggah ...)

@iannisa
perintah apa yang Anda jalankan? Silakan posting di masalah lain dengan instruksi untuk mereproduksi.

5578 mengatakan itu memperbaiki ini, namun menjalankan arduino pada peregangan raspbian masih memberikan kesalahan.

Tidak ada variabel TAMPILAN X11 yang disetel, tetapi program ini melakukan operasi yang memerlukannya.
di sun.awt.HeadlessToolkit.getMenuShortcutKeyMask (HeadlessToolkit.java:236)
di processing.core.PApplet.(Sumber tidak diketahui)
... 3 lagi

@ Darrahts perintah mana yang Anda luncurkan?

Arduino 2: 1.0.5

arduino --upload ../controllerWithDCmotorsNetsblox/controllerWithDCmotorsNetsblox.ino --port / dev / ttyACM0

juga mencoba trik arduino-headless tetapi hanya macet (meskipun tidak ada pesan kesalahan, tetapi gantung adalah kesalahan itu sendiri)

Anda menjalankan Arduino 1.0.5, sekarang kami berada di 1.8.5.

Hapus paket yang berasal dari repositori raspbian yang sangat tua, dan unduh yang terbaru dari arduino.cc.

@cmagile Saya akan bersumpah demi hidup saya bahwa saya melihat masalah ini di 1.8.5 tetapi saya baru saja menjalankan serangkaian pengujian lengkap pada pustaka CI saya di linux, melalui Travis dengan peretasan manajer tampilan xdpy dimatikan , dan itu bekerja dengan baik.

Tidak bisa menegur. Akan membuka masalah baru jika itu terjadi lagi.

Terima kasih telah menindaklanjuti!

Ya, itu akan membuat perbedaan besar (maaf atas kekhilafannya!), Namun saya masih mengalami masalah. pada sudo apt-get install arduino -y Saya masih menerima kesalahan yang sama, dan jelas tidak dapat menjalankan arduino --version untuk memverifikasi versi. Kemudian, buka arduino.cc dan unduh file linux arm tar.bz, tinggalkan saya dengan ini:

Menambahkan pintasan desktop, item menu dan asosiasi file untuk Arduino IDE ... sentuh: tidak dapat menyentuh '/root/.local/share/applications/mimeapps.list': Tidak ada file atau direktori seperti itu
/ usr / bin / xdg-mime: 803: / usr / bin / xdg-mime: tidak dapat membuat /root/.local/share/applications/mimeapps.list.new: Direktori tidak ada
selesai!

menjalankannya tanpa sudo saya mendapatkan ini:

sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu
sentuh: tidak dapat menyentuh '/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy': Tidak ada file atau direktori seperti itu

Saya sedang menginstal peregangan raspbian baru. Ini tampak mirip dengan # 6116 tetapi RESOURCE_NAME sudah menjadi arduino-arduinoide

sudo apt-get install arduino -y

@darrahts , itu kemungkinan akan memberi Anda versi 1.0.5, yang merupakan "terbaru" dari Debian. Lebih baik dapatkan zipfile langsung dari arduino.cc (ada versi ARM / rpi).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat