LINUX.ORG.RU

Как из ssh запустить gui прогу на beaglebone

 


0

1

Я подключаюсь к beaglebone по ssh, делаю в ssh терминале xhost +localhost, потом export DISPLAY=:0.0 и после пробую запустить qt прогу так ./qt-example -qws, но получаю ошибку «Error: Can't open display». Можно ли команду xhost +localhost выполнить в vnc-viewer или нужно непосредственно без удаленки подключить клавиатуру к нему и прям на lcd cape4.3 выполнять команду.

Я подключаюсь к beaglebone по ssh

X forwarding включил? (ssh -X / ssh -Y).

Можно ли команду xhost +localhost выполнить в vnc-viewer

Нельзя, ее вообще не на том компе делать надо! И что, у тебя есть VNC до этой штуки? В чем тогда проблема запустить через VNC?

непосредственно без удаленки подключить клавиатуру к нему и прям на lcd cape4.3 выполнять команду.

Если бы ты не тратил свое и наше время, а попробовал, то уже бы запустил.

Попробуй меньше спрашивать и больше разбираться.

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

Да X forwarding включил, ставлю галку эту в putty. Проблема в том, что требуют запустить на lcd cape прогу, а vnc я использую для запуска там, потому что на lcd не выводит.

user2132 ()
Ответ на: комментарий от user2132

Ну так и запускай иксы с выводом на этот LCD, затем прогу с правильно выставленным DISPLAY. X11 forwarding-то зачем приплел? И ssh тут тогда не при чем. И VNC.

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 2)
Ответ на: комментарий от user2132

Да X forwarding включил, ставлю галку эту в putty.

Если тебе нужно запустить программу на X-сервере на самой железке, то X forwarding нужно выключить.

Если у тебя там X-сервера не запущено, нужно запустить.

i-rinat ★★★★★ ()
Ответ на: комментарий от t184256

Мне нужно, чтобы прога на lcd показывалась при запуске, когда из ssh ее запускаю, то пишет ошибку коннекта с дисплею. Как пофиксить, иксы это startx просто через ssh сначала сделать ?

user2132 ()
Ответ на: комментарий от user2132
  1. Начни заново без VNC и SSH-форвадинга и всего, чего ты там напридумывал. Пойми, что SSH тут не при чем, он в твоем сценарии — просто способ запуска команд.

  2. Разберись, как запустить X-сервер.

  3. Убедись, что ты действительно его запустил.

  4. Выставь DISPLAY.

  5. Запусти программу.

  6. Научись правильно задавать вопросы: с постановкой настоящей задачи (а не тем, что тебе там в твоей истерике показалось с ней связанным), c четко расписанными действиями, полным текстом ошибки, сопутствующими логами и желаемым вместо того результатом.

  7. Сходи еще раз убедись, что заказчика устраиват твой уровень знаний и темп работы.

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

X-сервер запущен, сам lcd отображает рабочий стол линукса. Как именно проверять, что запущены иксы ?

user2132 ()
Ответ на: комментарий от t184256

ssh я и использую как средство удобного управления девайсом, чтобы не подключать к нему физически клавиатуру.

user2132 ()
Ответ на: комментарий от user2132

Мне нужно как в этом видео

То есть без иксов?!

Все, я спать, пусть следующие три сюжетных поворота в игре «вытяни из вопрошающего признание, что ему на самом деле было нужно» проходит кто-нибудь другой.

t184256 ★★★★★ ()
Ответ на: комментарий от user2132

То есть оказались не при чем и упомянуты в стартовом посте для запутывания потенциального противника:

  • ssh
  • xhost, DISPLAY и иксы вообще
  • VNC
  • клавиатура.

