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

Migrate toolchain and RPi kernel to current releases #3

Closed
6 tasks done
zehnm opened this issue Oct 15, 2019 · 5 comments · Fixed by #58
Closed
6 tasks done

Migrate toolchain and RPi kernel to current releases #3

zehnm opened this issue Oct 15, 2019 · 5 comments · Fixed by #58
Assignees
Labels
enhancement New feature or request

Comments

@zehnm
Copy link
Member

zehnm commented Oct 15, 2019

Migrate to the current kernel. The 4.19 kernel is planned to be an LTS kernel (long term support) afaik.
This ensures support of newer devices, e.g. using a Pi 4 for development which isn't supported with 4.14.

Main goals:

  • Use current Buildroot LTS release 2020.02.x
  • Update RPI kernel version to the defined 4.19.x version in the RPi Zero W Buildroot defconfig

Open issues:

  • wpa_supplicant control socket is no longer created. Probably because of systemd configuration or the following change: buildroot/buildroot@c27708e
    --> works with provided wpa_supplicant.conf in /boot. Must be an initial configuration issue.
  • Bluetooth serial console doesn't work anymore added in feat: Bluetooth console if marker file is present #56
    --> Bt pairing doesn't work anymore due to security changes, looks like we need a pairing agent now
  • Update build toochain: releases built with Qt 5.12.4 don't run on the new Qt 5.12.8!
    • Test if app cross-compiled with Qt 5.12.8 runs on the current remote-os with Qt 5.12.4
      --> doesn't work, even though Qt promises backward & forward binary compatibility in patch releases 👎
    • Update GitHub actions with Qt 5.12.8
@zehnm zehnm added the enhancement New feature or request label Oct 15, 2019
@zehnm zehnm added this to Backlog in YIO Remote software via automation Nov 26, 2019
@zehnm
Copy link
Member Author

zehnm commented Mar 7, 2020

Buildroot will be updated directly to 2020.02 once it's released and 2019.11 will be skipped.
Main reason for 2020.02 is the Qt update to version 5.12.7.

@zehnm
Copy link
Member Author

zehnm commented Mar 19, 2020

Buildroot 2020.02 is released! It is a long term support release which will be supported with security and other important fixes until March 2021.
I will start a feature branch soon and test it.

@zehnm zehnm self-assigned this Mar 19, 2020
@zehnm zehnm moved this from Backlog to Accepted in YIO Remote software Mar 19, 2020
@zehnm
Copy link
Member Author

zehnm commented May 19, 2020

Created new branch for Buildroot 2020.02: Buildroot-2020.02.2

Edit: I will switch to Buildroot-2020.02.6 and remove the old branch. For documentation purposes, these are the patches required for compiling Node.js with 2020.02.2, which seems to be fixed now in .6:

0001-feat-Update-Buildroot-to-2020.02.2.patch.txt
0002-fix-Handle-Buildroot-bug-12876.patch.txt

@zehnm zehnm moved this from Accepted to Implementation in YIO Remote software May 19, 2020
zehnm added a commit that referenced this issue Sep 13, 2020
@zehnm
Copy link
Member Author

zehnm commented Sep 14, 2020

Current state:

  • Remote app compiled with Qt 5.12.4 (as in all GitHub action releases for the current remote-os) doesn't run on Qt 5.12.8, which comes with Buildroot 2020.02.6

      WARN  default qrc:/main.qml:-1 File was compiled ahead of time with an incompatible version of Qt and the original file cannot be found. Please recompile
      /opt/yio/app/remote: relocation error: /opt/yio/app/remote: symbol 
      _ZN11QQmlPrivate13qmlunregisterENS_16RegistrationTypeEj version Qt_5 not defined in file libQt5Qml.so.5 with link time reference
    
    • Simply adding libQt5Qml.so.5.12.8 and replacing the libQt5Qml.so.5 symlink doesn't work: can't mix Qt version error
    • Remote app compiled on Qt 5.12.8 also doesn't run on Qt 5.12.4 👎
    • According to https://wiki.qt.io/Qt-Version-Compatibility this should not be an issue!
  • Bluetooth pairing doesn't work anymore. On Linux, client now asks for a pin. MacOS just fails.

    • Looks like the new Bluez5 minor version update changed stuff in regards to security or uses other default settings.
    • My understanding is, that you need to have an agent now, which is responsible for pairing.
      The BlueZ examples are written in Python. That is not really an option for remote-os...
      There are lots and lots of pairing and headless pin / agent issues in the RPi forums & Stackoverflow!
    • Custom agent implementation in Qt: https://github.com/mdipirro/bluez-agent-qt
    • TODO test with /bin/bt-agent -c NoInputNoOutput -p /etc/bluetooth/pin.conf.
      Example: https://github.com/josefmtd/blue-agent/blob/master/blue-agent.service
  • Initial WiFi setup doesn't work anymore: wpa_supplicant can't find wpa control socket.

    • However, a provided wpa_supplicant.conf file in /boot works.
    • There's an issue with the default wpa_supplicant configuration for the initial run, which prevents creating the wpa control socket.

