Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REQ] Local input for headless mode #938

Closed
skoregon opened this issue Sep 12, 2022 · 53 comments
Closed

[REQ] Local input for headless mode #938

skoregon opened this issue Sep 12, 2022 · 53 comments
Assignees
Labels
enhancement New feature or request raspbeery treadmill wontfix This will not be worked on
Milestone

Comments

@skoregon
Copy link

skoregon commented Sep 12, 2022

Is your feature request related to a problem? Please describe.
I'd like to be able to provide input for speed/incline/stop/start status to my headless pi directly controlling the treadmill.

Describe the solution you'd like
I'd like for the headless mode to accept input from an attached usb keyboard, ideally via a config file to set the keys and the corresponding action (a=incline up). More sophisticated options such a bluetooth input or game controller input would work as well and would be wireless, but are not required.

Describe alternatives you've considered
Currently use GUI pulled up via VNC on a laptop next to treadmill. It works but having a treadmill next to a laptop is not ideal.

Additional context
I appreciate all the effort you put into this project!

This is connected with the headless pi controller for treadmills thread.
#525

@skoregon skoregon added the enhancement New feature or request label Sep 12, 2022
@cagnulein
Copy link
Owner

maybe also @drmason789 could be interested on this ;)

@cagnulein
Copy link
Owner

@skoregon you would like to use this running QZ with the -no-gui switch, isn't it?

@skoregon
Copy link
Author

@cagnulein Yes, my apologies for leaving that part out. I would like to have a headless pi using -no-gui switch but still accept keyboard (or game controller) input to trigger speed/incline/start/stop events via qdomyos->GPIO on the raspberry pi.

@cagnulein
Copy link
Owner

cagnulein added a commit that referenced this issue Sep 12, 2022
@cagnulein
Copy link
Owner

@skoregon done, could you please try to pull and build and try?

keys:

q = speed up
w = speed down
a = inclination up
s = inclination down

cagnulein added a commit that referenced this issue Sep 12, 2022
@cagnulein cagnulein added this to the 2.11 milestone Sep 12, 2022
cagnulein added a commit that referenced this issue Sep 12, 2022
@skoregon
Copy link
Author

When I run qmake I get a warning on a json file
qmake
WARNING: Failure to find: qdomyos-zwift_metatypes.json

If I ignore it and move forward with make -j4 I get an error in ConsoleReader.h: No such file or directory (see below).