Список корректируется.

  1. Начни заново без VNC, SSH-форвадинга, xhost, DISPLAY иксов вообще, рассказов про клавиатуру и всего, чего ты там напридумывал. Пойми, что SSH тут тоже не при чем, он в твоем сценарии — просто способ запуска команд.

  2. Останови свой X-сервер (потому что он у тебя похожу все-таки есть и запущен.

  3. Убедись, что ты действительно его остановил.

  4. Раздобудь программу, работающую напрямую с фреймбуфером/tslib

  5. Запусти программу. Не паникуй.

  6. Научись правильно задавать вопросы: с постановкой настоящей задачи (а не тем, что тебе там в твоей истерике показалось с ней связанным), c четко расписанными действиями, полным текстом ошибки, сопутствующими логами и желаемым вместо того результатом.

  7. Запости этот детальный отчет на форум.

Потом, предвосхищаю, что ты мимоходом еще пару раз скажешь, что тебе надо на самом деле не то (все-таки иксы, но запускать не на beaglebone, а с него с отображением на другой комп, хотя нет, с отображением сюда, тогда запускать вообще на тостере, а по VNC на raspberry pi пусть сюда идет только картинка, про beaglebone ты просто так написал, ай нет, стойте, теперь все то же самое, но без иксов), но давай хоть начни нормально!

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

Извени, что запутал, я делаю по видео этого урока https://www.youtube.com/watch?v=kP7uvOu9hoQ То есть залил дистрибутив на sd карту, подключил lcd к beaglebone, убедился что ось грузится и показывается на lcd экране рабочий стол загруженный. Далее через ssh закидываю собранную кросс-компилятором прогу qt-шную и запускаю ее с параметром -qws. Как и автор в видео отключил gdm так: update-rc.d -f gdm remove Не понимаю про пункты 2-3, зачем мне останавливать X-сервер, таких действий автор в видео не делал. 4 пункт также не понятен, так как судя по видео на экране lcd отображается qt прога успешно.

user2132 ()
Ответ на: комментарий от user2132

Как и автор в видео отключил gdm так: update-rc.d -f gdm remove

То есть из автозапуска убрал. А остановил?

Не понимаю про пункты 2-3, зачем мне останавливать X-сервер, таких действий автор в в видео не делал.4 пункт также не понятен, так как судя по видео на экране lcd отображается qt прога успешно.

У тебя, как и на видео, на экране отображается только приглашение командной строки? Не загадочный «рабочий стол линукса»? Если нет, и запущены иксы, то твои попытки рисовать что-то иное в обход иксов ты не увидишь. Если да, то покажи вывод твоей программы, если выполнить перед ее запуском unset DISPLAY.

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

Да и как сервис удалил systemctl disable gdm.service, только помню была ошибка типа gdm не существует, как точно узнать что там gdm, kdm, xdm (это я про эту статью https://blog-en.openalfa.com/how-to-stop-the-x-server-in-debian) представляют x-сервер, потому что я взял ось дебиана https://www.waveshare.com/wiki/LCD-CAPE-4.3inch-Image такую Debian-sdcard-beaglebone-2015.02.27-LCD-cape-LCD4.3-v2.0.img вместо ангстрома тут, а там видимо не gnome. А да, на экране после тех 2 команд отрубания gdm остался рабочий стол, а не приглашение консоли. То есть не отрубился x-сервер.

user2132 ()
Ответ на: комментарий от t184256

Окей, завтра тогда по пунктам, железка на работе.

user2132 ()
Ответ на: комментарий от t184256

Вот так пробую отключить иксы.

root@beaglebone:~# ls /etc/*dm keys.conf lightdm-gtk-greeter.conf lightdm.conf users.conf

Я так понимаю, что на дебиан надо lightdm отрубать, но чет не получается.

root@beaglebone:~# update-rc.d -f lightdm remove update-rc.d: using dependency based boot sequencing root@beaglebone:~# systemctl disable lightdm.service Failed to issue method call: No such file or directory

После этих команд рабочий стол остался.

user2132 ()
Ответ на: комментарий от user2132

Удостоверься, что lightdm есть в списке процессов: ps aux | grep lightdm.

Запусти просто systemctl и посмотри, как называется его unit.

Отключи его systemctl disable .... Останови его systemctl stop ..., это отдельное действие!

t184256 ★★★★★ ()

Логинишься через ssh с ключом -X:

ssh -X

Дальше просто запускаешь нужную программу из терминала. Предварительно надо в настройках сервера ssh разрешить x forwarding. X-сервер на удалённой машине не требуется - нужны только сами программы и библиотеки.

Quasar ★★★★★ ()
Последнее исправление: Quasar (всего исправлений: 1)
Ответ на: комментарий от user2132

Проблема в том, что требуют запустить на lcd cape прогу

Тогда поставь иксы и запусти программу прямо на beaglebone. Если не хочешь клавомышь подключать непосредственно, поставь synergy.

Quasar ★★★★★ ()
Ответ на: комментарий от i-rinat

Ему достаточно указать дисплей, на котором запускать. Но вот незадача - когда сессия ssh закроется, то и приложение завершится.

Quasar ★★★★★ ()
Ответ на: комментарий от user2132

Synergy поставь и не парь никому мозги. ssh - это не то, что тебе требуется для описанной задачи. В репозиториях того же Debian он есть.

Quasar ★★★★★ ()
Последнее исправление: Quasar (всего исправлений: 1)
Ответ на: комментарий от t184256

Пробую на диструбите ангстрома На ангстром успешно иксы отрубил, теперь консоль без «рабочего стола». Вот пробую запустить прогу qt, собрал либы, поставил права 777 всем.

Вот тут не получается. root@beaglebone:~/example# LD_LIBRARY_PATH=. ./example -qws QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed QXcbConnection: Could not connect to display Aborted

user2132 ()
Ответ на: комментарий от user2132

Вот подробный лог запуска проги. export QT_DEBUG_PLUGINS=1 root@beaglebone:~/CCBoot_angstrom# ./example QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed QFactoryLoader::QFactoryLoader() checking directory path «/usr/local/qt5/plugins/platforms» ... QFactoryLoader::QFactoryLoader() looking at «/usr/local/qt5/plugins/platforms/libqlinuxfb.so» Found metadata in lib /usr/local/qt5/plugins/platforms/libqlinuxfb.so, metadata= { «IID»: «org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3», «MetaData»: { «Keys»: [ «linuxfb» ] }, «className»: «QLinuxFbIntegrationPlugin», «debug»: false, «version»: 328960 }

Got keys from plugin meta data («linuxfb») QFactoryLoader::QFactoryLoader() looking at «/usr/local/qt5/plugins/platforms/libqminimal.so» Found metadata in lib /usr/local/qt5/plugins/platforms/libqminimal.so, metadata= { «IID»: «org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3», «MetaData»: { «Keys»: [ «minimal» ] }, «className»: «QMinimalIntegrationPlugin», «debug»: false, «version»: 328960 }

Got keys from plugin meta data («minimal») QFactoryLoader::QFactoryLoader() looking at «/usr/local/qt5/plugins/platforms/libqoffscreen.so» Found metadata in lib /usr/local/qt5/plugins/platforms/libqoffscreen.so, metadata= { «IID»: «org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3», «MetaData»: { «Keys»: [ «offscreen» ] }, «className»: «QOffscreenIntegrationPlugin», «debug»: false, «version»: 328960 }

Got keys from plugin meta data («offscreen») QFactoryLoader::QFactoryLoader() looking at «/usr/local/qt5/plugins/platforms/libqxcb.so» Found metadata in lib /usr/local/qt5/plugins/platforms/libqxcb.so, metadata= { «IID»: «org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3», «MetaData»: { «Keys»: [ «xcb» ] }, «className»: «QXcbIntegrationPlugin», «debug»: false, «version»: 328960 }

Got keys from plugin meta data («xcb») QFactoryLoader::QFactoryLoader() checking directory path «/home/root/CCBoot_angstrom/platforms» ... loaded library «/usr/local/qt5/plugins/platforms/libqxcb.so» QXcbConnection: Could not connect to display Aborted

user2132 ()

потом export DISPLAY=:0.0

А ты уверен что у тебя X-сервер на этом дисплее ?

Dred ★★★★★ ()
Ответ на: комментарий от user2132

Твоя программа хочет иксы, а ты как раз решил без них. Что это за программа, что ты сделал для того, чтобы она не хотела иксы?

t184256 ★★★★★ ()
Ответ на: комментарий от user2132

Qt была собрана по этой инструкции

хоста с Linux нет под рукой ? проще поставить виртуалку и собирать в родной среде чем сношаться с вендой. Кстати, какое назначение программ ? обычно собирают без иксов

https://git.busybox.net/buildroot/tree/board/beaglebone/readme.txt?h=2019.02

В qt5 больше не нужно использовать опцию qws

нет

anonymous ()
Ответ на: комментарий от anonymous

Задача программы стартовать после загрузки beaglebone и показывать различную информацию на экране lcd для оператора. Есть виртуалка, могу в дебиан на виртуалке собрать. Только подскажи хорошую инструкцию, по какой собирать чтобы.

user2132 ()
Ответ на: комментарий от t184256

Пробую собрать без иксов. Получаю ошибку о том, что нет opengl библиотек под арм.

Note: PKG_CONFIG_SYSROOT_DIR automatically set to D:/SysGCC_angstrom/Beaglebone/ arm-angstrom-linux-gnueabi/sysroot The OpenGL ES 2.0 functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in d:/workspace/Qt5.5.1/5.5/Src/qtbase/mkspecs/devices/linux-beagleboard-g++.

Подскажи как пофиксить это.

user2132 ()
Ответ на: комментарий от user2132

Они есть? Установлены? QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 в d:/workspace/Qt5.5.1/5.5/Src/qtbase/mkspecs/devices/linux-beagleboard-g++ выставлены в нужные значения? Зачем тебе для прочтения ошибок другие люди? Ты же вроде по гайду это делаешь, что об этом говорит гайд?

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

Да я тоже думаю, что opengl es не особо нужен, просто как лучше написать configure, чтобы был фреймбуфер без всяких -no-xcb и -no-opengl. На счет гайдов пошаговых как-то в этой теме мало, более менее понятное что находил это тут https://visualgdb.com/tutorials/raspberry/qt/embedded/ Если знаешь годный гайд скинь, пожалуйста.

user2132 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.