@zehnm
Copy link
Member Author

zehnm commented Sep 17, 2020

Open Issues:

  • Initial WiFi setup doesn't work anymore: wpa_supplicant can't find wpa control socket.
    • fixed wpa_supplicant issues with a hard coded service file in /etc/systemd/system/wpa_supplicant.service
  • Bluetooth pairing doesn't work anymore. On Linux, client now asks for a pin. MacOS just fails.
    • Bluetooth console is now working with bt-agent and NoInputNoOutput option
  • Qt QML binary version incompatibility: 5.12.4 release doesn't run on 5.12.8
    • GitHub cross compile action need to build both versions
    • YIO update scripts need to check Qt version
    • Buildroot custom packages for YIO components should build YIO app & plugins from source, instead of downloading binary release from GitHub

zehnm added a commit that referenced this issue Sep 18, 2020
zehnm added a commit that referenced this issue Sep 19, 2020
zehnm added a commit to YIO-Remote/integration.squeezebox that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.roon that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.openweather that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.homey that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.dock that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.bangolufsen that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.openhab that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.spotify that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.home-assistant that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/remote-software that referenced this issue Sep 20, 2020
Initial build change to support multiple Qt versions in remote-os with versioned cross compile action.
Relates to YIO-Remote/remote-os#3.

Removed debug build since it's nowhere used. Developers requiring debug builds usually build and deploy their own version.
zehnm added a commit to YIO-Remote/integration.squeezebox that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.roon that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.openweather that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.homey that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.dock that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.bangolufsen that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.openhab that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.spotify that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/integration.home-assistant that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
zehnm added a commit to YIO-Remote/remote-software that referenced this issue Sep 22, 2020
Moved cross-compile configuration into matrix build configuration.
Targets can be added with additional matrix configuration entries.
The rest of the build is now generic.

This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
@zehnm zehnm moved this from Implementation to Code review in YIO Remote software Sep 23, 2020
zehnm added a commit that referenced this issue Sep 23, 2020
- wpa_supplicant changes for 2020.02.6:

  Force using wpa_supplicant daemon instead of dbus.
  The new wpa_supplicant version or Buildroot 2020.02.6 insist using
  dbus instead of the templated wpa_supplicant services! They are even
  deleted just before creating the filesystem image.
  Might be related to: buildroot/buildroot@c27708e

  Workaround: replace target service in /etc/systemd/system/wpa_supplicant.service
  to get the wpa_supplicant control socket back with a fixed wlan0 interface.

- Bluetooth console changes for 2020.02.6

  With the updated Bluez package the rfcomm serial console was no longer working due to pairing issues.
  The bt-agent is now required with NoInputNoOutput option to allow automatic pairing.

- Buildroot package cleanup:
  - Removed Bluetooth SAP plugin
  - Removed wpa_supplicant dbus support

- Clean up systemd services
  Use symlinks in overlay directory instead of creating them in the post build script.

- Setting QT env variables in profile.d

- Update scripts: Use Qt version in release download
  Since Qt versions are not always binary compatible, the installed Qt
  version is now specified in the GitHub release artifact.

- Using latest YIO component versions

This closes #3
zehnm added a commit that referenced this issue Sep 24, 2020
- wpa_supplicant changes for 2020.02.6:

  Force using wpa_supplicant daemon instead of dbus.
  The new wpa_supplicant version or Buildroot 2020.02.6 insist using
  dbus instead of the templated wpa_supplicant services! They are even
  deleted just before creating the filesystem image.
  Might be related to: buildroot/buildroot@c27708e

  Workaround: replace target service in /etc/systemd/system/wpa_supplicant.service
  to get the wpa_supplicant control socket back with a fixed wlan0 interface.

- Bluetooth console changes for 2020.02.6

  With the updated Bluez package the rfcomm serial console was no longer working due to pairing issues.
  The bt-agent is now required with NoInputNoOutput option to allow automatic pairing.

- Buildroot package cleanup:
  - Removed Bluetooth SAP plugin
  - Removed wpa_supplicant dbus support

- Clean up systemd services
  Use symlinks in overlay directory instead of creating them in the post build script.

- Setting QT env variables in profile.d

- Update scripts: Use Qt version in release download
  Since Qt versions are not always binary compatible, the installed Qt
  version is now specified in the GitHub release artifact.

- Using latest YIO component versions

This closes #3
@zehnm zehnm closed this as completed in #58 Sep 24, 2020
YIO Remote software automation moved this from Code review to Done Sep 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

1 participant