In file included from dirconmanager.h:15,
from virtualbike.h:29,
from keepbike.h:30,
from keepbike.cpp:1:
dirconprocessor.h: In copy constructor ‘DirconProcessorCharacteristic::DirconProcessorCharacteristic(const DirconProcessorCharacteristic&)’:
dirconprocessor.h:21:5: warning: base class ‘class QObject’ should be explicitly initialized in the copy constructor -Wextra]
21 | DirconProcessorCharacteristic(const DirconProcessorCharacteristic &cp) { this->operator=(cp); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
g++ -c -pipe -fno-sized-deallocation -O3 -std=gnu++1z -flto -fno-fat-lto-objects -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DIO_UNDER_QT -DSMTP_BUILD -DQT_NO_DEBUG -DQT_CHARTS_LIB -DQT_WIDGETS_LIB -DQT_LOCATION_LIB -DQT_POSITIONINGQUICK_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_BLUETOOTH_LIB -DQT_XML_LIB -DQT_POSITIONING_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORKAUTH_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_TEXTTOSPEECH_LIB -DQT_CORE_LIB -I. -Iqmdnsengine/src/include -Ifit-sdk -Ipurchasing/qmltypes -Ipurchasing/inapp -I/usr/include/aarch64-linux-gnu/qt5 -I/usr/include/aarch64-linux-gnu/qt5/QtCharts -I/usr/include/aarch64-linux-gnu/qt5/QtWidgets -I/usr/include/aarch64-linux-gnu/qt5/QtLocation -I/usr/include/aarch64-linux-gnu/qt5/QtPositioningQuick -I/usr/include/aarch64-linux-gnu/qt5/QtQuickControls2 -I/usr/include/aarch64-linux-gnu/qt5/QtQuick -I/usr/include/aarch64-linux-gnu/qt5/QtMultimedia -I/usr/include/aarch64-linux-gnu/qt5/QtGui -I/usr/include/aarch64-linux-gnu/qt5/QtBluetooth -I/usr/include/aarch64-linux-gnu/qt5/QtXml -I/usr/include/aarch64-linux-gnu/qt5/QtPositioning -I/usr/include/aarch64-linux-gnu/qt5/QtQmlModels -I/usr/include/aarch64-linux-gnu/qt5/QtQml -I/usr/include/aarch64-linux-gnu/qt5/QtNetworkAuth -I/usr/include/aarch64-linux-gnu/qt5/QtWebSockets -I/usr/include/aarch64-linux-gnu/qt5/QtNetwork -I/usr/include/aarch64-linux-gnu/qt5/QtTextToSpeech -I/usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o kingsmithr2treadmill.o kingsmithr2treadmill.cpp
g++ -c -pipe -fno-sized-deallocation -O3 -std=gnu++1z -flto -fno-fat-lto-objects -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DIO_UNDER_QT -DSMTP_BUILD -DQT_NO_DEBUG -DQT_CHARTS_LIB -DQT_WIDGETS_LIB -DQT_LOCATION_LIB -DQT_POSITIONINGQUICK_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_BLUETOOTH_LIB -DQT_XML_LIB -DQT_POSITIONING_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORKAUTH_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_TEXTTOSPEECH_LIB -DQT_CORE_LIB -I. -Iqmdnsengine/src/include -Ifit-sdk -Ipurchasing/qmltypes -Ipurchasing/inapp -I/usr/include/aarch64-linux-gnu/qt5 -I/usr/include/aarch64-linux-gnu/qt5/QtCharts -I/usr/include/aarch64-linux-gnu/qt5/QtWidgets -I/usr/include/aarch64-linux-gnu/qt5/QtLocation -I/usr/include/aarch64-linux-gnu/qt5/QtPositioningQuick -I/usr/include/aarch64-linux-gnu/qt5/QtQuickControls2 -I/usr/include/aarch64-linux-gnu/qt5/QtQuick -I/usr/include/aarch64-linux-gnu/qt5/QtMultimedia -I/usr/include/aarch64-linux-gnu/qt5/QtGui -I/usr/include/aarch64-linux-gnu/qt5/QtBluetooth -I/usr/include/aarch64-linux-gnu/qt5/QtXml -I/usr/include/aarch64-linux-gnu/qt5/QtPositioning -I/usr/include/aarch64-linux-gnu/qt5/QtQmlModels -I/usr/include/aarch64-linux-gnu/qt5/QtQml -I/usr/include/aarch64-linux-gnu/qt5/QtNetworkAuth -I/usr/include/aarch64-linux-gnu/qt5/QtWebSockets -I/usr/include/aarch64-linux-gnu/qt5/QtNetwork -I/usr/include/aarch64-linux-gnu/qt5/QtTextToSpeech -I/usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o main.cpp
main.cpp:7:10: fatal error: ConsoleReader.h: No such file or directory
7 | #include "ConsoleReader.h"
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:14043: main.o] Error 1
make: *** Waiting for unfinished jobs....
keepbike.cpp: In member function ‘void keepbike::forceResistance(resistance_t)’:
keepbike.cpp:75:13: warning: unused variable ‘down’ [-Wunused-variable]
75 | uint8_t down[] = {0x5b, 0x02, 0xf1, 0x03, 0x5d};
| ^~~~
keepbike.cpp:73:45: warning: unused parameter ‘requestResistance’ [-Wunused-parameter]
73 | void keepbike::forceResistance(resistance_t requestResistance) {
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In file included from dirconmanager.h:15,
from virtualbike.h:29,
from kingsmithr1protreadmill.h:31,
from kingsmithr1protreadmill.cpp:1:
dirconprocessor.h: In copy constructor ‘DirconProcessorCharacteristic::DirconProcessorCharacteristic(const DirconProcessorCharacteristic&)’:
dirconprocessor.h:21:5: warning: base class ‘class QObject’ should be explicitly initialized in the copy constructor -Wextra]
21 | DirconProcessorCharacteristic(const DirconProcessorCharacteristic &cp) { this->operator=(cp); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from dirconmanager.h:15,
from virtualbike.h:29,
from kingsmithr2treadmill.h:32,
from kingsmithr2treadmill.cpp:1:
dirconprocessor.h: In copy constructor ‘DirconProcessorCharacteristic::DirconProcessorCharacteristic(const DirconProcessorCharacteristic&)’:
dirconprocessor.h:21:5: warning: base class ‘class QObject’ should be explicitly initialized in the copy constructor -Wextra]
21 | DirconProcessorCharacteristic(const DirconProcessorCharacteristic &cp) { this->operator=(cp); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kingsmithr1protreadmill.cpp: In member function ‘void kingsmithr1protreadmill::updateDisplay(uint16_t)’:
kingsmithr1protreadmill.cpp:74:54: warning: unused parameter ‘elapsed’ [-Wunused-parameter]
74 | void kingsmithr1protreadmill::updateDisplay(uint16_t elapsed) {}
| ~~~~~~~~~^~~~~~~
kingsmithr1protreadmill.cpp: In member function ‘void kingsmithr1protreadmill::btinit(bool)’:
kingsmithr1protreadmill.cpp:379:43: warning: unused parameter ‘startTape’ [-Wunused-parameter]
379 | void kingsmithr1protreadmill::btinit(bool startTape) {
| ~~~~~^~~~~~~~~
kingsmithr2treadmill.cpp: In member function ‘void kingsmithr2treadmill::updateDisplay(uint16_t)’:
kingsmithr2treadmill.cpp:89:51: warning: unused parameter ‘elapsed’ [-Wunused-parameter]
89 | void kingsmithr2treadmill::updateDisplay(uint16_t elapsed) {}
| ~~~~~~~~~^~~~~~~
kingsmithr2treadmill.cpp: In member function ‘void kingsmithr2treadmill::characteristicChanged(const QLowEnergyCharacteristic&, const QByteArray&)’:
kingsmithr2treadmill.cpp:272:67: warning: ‘QString::SkipEmptyParts’ is deprecated [-Wdeprecated-declarations]
272 | QStringList _props = data.split(QStringLiteral(" "), QString::SkipEmptyParts);
| ^~~~~~~~~~~~~~
In file included from /usr/include/aarch64-linux-gnu/qt5/QtCore/qobject.h:47,
from /usr/include/aarch64-linux-gnu/qt5/QtCore/QObject:1,
from /usr/include/aarch64-linux-gnu/qt5/QtBluetooth/qbluetoothdevicediscoveryagent.h:46,
from /usr/include/aarch64-linux-gnu/qt5/QtBluetooth/QBluetoothDeviceDiscoveryAgent:1,
from kingsmithr2treadmill.h:4,
from kingsmithr2treadmill.cpp:1:
/usr/include/aarch64-linux-gnu/qt5/QtCore/qstring.h:605:9: note: declared here
605 | SkipEmptyParts Q_DECL_ENUMERATOR_DEPRECATED
| ^~~~~~~~~~~~~~
kingsmithr2treadmill.cpp:272:67: warning: ‘QString::SkipEmptyParts’ is deprecated [-Wdeprecated-declarations]
272 | QStringList _props = data.split(QStringLiteral(" "), QString::SkipEmptyParts);
| ^~~~~~~~~~~~~~
In file included from /usr/include/aarch64-linux-gnu/qt5/QtCore/qobject.h:47,
from /usr/include/aarch64-linux-gnu/qt5/QtCore/QObject:1,
from /usr/include/aarch64-linux-gnu/qt5/QtBluetooth/qbluetoothdevicediscoveryagent.h:46,
from /usr/include/aarch64-linux-gnu/qt5/QtBluetooth/QBluetoothDeviceDiscoveryAgent:1,
from kingsmithr2treadmill.h:4,
from kingsmithr2treadmill.cpp:1:
/usr/include/aarch64-linux-gnu/qt5/QtCore/qstring.h:605:9: note: declared here
605 | SkipEmptyParts Q_DECL_ENUMERATOR_DEPRECATED
| ^~~~~~~~~~~~~~
kingsmithr2treadmill.cpp:272:81: warning: ‘QStringList QString::split(const QString&, QString::SplitBehavior, Qt::CaseSensitivity) const’ is deprecated: Use Qt::SplitBehavior variant instead [-Wdeprecated-declarations]
272 | QStringList _props = data.split(QStringLiteral(" "), QString::SkipEmptyParts);
| ^
In file included from /usr/include/aarch64-linux-gnu/qt5/QtCore/qobject.h:47,
from /usr/include/aarch64-linux-gnu/qt5/QtCore/QObject:1,
from /usr/include/aarch64-linux-gnu/qt5/QtBluetooth/qbluetoothdevicediscoveryagent.h:46,
from /usr/include/aarch64-linux-gnu/qt5/QtBluetooth/QBluetoothDeviceDiscoveryAgent:1,
from kingsmithr2treadmill.h:4,
from kingsmithr2treadmill.cpp:1:
/usr/include/aarch64-linux-gnu/qt5/QtCore/qstring.h:609:17: note: declared here
609 | QStringList split(const QString &sep, SplitBehavior behavior,
| ^~~~~
kingsmithr2treadmill.cpp: In member function ‘void kingsmithr2treadmill::btinit(bool)’:
kingsmithr2treadmill.cpp:366:40: warning: unused parameter ‘startTape’ [-Wunused-parameter]
366 | void kingsmithr2treadmill::btinit(bool startTape) {
| ~~~~~^~~~~~~~~

@cagnulein
Copy link
Owner

sorry @skoregon pull it and build it again, i forgot the case sensitiviness on linux about the file names

@skoregon
Copy link
Author

Looks like there might be one more instance hiding somewhere:

(see main.cpp:559:54: error: no matching function below)

irconprocessor.h: In copy constructor ‘DirconProcessorCharacteristic::DirconProcessorCharacteristic(const DirconProcessorCharacteristic&)’:
dirconprocessor.h:21:5: warning: base class ‘class QObject’ should be explicitly initialized in the copy constructor [-Wextra]
21 | DirconProcessorCharacteristic(const DirconProcessorCharacteristic &cp) { this->operator=(cp); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp: In lambda function:
main.cpp:395:42: warning: unused parameter ‘workout_name’ [-Wunused-parameter]
395 | [&](QString workout_name, QString instructor) { app->exit(0); });
| ~~~~~~~~^~~~~~~~~~~~
main.cpp:395:64: warning: unused parameter ‘instructor’ [-Wunused-parameter]
395 | [&](QString workout_name, QString instructor) { app->exit(0); });
| ~~~~~~~~^~~~~~~~~~
main.cpp: In function ‘int main(int, char**)’:
main.cpp:559:54: error: no matching function for call to ‘ConsoleReader::ConsoleReader()’
559 | ConsoleReader consoleReader = new ConsoleReader();
| ^
In file included from main.cpp:7:
ConsoleReader.h:13:5: note: candidate: ‘ConsoleReader::ConsoleReader(bluetooth
)’
13 | ConsoleReader(bluetooth bt);
| ^~~~~~~~~~~~~
ConsoleReader.h:13:5: note: candidate expects 1 argument, 0 provided
main.cpp:560:26: error: cannot convert ‘bluetooth
’ to ‘QThread::Priority’
560 | consoleReader->start(&bl);
| ^~~
| |
| bluetooth*
In file included from /usr/include/aarch64-linux-gnu/qt5/QtCore/QThread:1,
from gpiotreadmill.h:29,
from bluetooth.h:48,
from ConsoleReader.h:4,
from main.cpp:7:
/usr/include/aarch64-linux-gnu/qt5/QtCore/qthread.h:132:16: note: initializing argument 1 of ‘void QThread::start(QThread::Priority)’
132 | void start(Priority = InheritPriority);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
g++ -c -pipe -fno-sized-deallocation -O3 -std=gnu++1z -flto -fno-fat-lto-objects -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DIO_UNDER_QT -DSMTP_BUILD -DQT_NO_DEBUG -DQT_CHARTS_LIB -DQT_WIDGETS_LIB -DQT_LOCATION_LIB -DQT_POSITIONINGQUICK_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_BLUETOOTH_LIB -DQT_XML_LIB -DQT_POSITIONING_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORKAUTH_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_TEXTTOSPEECH_LIB -DQT_CORE_LIB -I. -Iqmdnsengine/src/include -Ifit-sdk -Ipurchasing/qmltypes -Ipurchasing/inapp -I/usr/include/aarch64-linux-gnu/qt5 -I/usr/include/aarch64-linux-gnu/qt5/QtCharts -I/usr/include/aarch64-linux-gnu/qt5/QtWidgets -I/usr/include/aarch64-linux-gnu/qt5/QtLocation -I/usr/include/aarch64-linux-gnu/qt5/QtPositioningQuick -I/usr/include/aarch64-linux-gnu/qt5/QtQuickControls2 -I/usr/include/aarch64-linux-gnu/qt5/QtQuick -I/usr/include/aarch64-linux-gnu/qt5/QtMultimedia -I/usr/include/aarch64-linux-gnu/qt5/QtGui -I/usr/include/aarch64-linux-gnu/qt5/QtBluetooth -I/usr/include/aarch64-linux-gnu/qt5/QtXml -I/usr/include/aarch64-linux-gnu/qt5/QtPositioning -I/usr/include/aarch64-linux-gnu/qt5/QtQmlModels -I/usr/include/aarch64-linux-gnu/qt5/QtQml -I/usr/include/aarch64-linux-gnu/qt5/QtNetworkAuth -I/usr/include/aarch64-linux-gnu/qt5/QtWebSockets -I/usr/include/aarch64-linux-gnu/qt5/QtNetwork -I/usr/include/aarch64-linux-gnu/qt5/QtTextToSpeech -I/usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o nautiluselliptical.o nautiluselliptical.cpp
make: *** [Makefile:14158: main.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from dirconmanager.h:15,
from virtualbike.h:29,
from nautiluselliptical.h:30,
from nautiluselliptical.cpp:1:
dirconprocessor.h: In copy constructor ‘DirconProcessorCharacteristic::DirconProcessorCharacteristic(const DirconProcessorCharacteristic&)’:
dirconprocessor.h:21:5: warning: base class ‘class QObject’ should be explicitly initialized in the copy constructor [-Wextra]
21 | DirconProcessorCharacteristic(const DirconProcessorCharacteristic &cp) { this->operator=(cp); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@cagnulein
Copy link
Owner

@skoregon Ops sorry, fixed

@skoregon
Copy link
Author

skoregon commented Sep 15, 2022

@cagnulein It errored out during Make on the following line:

:(.text.startup+0x5268): undefined reference to `ConsoleReader::ConsoleReader(bluetooth*)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:1417: qdomyos-zwift] Error 1

@skoregon
Copy link
Author

In case more of the error message is needed:
T_NETWORKAUTH_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_TEXTTOSPEECH_LIB -DQT_CORE_LIB -I. -Iqmdnsengine/src/include -Ifit-sdk -Ipurchasing/qmltypes -Ipurchasing/inapp -I/usr/include/arm-linux-gnueabihf/qt5 -I/usr/include/arm-linux-gnueabihf/qt5/QtCharts -I/usr/include/arm-linux-gnueabihf/qt5/QtWidgets -I/usr/include/arm-linux-gnueabihf/qt5/QtLocation -I/usr/include/arm-linux-gnueabihf/qt5/QtPositioningQuick -I/usr/include/arm-linux-gnueabihf/qt5/QtQuickControls2 -I/usr/include/arm-linux-gnueabihf/qt5/QtQuick -I/usr/include/arm-linux-gnueabihf/qt5/QtMultimedia -I/usr/include/arm-linux-gnueabihf/qt5/QtGui -I/usr/include/arm-linux-gnueabihf/qt5/QtBluetooth -I/usr/include/arm-linux-gnueabihf/qt5/QtXml -I/usr/include/arm-linux-gnueabihf/qt5/QtPositioning -I/usr/include/arm-linux-gnueabihf/qt5/QtQmlModels -I/usr/include/arm-linux-gnueabihf/qt5/QtQml -I/usr/include/arm-linux-gnueabihf/qt5/QtNetworkAuth -I/usr/include/arm-linux-gnueabihf/qt5/QtWebSockets -I/usr/include/arm-linux-gnueabihf/qt5/QtNetwork -I/usr/include/arm-linux-gnueabihf/qt5/QtTextToSpeech -I/usr/include/arm-linux-gnueabihf/qt5/QtCore -I. -I. -I/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++ -o moc_inapptransaction.o moc_inapptransaction.cpp
g++ -Wl,-O1 -s -pipe -fno-sized-deallocation -O3 -std=gnu++1z -flto -fno-fat-lto-objects -fuse-linker-plugin -Wl,-rpath-link,/usr/lib/arm-linux-gnueabihf -fPIC -o qdomyos-zwift PathController.o characteristicnotifier2a53.o characteristicnotifier2a5b.o characteristicnotifier2acc.o characteristicnotifier2acd.o characteristicnotifier2ad9.o ConsoleReader.o fakeelliptical.o faketreadmill.o kmlworkout.o nautilusbike.o nordictrackelliptical.o nordictrackifitadbbike.o nordictrackifitadbtreadmill.o octanetreadmill.o proformellipticaltrainer.o proformrower.o proformwifibike.o proformwifitreadmill.o abstractserver.o bitmap.o browser.o cache.o dns.o hostname.o mdns.o message.o prober.o provider.o query.o record.o resolver.o server.o service.o activiotreadmill.o bhfitnesselliptical.o bike.o bluetooth.o bluetoothdevice.o characteristicnotifier2a37.o characteristicnotifier2a63.o characteristicnotifier2ad2.o characteristicwriteprocessor2ad9.o bowflext216treadmill.o bowflextreadmill.o chronobike.o concept2skierg.o cscbike.o dirconmanager.o dirconpacket.o dirconprocessor.o domyoselliptical.o domyosrower.o domyostreadmill.o echelonconnectsport.o echelonrower.o echelonstride.o eliterizer.o elitesterzosmart.o elliptical.o eslinkertreadmill.o fakebike.o filedownloader.o fitmetria_fanfit.o fitplusbike.o fitshowtreadmill.o fit.o fit_accumulated_field.o fit_accumulator.o fit_buffer_encode.o fit_buffered_mesg_broadcaster.o fit_buffered_record_mesg_broadcaster.o fit_crc.o fit_date_time.o fit_decode.o fit_developer_field.o fit_developer_field_definition.o fit_developer_field_description.o fit_encode.o fit_factory.o fit_field.o fit_field_base.o fit_field_definition.o fit_mesg.o fit_mesg_broadcaster.o fit_mesg_definition.o fit_mesg_with_event_broadcaster.o fit_profile.o fit_protocol_validator.o fit_unicode.o flywheelbike.o ftmsbike.o ftmsrower.o gpiotreadmill.o gpx.o heartratebelt.o homefitnessbuddy.o homeform.o horizongr7bike.o horizontreadmill.o iconceptbike.o inspirebike.o keepawakehelper.o keepbike.o kingsmithr1protreadmill.o kingsmithr2treadmill.o main.o mcfbike.o metric.o nautiluselliptical.o nautilustreadmill.o npecablebike.o pafersbike.o paferstreadmill.o peloton.o powerzonepack.o proformbike.o proformelliptical.o proformtreadmill.o qfit.o renphobike.o rower.o schwinnic4bike.o screencapture.o sessionline.o shuaa5treadmill.o signalhandler.o simplecrypt.o skandikawiribike.o smartrowrower.o smartspin2k.o emailaddress.o mimeattachment.o mimecontentformatter.o mimefile.o mimehtml.o mimeinlinefile.o mimemessage.o mimemultipart.o mimepart.o mimetext.o quotedprintable.o smtpclient.o snodebike.o solebike.o soleelliptical.o solef80treadmill.o spirittreadmill.o sportsplusbike.o sportstechbike.o strydrunpowersensor.o tacxneo2.o tcpclientinfosender.o technogymmyruntreadmill.o technogymmyruntreadmillrfcomm.o templateinfosender.o templateinfosenderbuilder.o stagesbike.o toorxtreadmill.o treadmill.o truetreadmill.o trxappgateusbbike.o ultrasportbike.o virtualrower.o wahookickrsnapbike.o yesoulbike.o trainprogram.o trxappgateusbtreadmill.o virtualbike.o virtualtreadmill.o m3ibike.o domyosbike.o scanrecordresult.o zwiftworkout.o mainwindow.o charts.o inappproductqmltype.o inappstoreqmltype.o inappproduct.o inapppurchasebackend.o inappstore.o inapptransaction.o qdomyos-zwift_qmltyperegistrations.o qrc_icons.o qrc_qml.o moc_ConsoleReader.o moc_fakeelliptical.o moc_faketreadmill.o moc_nautilusbike.o moc_nordictrackelliptical.o moc_nordictrackifitadbbike.o moc_nordictrackifitadbtreadmill.o moc_octanetreadmill.o moc_proformellipticaltrainer.o moc_proformrower.o moc_proformwifibike.o moc_proformwifitreadmill.o moc_abstractserver.o moc_browser.o moc_cache.o moc_hostname.o moc_prober.o moc_provider.o moc_resolver.o moc_server.o moc_browser_p.o moc_cache_p.o moc_hostname_p.o moc_prober_p.o moc_provider_p.o moc_resolver_p.o moc_server_p.o moc_activiotreadmill.o moc_bhfitnesselliptical.o moc_bike.o moc_bluetooth.o moc_bluetoothdevice.o moc_characteristicnotifier.o moc_characteristicwriteprocessor.o moc_characteristicwriteprocessor2ad9.o moc_bowflext216treadmill.o moc_bowflextreadmill.o moc_chronobike.o moc_concept2skierg.o moc_cscbike.o moc_dirconmanager.o moc_dirconprocessor.o moc_domyoselliptical.o moc_domyosrower.o moc_domyostreadmill.o moc_echelonconnectsport.o moc_echelonrower.o moc_echelonstride.o moc_eliterizer.o moc_elitesterzosmart.o moc_elliptical.o moc_eslinkertreadmill.o moc_fakebike.o moc_filedownloader.o moc_fitmetria_fanfit.o moc_fitplusbike.o moc_ftmsrower.o moc_gpiotreadmill.o moc_homefitnessbuddy.o moc_horizongr7bike.o moc_iconceptbike.o moc_keepbike.o moc_kingsmithr1protreadmill.o moc_kingsmithr2treadmill.o moc_m3ibike.o moc_fitshowtreadmill.o moc_flywheelbike.o moc_ftmsbike.o moc_heartratebelt.o moc_homeform.o moc_horizontreadmill.o moc_inspirebike.o moc_material.o moc_mcfbike.o moc_nautiluselliptical.o moc_nautilustreadmill.o moc_npecablebike.o moc_pafersbike.o moc_paferstreadmill.o moc_peloton.o moc_powerzonepack.o moc_proformbike.o moc_proformelliptical.o moc_proformtreadmill.o moc_qfit.o moc_renphobike.o moc_rower.o moc_schwinnic4bike.o moc_screencapture.o moc_shuaa5treadmill.o moc_skandikawiribike.o moc_smartrowrower.o moc_smartspin2k.o moc_emailaddress.o moc_mimeattachment.o moc_mimecontentformatter.o moc_mimefile.o moc_mimehtml.o moc_mimemultipart.o moc_mimepart.o moc_quotedprintable.o moc_smtpclient.o moc_snodebike.o moc_solebike.o moc_soleelliptical.o moc_solef80treadmill.o moc_spirittreadmill.o moc_sportsplusbike.o moc_sportstechbike.o moc_strydrunpowersensor.o moc_tacxneo2.o moc_tcpclientinfosender.o moc_technogymmyruntreadmill.o moc_technogymmyruntreadmillrfcomm.o moc_templateinfosender.o moc_templateinfosenderbuilder.o moc_stagesbike.o moc_toorxtreadmill.o moc_gpx.o moc_treadmill.o moc_mainwindow.o moc_trainprogram.o moc_truetreadmill.o moc_trxappgateusbbike.o moc_trxappgateusbtreadmill.o moc_ultrasportbike.o moc_virtualbike.o moc_virtualrower.o moc_virtualtreadmill.o moc_domyosbike.o moc_wahookickrsnapbike.o moc_wobjectdefs.o moc_yesoulbike.o moc_charts.o moc_inappproductqmltype.o moc_inappstoreqmltype.o moc_inappproduct.o moc_inapppurchasebackend.o moc_inappstore.o moc_inapptransaction.o -lwiringPi /usr/lib/arm-linux-gnueabihf/libQt5Charts.so /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so /usr/lib/arm-linux-gnueabihf/libQt5Location.so /usr/lib/arm-linux-gnueabihf/libQt5PositioningQuick.so /usr/lib/arm-linux-gnueabihf/libQt5QuickControls2.so /usr/lib/arm-linux-gnueabihf/libQt5Quick.so /usr/lib/arm-linux-gnueabihf/libQt5Multimedia.so /usr/lib/arm-linux-gnueabihf/libQt5Gui.so /usr/lib/arm-linux-gnueabihf/libQt5Bluetooth.so /usr/lib/arm-linux-gnueabihf/libQt5Xml.so /usr/lib/arm-linux-gnueabihf/libQt5Positioning.so /usr/lib/arm-linux-gnueabihf/libQt5QmlModels.so /usr/lib/arm-linux-gnueabihf/libQt5Qml.so /usr/lib/arm-linux-gnueabihf/libQt5NetworkAuth.so /usr/lib/arm-linux-gnueabihf/libQt5WebSockets.so /usr/lib/arm-linux-gnueabihf/libQt5Network.so /usr/lib/arm-linux-gnueabihf/libQt5TextToSpeech.so /usr/lib/arm-linux-gnueabihf/libQt5Core.so -lGLESv2 -lpthread -latomic
/usr/bin/ld: /tmp/qdomyos-zwift.xL5612.ltrans39.ltrans.o: in function main': <artificial>:(.text.startup+0x5268): undefined reference to ConsoleReader::ConsoleReader(bluetooth*)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:1417: qdomyos-zwift] Error 1

cagnulein added a commit that referenced this issue Sep 15, 2022
@cagnulein
Copy link
Owner

@skoregon i found an issue on a call but it's not releated to the linker issue.
I suggest to pull it again, make clean and make again, i guess something was dirty in the compiler cache.
Let me know

@skoregon
Copy link
Author

skoregon commented Sep 16, 2022

@cagnulein I get the same error. I am trying to compile it on a Pi zero W if that matters. See attached for the full log. I am just using "make" not "make -j4". I am running the Lite version of the OS. Are there other changes I need to make to get it to compile on a pi zero?

pi@raspberrypi:~/qdomyos-zwift/src $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

pi@raspberrypi:~/qdomyos-zwift/src $ cat /sys/firmware/devicetree/base/model
Raspberry Pi Zero W Rev 1.1

results.txt

@shoulih
Copy link

shoulih commented Sep 16, 2022

WARNING: Failure to find: qdomyos-zwift_metatypes.json

is it Ok to ignore this WARNING ?

@cagnulein
Copy link
Owner

WARNING: Failure to find: qdomyos-zwift_metatypes.json

is it Ok to ignore this WARNING ?

yes it's safe, i'm checking the log

cagnulein added a commit that referenced this issue Sep 16, 2022
@cagnulein
Copy link
Owner

I guess I fixed it now.
It was always an issue about uppercase and undercase of the files.
Do a

make clean
qmake
make -j2

Let me know and sorry for the issues @shoulih

@cagnulein
Copy link
Owner

@skoregon

@shoulih
Copy link

shoulih commented Sep 16, 2022

I guess I fixed it now. It was always an issue about uppercase and undercase of the files. Do a

make clean qmake make -j2

Let me know and sorry for the issues @shoulih

still getting this WARMING:

WARNING: Failure to find: qdomyos-zwift_metatypes.json

root@DietPi:~/qdomyos-zwift# git status
On branch master
Your branch is up to date with 'origin/master'.

where is file "qdomyos-zwift_metatypes.json" located?

@cagnulein
Copy link
Owner

@shoulih yes the warning is ok. is it building now?

@skoregon
Copy link
Author

@cagnulein Sadly still errors out.

/usr/lib/qt5/bin/qmltyperegistrar --generate-qmltypes=qdomyos-zwift.qmltypes --import-name=org.cagnulein.qdomyoszwift --major-version=1 --minor-version=0 --foreign-types=/usr/lib/arm-linux-gnueabihf/metatypes/qt5charts_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5widgets_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5location_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5positioningquick_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5quickcontrols2_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5quick_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5multimedia_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5gui_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5bluetooth_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5concurrent_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5dbus_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5qmlmodels_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5qml_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5networkauth_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5websockets_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5network_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5xml_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5positioning_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5texttospeech_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5core_metatypes.json,/usr/lib/arm-linux-gnueabihf/metatypes/qt5quicktemplates2_metatypes.json -o qdomyos-zwift_qmltyperegistrations.cpp qdomyos-zwift_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5charts_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5location_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5positioningquick_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5quickcontrols2_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5multimedia_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5bluetooth_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5concurrent_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5dbus_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5networkauth_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5websockets_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5network_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5xml_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5positioning_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5texttospeech_metatypes.json Cannot open foreign types file /usr/lib/arm-linux-gnueabihf/metatypes/qt5quicktemplates2_metatypes.json g++ -c -pipe -fno-sized-deallocation -O3 -std=gnu++1z -flto -fno-fat-lto-objects -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DIO_UNDER_QT -DSMTP_BUILD -DQT_NO_DEBUG -DQT_CHARTS_LIB -DQT_WIDGETS_LIB -DQT_LOCATION_LIB -DQT_POSITIONINGQUICK_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_BLUETOOTH_LIB -DQT_XML_LIB -DQT_POSITIONING_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORKAUTH_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_TEXTTOSPEECH_LIB -DQT_CORE_LIB -I. -Iqmdnsengine/src/include -Ifit-sdk -Ipurchasing/qmltypes -Ipurchasing/inapp -I/usr/include/arm-linux-gnueabihf/qt5 -I/usr/include/arm-linux-gnueabihf/qt5/QtCharts -I/usr/include/arm-linux-gnueabihf/qt5/QtWidgets -I/usr/include/arm-linux-gnueabihf/qt5/QtLocation -I/usr/include/arm-linux-gnueabihf/qt5/QtPositioningQuick -I/usr/include/arm-linux-gnueabihf/qt5/QtQuickControls2 -I/usr/include/arm-linux-gnueabihf/qt5/QtQuick -I/usr/include/arm-linux-gnueabihf/qt5/QtMultimedia -I/usr/include/arm-linux-gnueabihf/qt5/QtGui -I/usr/include/arm-linux-gnueabihf/qt5/QtBluetooth -I/usr/include/arm-linux-gnueabihf/qt5/QtXml -I/usr/include/arm-linux-gnueabihf/qt5/QtPositioning -I/usr/include/arm-linux-gnueabihf/qt5/QtQmlModels -I/usr/include/arm-linux-gnueabihf/qt5/QtQml -I/usr/include/arm-linux-gnueabihf/qt5/QtNetworkAuth -I/usr/include/arm-linux-gnueabihf/qt5/QtWebSockets -I/usr/include/arm-linux-gnueabihf/qt5/QtNetwork -I/usr/include/arm-linux-gnueabihf/qt5/QtTextToSpeech -I/usr/include/arm-linux-gnueabihf/qt5/QtCore -I. -I. -I/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++ -o qdomyos-zwift_qmltyperegistrations.o qdomyos-zwift_qmltyperegistrations.cpp g++ -Wl,-O1 -s -pipe -fno-sized-deallocation -O3 -std=gnu++1z -flto -fno-fat-lto-objects -fuse-linker-plugin -Wl,-rpath-link,/usr/lib/arm-linux-gnueabihf -fPIC -o qdomyos-zwift PathController.o characteristicnotifier2a53.o characteristicnotifier2a5b.o characteristicnotifier2acc.o characteristicnotifier2acd.o characteristicnotifier2ad9.o ConsoleReader.o fakeelliptical.o faketreadmill.o kmlworkout.o nautilusbike.o nordictrackelliptical.o nordictrackifitadbbike.o nordictrackifitadbtreadmill.o octanetreadmill.o proformellipticaltrainer.o proformrower.o proformwifibike.o proformwifitreadmill.o abstractserver.o bitmap.o browser.o cache.o dns.o hostname.o mdns.o message.o prober.o provider.o query.o record.o resolver.o server.o service.o activiotreadmill.o bhfitnesselliptical.o bike.o bluetooth.o bluetoothdevice.o characteristicnotifier2a37.o characteristicnotifier2a63.o characteristicnotifier2ad2.o characteristicwriteprocessor2ad9.o bowflext216treadmill.o bowflextreadmill.o chronobike.o concept2skierg.o cscbike.o dirconmanager.o dirconpacket.o dirconprocessor.o domyoselliptical.o domyosrower.o domyostreadmill.o echelonconnectsport.o echelonrower.o echelonstride.o eliterizer.o elitesterzosmart.o elliptical.o eslinkertreadmill.o fakebike.o filedownloader.o fitmetria_fanfit.o fitplusbike.o fitshowtreadmill.o fit.o fit_accumulated_field.o fit_accumulator.o fit_buffer_encode.o fit_buffered_mesg_broadcaster.o fit_buffered_record_mesg_broadcaster.o fit_crc.o fit_date_time.o fit_decode.o fit_developer_field.o fit_developer_field_definition.o fit_developer_field_description.o fit_encode.o fit_factory.o fit_field.o fit_field_base.o fit_field_definition.o fit_mesg.o fit_mesg_broadcaster.o fit_mesg_definition.o fit_mesg_with_event_broadcaster.o fit_profile.o fit_protocol_validator.o fit_unicode.o flywheelbike.o ftmsbike.o ftmsrower.o gpiotreadmill.o gpx.o heartratebelt.o homefitnessbuddy.o homeform.o horizongr7bike.o horizontreadmill.o iconceptbike.o inspirebike.o keepawakehelper.o keepbike.o kingsmithr1protreadmill.o kingsmithr2treadmill.o main.o mcfbike.o metric.o nautiluselliptical.o nautilustreadmill.o npecablebike.o pafersbike.o paferstreadmill.o peloton.o powerzonepack.o proformbike.o proformelliptical.o proformtreadmill.o qfit.o renphobike.o rower.o schwinnic4bike.o screencapture.o sessionline.o shuaa5treadmill.o signalhandler.o simplecrypt.o skandikawiribike.o smartrowrower.o smartspin2k.o emailaddress.o mimeattachment.o mimecontentformatter.o mimefile.o mimehtml.o mimeinlinefile.o mimemessage.o mimemultipart.o mimepart.o mimetext.o quotedprintable.o smtpclient.o snodebike.o solebike.o soleelliptical.o solef80treadmill.o spirittreadmill.o sportsplusbike.o sportstechbike.o strydrunpowersensor.o tacxneo2.o tcpclientinfosender.o technogymmyruntreadmill.o technogymmyruntreadmillrfcomm.o templateinfosender.o templateinfosenderbuilder.o stagesbike.o toorxtreadmill.o treadmill.o truetreadmill.o trxappgateusbbike.o ultrasportbike.o virtualrower.o wahookickrsnapbike.o yesoulbike.o trainprogram.o trxappgateusbtreadmill.o virtualbike.o virtualtreadmill.o m3ibike.o domyosbike.o scanrecordresult.o zwiftworkout.o mainwindow.o charts.o inappproductqmltype.o inappstoreqmltype.o inappproduct.o inapppurchasebackend.o inappstore.o inapptransaction.o qdomyos-zwift_qmltyperegistrations.o qrc_icons.o qrc_qml.o moc_ConsoleReader.o moc_fakeelliptical.o moc_faketreadmill.o moc_nautilusbike.o moc_nordictrackelliptical.o moc_nordictrackifitadbbike.o moc_nordictrackifitadbtreadmill.o moc_octanetreadmill.o moc_proformellipticaltrainer.o moc_proformrower.o moc_proformwifibike.o moc_proformwifitreadmill.o moc_abstractserver.o moc_browser.o moc_cache.o moc_hostname.o moc_prober.o moc_provider.o moc_resolver.o moc_server.o moc_browser_p.o moc_cache_p.o moc_hostname_p.o moc_prober_p.o moc_provider_p.o moc_resolver_p.o moc_server_p.o moc_activiotreadmill.o moc_bhfitnesselliptical.o moc_bike.o moc_bluetooth.o moc_bluetoothdevice.o moc_characteristicnotifier.o moc_characteristicwriteprocessor.o moc_characteristicwriteprocessor2ad9.o moc_bowflext216treadmill.o moc_bowflextreadmill.o moc_chronobike.o moc_concept2skierg.o moc_cscbike.o moc_dirconmanager.o moc_dirconprocessor.o moc_domyoselliptical.o moc_domyosrower.o moc_domyostreadmill.o moc_echelonconnectsport.o moc_echelonrower.o moc_echelonstride.o moc_eliterizer.o moc_elitesterzosmart.o moc_elliptical.o moc_eslinkertreadmill.o moc_fakebike.o moc_filedownloader.o moc_fitmetria_fanfit.o moc_fitplusbike.o moc_ftmsrower.o moc_gpiotreadmill.o moc_homefitnessbuddy.o moc_horizongr7bike.o moc_iconceptbike.o moc_keepbike.o moc_kingsmithr1protreadmill.o moc_kingsmithr2treadmill.o moc_m3ibike.o moc_fitshowtreadmill.o moc_flywheelbike.o moc_ftmsbike.o moc_heartratebelt.o moc_homeform.o moc_horizontreadmill.o moc_inspirebike.o moc_material.o moc_mcfbike.o moc_nautiluselliptical.o moc_nautilustreadmill.o moc_npecablebike.o moc_pafersbike.o moc_paferstreadmill.o moc_peloton.o moc_powerzonepack.o moc_proformbike.o moc_proformelliptical.o moc_proformtreadmill.o moc_qfit.o moc_renphobike.o moc_rower.o moc_schwinnic4bike.o moc_screencapture.o moc_shuaa5treadmill.o moc_skandikawiribike.o moc_smartrowrower.o moc_smartspin2k.o moc_emailaddress.o moc_mimeattachment.o moc_mimecontentformatter.o moc_mimefile.o moc_mimehtml.o moc_mimemultipart.o moc_mimepart.o moc_quotedprintable.o moc_smtpclient.o moc_snodebike.o moc_solebike.o moc_soleelliptical.o moc_solef80treadmill.o moc_spirittreadmill.o moc_sportsplusbike.o moc_sportstechbike.o moc_strydrunpowersensor.o moc_tacxneo2.o moc_tcpclientinfosender.o moc_technogymmyruntreadmill.o moc_technogymmyruntreadmillrfcomm.o moc_templateinfosender.o moc_templateinfosenderbuilder.o moc_stagesbike.o moc_toorxtreadmill.o moc_gpx.o moc_treadmill.o moc_mainwindow.o moc_trainprogram.o moc_truetreadmill.o moc_trxappgateusbbike.o moc_trxappgateusbtreadmill.o moc_ultrasportbike.o moc_virtualbike.o moc_virtualrower.o moc_virtualtreadmill.o moc_domyosbike.o moc_wahookickrsnapbike.o moc_wobjectdefs.o moc_yesoulbike.o moc_charts.o moc_inappproductqmltype.o moc_inappstoreqmltype.o moc_inappproduct.o moc_inapppurchasebackend.o moc_inappstore.o moc_inapptransaction.o -lwiringPi /usr/lib/arm-linux-gnueabihf/libQt5Charts.so /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so /usr/lib/arm-linux-gnueabihf/libQt5Location.so /usr/lib/arm-linux-gnueabihf/libQt5PositioningQuick.so /usr/lib/arm-linux-gnueabihf/libQt5QuickControls2.so /usr/lib/arm-linux-gnueabihf/libQt5Quick.so /usr/lib/arm-linux-gnueabihf/libQt5Multimedia.so /usr/lib/arm-linux-gnueabihf/libQt5Gui.so /usr/lib/arm-linux-gnueabihf/libQt5Bluetooth.so /usr/lib/arm-linux-gnueabihf/libQt5Xml.so /usr/lib/arm-linux-gnueabihf/libQt5Positioning.so /usr/lib/arm-linux-gnueabihf/libQt5QmlModels.so /usr/lib/arm-linux-gnueabihf/libQt5Qml.so /usr/lib/arm-linux-gnueabihf/libQt5NetworkAuth.so /usr/lib/arm-linux-gnueabihf/libQt5WebSockets.so /usr/lib/arm-linux-gnueabihf/libQt5Network.so /usr/lib/arm-linux-gnueabihf/libQt5TextToSpeech.so /usr/lib/arm-linux-gnueabihf/libQt5Core.so -lGLESv2 -lpthread -latomic /usr/bin/ld: /tmp/qdomyos-zwift.P56bD9.ltrans39.ltrans.o: in function main':
:(.text.startup+0x5268): undefined reference to ConsoleReader::ConsoleReader(bluetooth*)' collect2: error: ld returned 1 exit status make: *** [Makefile:1417: qdomyos-zwift] Error 1

@cagnulein
Copy link
Owner

@skoregon pull it again and build it, i fixed the segmentation fault and now it should works ok with the -no-gui selector
Let me know

@skoregon
Copy link
Author

@cagnulein I have successfully compiled the software and it runs with sudo ./qdomyos-zwift -no-gui -gpiotreadmill and responds in the console to the key presses. It works very well! Thank you for sticking with it.

Is there a way with the keyboard input to still have it load at boot automatically? The procedure in the md file has it running as a background service so it appears not to be able to intercept keyboard commands. https://github.com/cagnulein/qdomyos-zwift/blob/master/docs/10_Installation.md

Also, is there a way to change the expected keys for each function (increase speed) without recompiling? I would like to assign it to numbers or arrow keys so I can using a 10 key pad or even just an arrow pad attached to USB.

@cagnulein
Copy link
Owner

I have successfully compiled the software and it runs with sudo ./qdomyos-zwift -no-gui -gpiotreadmill and responds in the console to the key presses. It works very well! Thank you for sticking with it.

Great!

Is there a way with the keyboard input to still have it load at boot automatically? The procedure in the md file has it running as a background service so it appears not to be able to intercept keyboard commands. https://github.com/cagnulein/qdomyos-zwift/blob/master/docs/10_Installation.md

The background service can't work because in order to "feel" the keyboard, the process MUST running on the current shell. One workaround could be:

  1. autologin on a bash shell on startup https://raspberrypi.stackexchange.com/questions/40415/how-to-enable-auto-login
  2. autostart qz on login https://unix.stackexchange.com/questions/56083/how-to-write-a-shell-script-that-gets-executed-on-login

Also, is there a way to change the expected keys for each function (increase speed) without recompiling? I would like to assign it to numbers or arrow keys so I can using a 10 key pad or even just an arrow pad attached to USB.

not yet, which would be your perfect setup? I mean do you need also the key for a target speed (for example 3 for 3km/h and so on?)? and what about the inclination?

@shoulih
Copy link

shoulih commented Sep 20, 2022

@skoregon pull it again and build it, i fixed the segmentation fault and now it should works ok with the -no-gui selector Let me know

For some reason, I am still getting "Segmentation fault" with -no-gui selector after the latest pull and built from your latest commits or check-ins. Do I miss anything else?

@cagnulein
Copy link
Owner

@shoulih are you sure you're on the last commit? show me a git log

@shoulih
Copy link

shoulih commented Sep 20, 2022

@cagnulein here is the git log:
git_log.txt

@cagnulein
Copy link
Owner

@shoulih Got the issue, you're not in the gpio-treadmill branch ;)

@shoulih
Copy link

shoulih commented Sep 20, 2022

@shoulih Got the issue, you're not in the gpio-treadmill branch ;)

Got it; are you merging this branch fix to master?

Thanks Robert for your quick reply!

@cagnulein
Copy link
Owner

Yes @shoulih
I will do tomorrow

@shoulih
Copy link

shoulih commented Sep 20, 2022

Yes @shoulih I will do tomorrow

Thanks again and good night!

@cagnulein
Copy link
Owner

done @shoulih

@shoulih
Copy link

shoulih commented Sep 21, 2022

done @shoulih

Thanks Robert and it works now! it seems that the no gui mode will be good for running on Pi zero; is there an easy way to configure the QZ settings while running on no gui mode?

@cagnulein
Copy link
Owner

@shoulih Which settings do you need? We should need a switch on command line for each setting. So let's start with the one that you need :)

@cagnulein
Copy link
Owner

@shoulih Also I guess you can edit the setting file by an editor

@shoulih
Copy link

shoulih commented Sep 21, 2022

that is what I need and can you please share the location of the setting file?

BTW, I don't need x11 for running QZ on no gui mode, right?

@cagnulein
Copy link
Owner

@shoulih Mine is under

/root/.config/Roberto\ Viola/

@cagnulein
Copy link
Owner

@shoulih No you don't need x11 :)

@shoulih
Copy link

shoulih commented Sep 21, 2022

found it

@shoulih Mine is under

/root/.config/Roberto\ Viola/

found it!

@shoulih
Copy link

shoulih commented Sep 21, 2022

@shoulih No you don't need x11 :)

Great and that will make Pi zero a super hero! :-)

@skoregon
Copy link
Author

I have successfully compiled the software and it runs with sudo ./qdomyos-zwift -no-gui -gpiotreadmill and responds in the console to the key presses. It works very well! Thank you for sticking with it.

Great!

Is there a way with the keyboard input to still have it load at boot automatically? The procedure in the md file has it running as a background service so it appears not to be able to intercept keyboard commands. https://github.com/cagnulein/qdomyos-zwift/blob/master/docs/10_Installation.md

** > The background service can't work because in order to "feel" the keyboard, the process MUST running on the current shell. One workaround could be:

  1. autologin on a bash shell on startup https://raspberrypi.stackexchange.com/questions/40415/how-to-enable-auto-login
  2. autostart qz on login https://unix.stackexchange.com/questions/56083/how-to-write-a-shell-script-that-gets-executed-on-login**

Thank you, I will try these steps.

Also, is there a way to change the expected keys for each function (increase speed) without recompiling? I would like to assign it to numbers or arrow keys so I can using a 10 key pad or even just an arrow pad attached to USB.

> not yet, which would be your perfect setup? I mean do you need also the key for a target speed (for example 3 for 3km/h and so on?)? and what about the inclination?

I have a 6 key keyboard.
https://a.co/d/aaPm8zI

By default it is organized
123
456

I think ideally I would be able to assign it as follows:
1 set to 5 km per hour speed (3.1 mi/hour) (walk)
2 Incline up one increment
3 set to 10 km per hour speed (6.22 mi per hour) (run)
4 speed down increment
5 incline down increment
6 speed up increment

I run in -miles so I suppose that makes that setting a bit difficult if it just counts clicks.

@cagnulein
Copy link
Owner

done @skoregon ;)

@stale
Copy link

stale bot commented Oct 11, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix This will not be worked on label Oct 11, 2022
@cagnulein
Copy link
Owner

@skoregon did you try this?

@stale stale bot removed the wontfix This will not be worked on label Oct 11, 2022
@stale
Copy link

stale bot commented Oct 26, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix This will not be worked on label Oct 26, 2022
@cagnulein
Copy link
Owner

@skoregon I'm closing this one. If you have issues, feel free to open it back

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request raspbeery treadmill wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

3 participants