From 5b14eac6bfb70867c6b97f3dcec3841b856061ee Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Wed, 7 May 2014 11:36:04 +0300 Subject: doc: update version to 3.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I9e9cb1c74c5be2d213a8a8b7b77a66272cf6e0ec Reviewed-by: Pasi Petäjäjärvi --- src/doc/config/b2qt.qdocconf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/doc/config/b2qt.qdocconf b/src/doc/config/b2qt.qdocconf index 3f8f92a..045c8ea 100644 --- a/src/doc/config/b2qt.qdocconf +++ b/src/doc/config/b2qt.qdocconf @@ -6,7 +6,7 @@ sourceencoding = UTF-8 project = QtEnterpriseEmbedded description = Qt Enterprise Embedded Documentation -version = 2.1.0 +version = 3.0.0 sourcedirs = ../src \ ../../imports/wifi @@ -23,7 +23,7 @@ indexes = $QT_INSTALL_DOCS/qtquick/qtquick.index \ qhp.projects = B2Qt qhp.B2Qt.file = b2qt.qhp -qhp.B2Qt.namespace = com.digia.b2qt.210 +qhp.B2Qt.namespace = com.digia.b2qt.300 qhp.B2Qt.virtualFolder = b2qt qhp.B2Qt.indexTitle = Qt Enterprise Embedded Documentation qhp.B2Qt.indexRoot = -- cgit v1.2.3 From 50602d270ba701d524462f21256a23761146ca65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Thu, 8 May 2014 11:06:32 +0200 Subject: Add PowerManager service. On Android 4.4 we need to respond to wake-lock requests to prevent StageFrigh from committing suicide. Change-Id: Ie2c261c0c1b962a63ba8516fefaac71a0ec3a54e Reviewed-by: Eirik Aavitsland --- src/doppelganger/doppelganger.pro | 8 ++-- src/doppelganger/main.cpp | 2 + src/doppelganger/powermanager.cpp | 88 +++++++++++++++++++++++++++++++++++++++ src/doppelganger/powermanager.h | 62 +++++++++++++++++++++++++++ 4 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 src/doppelganger/powermanager.cpp create mode 100644 src/doppelganger/powermanager.h diff --git a/src/doppelganger/doppelganger.pro b/src/doppelganger/doppelganger.pro index fc337df..40c7650 100644 --- a/src/doppelganger/doppelganger.pro +++ b/src/doppelganger/doppelganger.pro @@ -3,16 +3,18 @@ QT -= core gui TARGET = doppelganger LIBS += -lutils -lbinder -lcutils \ - -L$${ANDROID_PRODUCT_OUT}/obj/STATIC_LIBRARIES/libscheduling_policy_intermediates -lscheduling_policy + -L$${ANDROID_PRODUCT_OUT}/obj/STATIC_LIBRARIES/libscheduling_policy_intermediates -lscheduling_policy -lpowermanager TEMPLATE = app SOURCES += main.cpp \ permissioncontroller.cpp \ - schedulingpolicyservice.cpp + schedulingpolicyservice.cpp \ + powermanager.cpp HEADERS += \ permissioncontroller.h \ - schedulingpolicyservice.h + schedulingpolicyservice.h \ + powermanager.h load(qt_tool) diff --git a/src/doppelganger/main.cpp b/src/doppelganger/main.cpp index e4a06c8..6d81991 100644 --- a/src/doppelganger/main.cpp +++ b/src/doppelganger/main.cpp @@ -20,6 +20,7 @@ #include "permissioncontroller.h" #include "schedulingpolicyservice.h" +#include "powermanager.h" using namespace android; @@ -28,5 +29,6 @@ int main(int, char *[]) sp proc(ProcessState::self()); SchedulingPolicyService::instantiate(); PermissionController::instantiate(); + PowerManager::instantiate(); IPCThreadState::self()->joinThreadPool(); } diff --git a/src/doppelganger/powermanager.cpp b/src/doppelganger/powermanager.cpp new file mode 100644 index 0000000..47ab02f --- /dev/null +++ b/src/doppelganger/powermanager.cpp @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +#include "powermanager.h" + +#include + +using namespace android; + +enum { + ACQUIRE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION, + ACQUIRE_WAKE_LOCK_UID = IBinder::FIRST_CALL_TRANSACTION + 1, + RELEASE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION + 2, + UPDATE_WAKE_LOCK_UIDS = IBinder::FIRST_CALL_TRANSACTION + 3, +}; + +void PowerManager::instantiate() +{ + defaultServiceManager()->addService(String16("power"), new PowerManager()); +} + +status_t PowerManager::onTransact(uint32_t code, + const Parcel &, + Parcel *, + uint32_t) +{ + switch (code) { + case ACQUIRE_WAKE_LOCK: + case ACQUIRE_WAKE_LOCK_UID: + case RELEASE_WAKE_LOCK: + case UPDATE_WAKE_LOCK_UIDS: + return NO_ERROR; + default: + break; + } +} + +#if Q_ANDROID_VERSION_MAJOR > 4 || (Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR >= 4) +status_t PowerManager::acquireWakeLock(int, + const sp &, + const String16 &, + const String16 &) +{ + return OK; +} + +status_t PowerManager::acquireWakeLockWithUid(int, + const sp &, + const String16 &, + const String16 &, + int) +{ + return OK; +} + +status_t PowerManager::updateWakeLockUids(const sp &, + int, + const int *) +{ + return OK; +} +#else // < 4.4 +status_t PowerManager::acquireWakeLock(int, const sp &, const String16 &) +{ + return OK; +} +#endif + +status_t PowerManager::releaseWakeLock(const sp &, int) +{ + return OK; +} diff --git a/src/doppelganger/powermanager.h b/src/doppelganger/powermanager.h new file mode 100644 index 0000000..f934b31 --- /dev/null +++ b/src/doppelganger/powermanager.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +#ifndef POWERMANAGER_H +#define POWERMANAGER_H + +#include + +namespace android { + +typedef BnInterface BnPowerManagerService; + +} // namespace android + +class PowerManager : public android::BnPowerManagerService +{ +public: + static void instantiate(); + android::status_t onTransact(uint32_t code, + const android::Parcel &data, + android::Parcel *reply, + uint32_t flags); + +#if Q_ANDROID_VERSION_MAJOR > 4 || (Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR >= 4) + virtual android::status_t acquireWakeLock(int flags, + const android::sp& lock, + const android::String16& tag, + const android::String16& packageName); + virtual android::status_t acquireWakeLockWithUid(int flags, + const android::sp& lock, + const android::String16& tag, + const android::String16& packageName, + int uid); + virtual android::status_t updateWakeLockUids(const android::sp& lock, + int len, + const int *uids); +#else // < 4.4 + virtual android::status_t acquireWakeLock(int flags, + const android::sp& lock, + const android::String16& tag); +#endif + + virtual android::status_t releaseWakeLock(const android::sp& lock, int flags); +}; + +#endif // POWERMANAGER_H -- cgit v1.2.3 From e2eb3c6769b9e10e626d50d24460c40ef9faaeef Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 9 May 2014 13:05:25 +0200 Subject: Doc: Use precise naming for Boundary Devices i.MX6 Change-Id: Ic1a9dfaa2dc302b7e2b8b54a00515dfc050edca0 Reviewed-by: Samuli Piippo Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 394eb44..2973d91 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -44,7 +44,7 @@ \li \l{Preparing Hardware} \list \li \l{Preparing Nexus 7}{Nexus 7 (2012) (embedded Android)} - \li \l{Preparing Sabre Lite i.MX 6}{Sabre Lite i.MX 6 (embedded Android and Linux)} + \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} \li \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} \li \l{Preparing Raspberry Pi}{Raspberry Pi Model B (embedded Linux)} @@ -306,7 +306,7 @@ \list \li \l{Nexus 7 (2012) (embedded Android)} - \li \l{Sabre Lite i.MX 6 (embedded Android and Linux)} + \li \l{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{BeagleBone Black (embedded Android and Linux)} \li \l{BeagleBoard-xM (embedded Linux)} \li \l{Raspberry Pi Model B (embedded Linux)} @@ -488,19 +488,19 @@ */ /*! - \target Sabre Lite i.MX 6 (embedded Android and Linux) + \target BD-SL-i.MX6 (embedded Android and Linux) \page qtee-preparing-hardware-imx6.html - \title Preparing Sabre Lite i.MX 6 + \title Preparing BD-SL-i.MX6 \previouspage qtee-installation-guide.html Take the following steps to prepare a - \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Sabre - Lite i.MX 6} for \B2Q. + \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} + {Boundary Devices BD-SL-i.MX6} (SABRE Lite) for \B2Q. \note It is important that you repeat the steps in this section after you update \SDK. - The images containing the \B2Q stack for Sabre Lite i.MX 6 are included + The images containing the \B2Q stack for BD-SL-i.MX6 are included in \SDK, ready to be copied to an SD card. \section1 Preparing an SD Card @@ -922,7 +922,7 @@ devices, such as a keyboard and mouse, have to be connected at boot time. - On some devices, for example the i.MX6 Sabre Lite, the touchscreen device is + On some devices, for example the BD-SL-i.MX6, the touchscreen device is specified explicitly in \c QT_QPA_GENERIC_PLUGINS. This is necessary because the automatic device discovery would fail to find the touchscreen. @@ -1381,7 +1381,7 @@ Remember to repeat the process of updating also your device with the latest version of \B2Q. See \l{Installing Boot to Qt on Target Devices}. - \section2 Booting Sabre Lite i.MX 6 stops with \e {6x_bootscript not found} error + \section2 Booting BD-SL-i.MX6 stops with \e {6x_bootscript not found} error Check the U-Boot version number. It should start with either \c{2012} or \c{2013}. If it is \c{2009.xx}, an upgrade of the bootloader is required. For more -- cgit v1.2.3 From ac8170f843f40968c96bd7b21dc4857274e3eef6 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 9 May 2014 14:22:49 +0200 Subject: Doc: QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS replaces QT_QPA_GENERIC_PLUGINS Change-Id: I38bccdf395f5ccc280fba37f8b6abbaea64391d7 Reviewed-by: Eirik Aavitsland Reviewed-by: Samuli Piippo --- src/doc/src/b2qt.qdoc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 2973d91..a254d0e 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -911,7 +911,7 @@ In the \c{appcontroller.conf} file, the input devices are specified by the lines similar to these: \badcode - env=QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event0 + env=QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0 \endcode Usually, you do not need to change this setting. USB input devices, such as @@ -923,8 +923,9 @@ time. On some devices, for example the BD-SL-i.MX6, the touchscreen device is - specified explicitly in \c QT_QPA_GENERIC_PLUGINS. This is necessary because - the automatic device discovery would fail to find the touchscreen. + specified explicitly with \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. This is + necessary because the automatic device discovery would fail to find the + touchscreen. \section1 Booting to a Custom Application -- cgit v1.2.3 From 37768773b6d384c5c4468c48b41290416fafa596 Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Thu, 8 May 2014 15:07:59 +0200 Subject: Doc: Add table with all possible MACHINE values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8e5609065e41b0690ab29cedbcbba7903c7b3df3 Reviewed-by: Samuli Piippo Reviewed-by: Topi Reiniö --- src/doc/src/b2qt.qdoc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index a254d0e..4988392 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1060,6 +1060,29 @@ source poky/oe-init-build-env build-raspberrypi \endcode + The following table lists the \c MACHINE values for our reference platforms: + + \table + \header + \li Board + \li MACHINE value + \row + \li Raspberry Pi + \li raspberrypi + \row + \li BeagleBone Black + \li beaglebone + \row + \li Boundary Devices BD-SL-i.MX6 + \li nitrogen6x + \row + \li Freescale SABRE SD i.MX6Quad + \li imx6qsabresd + \row + \li Emulator + \li emulator + \endtable + Yocto recipes for \B2QL have two main targets to build: The target image, and the external toolchain that is used for building the Qt framework and applications. -- cgit v1.2.3 From 383deca7433d3cad4719028a6fa4d5bbc4a2295f Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Wed, 7 May 2014 15:31:03 +0200 Subject: Doc: Update version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5160cccc267d81b41810080f0b912f8d2dd13d7c Reviewed-by: Topi Reiniö Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 4988392..b2e2170 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -365,9 +365,9 @@ \badcode cd - sudo ./Tools/b2qt/fastboot flash boot Boot2Qt-2.x/nexus7-eAndroid/images/boot.img - sudo ./Tools/b2qt/fastboot flash system Boot2Qt-2.x/nexus7-eAndroid/images/system.img - sudo ./Tools/b2qt/fastboot flash userdata Boot2Qt-2.x/nexus7-eAndroid/images/data.img + sudo ./Tools/b2qt/fastboot flash boot Boot2Qt-3.x/nexus7-eAndroid/images/boot.img + sudo ./Tools/b2qt/fastboot flash system Boot2Qt-3.x/nexus7-eAndroid/images/system.img + sudo ./Tools/b2qt/fastboot flash userdata Boot2Qt-3.x/nexus7-eAndroid/images/data.img \endcode \li Once the flashing is completed successfully, reboot the device: @@ -389,7 +389,7 @@ {https://developers.google.com/android/nexus/drivers#grouperjdq39} \badcode cd - ./Boot2Qt-2.x/nexus7-eAndroid/images/download.sh + ./Boot2Qt-3.x/nexus7-eAndroid/images/download.sh \endcode \note Only the version "Android 4.2.2 (JDQ39 to JDQ39E)" works with the @@ -402,7 +402,7 @@ Also check that the device is \e{not} in fastboot mode. \li Run the driver extractors: \badcode - cd Boot2Qt-2.x/nexus7-eAndroid/images/drivers + cd Boot2Qt-3.x/nexus7-eAndroid/images/drivers ./extract-nvidia-grouper.sh ./extract-asus-grouper.sh ./extract-invensense-grouper.sh @@ -416,7 +416,7 @@ \endcode \li Deploy the drivers to your device: \badcode - ./Boot2Qt-2.x/nexus7-eAndroid/images/deploy.sh + ./Boot2Qt-3.x/nexus7-eAndroid/images/deploy.sh \endcode \endlist @@ -469,7 +469,7 @@ \badcode cd - sudo Boot2Qt-2.x/beagleboard-eLinux/images/deploy.sh /dev/ + sudo Boot2Qt-3.x/beagleboard-eLinux/images/deploy.sh /dev/ \endcode After the image has been deployed, power on the device and check that @@ -556,12 +556,12 @@ \li \b{\B2QA} \badcode cd - ./Boot2Qt-2.x/iMX6-eAndroid/images/deploy.sh /dev/ + ./Boot2Qt-3.x/iMX6-eAndroid/images/deploy.sh /dev/ \endcode \li \b{\B2QL} \badcode cd - sudo ./Boot2Qt-2.x/iMX6-eLinux/images/deploy.sh /dev/ + sudo ./Boot2Qt-3.x/iMX6-eLinux/images/deploy.sh /dev/ \endcode \endlist @@ -618,7 +618,7 @@ \badcode cd - sudo Boot2Qt-2.x/raspberrypi-eLinux/images/deploy.sh /dev/ + sudo Boot2Qt-3.x/raspberrypi-eLinux/images/deploy.sh /dev/ \endcode After the image has been deployed, insert the SD card, power on the device and check that @@ -692,12 +692,12 @@ \li \b{\B2QA} \badcode cd - ./Boot2Qt-2.x/beaglebone-eAndroid/images/deploy.sh /dev/ + ./Boot2Qt-3.x/beaglebone-eAndroid/images/deploy.sh /dev/ \endcode \li \b{\B2QL} \badcode cd - sudo ./Boot2Qt-2.x/beaglebone-eLinux/images/deploy.sh /dev/ + sudo ./Boot2Qt-3.x/beaglebone-eLinux/images/deploy.sh /dev/ \endcode \endlist @@ -1045,7 +1045,7 @@ \badcode cd - /Boot2Qt-2.x/sources/b2qt-yocto-meta/b2qt-init-build-env . + /Boot2Qt-3.x/sources/b2qt-yocto-meta/b2qt-init-build-env . \endcode \section1 Building the Image and Toolchain @@ -1106,7 +1106,7 @@ script. Using Raspberry Pi as an example: \badcode - /Boot2Qt-2.x/sources/b2qt-build-scripts/embedded-common/init_build_env.sh /Boot2Qt-2.x/sources/b2qt-build-scripts/embedded-linux/config.raspberrypi + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/init_build_env.sh /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/config.raspberrypi \endcode \note You can use the same build directory for Qt and the Yocto image. @@ -1115,9 +1115,9 @@ You can use following scripts to build different parts of the \B2Q stack. \badcode - /Boot2Qt-2.x/sources/b2qt-build-scripts/embedded-linux/build_qt.sh - /Boot2Qt-2.x/sources/b2qt-build-scripts/embedded-linux/build_extras.sh - /Boot2Qt-2.x/sources/b2qt-build-scripts/embedded-linux/build_image.sh + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_qt.sh + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_extras.sh + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_image.sh \endcode After \e {embedded-linux/build_image.sh} has finished, you can flash the device with @@ -1129,7 +1129,7 @@ developing for your device. The following script does this for you. \badcode - /Boot2Qt-2.x/sources/b2qt-build-scripts/embedded-common/setup_qtcreator.sh + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/setup_qtcreator.sh \endcode This will set up a new kit in Qt Creator, using the toolchain and Qt from -- cgit v1.2.3 From 3022f83d1f7726bddbec3ca469baa3a6ecdde8ae Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 15 May 2014 11:49:47 +0200 Subject: Add a note about webengine and emulator Change-Id: Id436455971a6278a57f2cf0c59bae0d74763d5ad Reviewed-by: Andras Becsi Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index b2e2170..7c5863f 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1558,6 +1558,10 @@ audio may not be properly routed to the correct output. As a workaround, connect the headphone or speakers before turning on the device. + \section2 Qt WebEngine libraries cannot be found when targeting the emulator + + Qt WebEngine is not currently available for the emulators, neither eLinux + nor eAndroid. This is planned to be addressed in a later release. */ /*! -- cgit v1.2.3 From 31f6f73a691ff49fc3aeba062f8561e6c981baff Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Fri, 28 Mar 2014 13:32:05 +0100 Subject: Port QtWifi to eLinux Current limitations: - Wifi adapter must be connected before staring the device (and ethernet cable should not be connected at the same time). "allow-hotplug wlan0" in /etc/network/interfaces doesn't seem to help for detecting wifi adapter on-the-fly. Change-Id: I8be407e9e042fc86136efd3e220680fb2ce64bd6 Reviewed-by: Eirik Aavitsland --- src/imports/wifi/pluginmain.cpp | 24 +-- src/imports/wifi/qwifi_elinux.cpp | 264 +++++++++++++++++++++++++++++ src/imports/wifi/qwifi_elinux.h | 34 ++++ src/imports/wifi/qwifimanager.cpp | 75 +++++++- src/imports/wifi/qwifimanager.h | 30 +++- src/imports/wifi/qwifinetworklistmodel.cpp | 13 +- src/imports/wifi/wifi.pro | 23 ++- 7 files changed, 433 insertions(+), 30 deletions(-) create mode 100644 src/imports/wifi/qwifi_elinux.cpp create mode 100644 src/imports/wifi/qwifi_elinux.h diff --git a/src/imports/wifi/pluginmain.cpp b/src/imports/wifi/pluginmain.cpp index fdf07e9..6dc6cc9 100644 --- a/src/imports/wifi/pluginmain.cpp +++ b/src/imports/wifi/pluginmain.cpp @@ -19,12 +19,14 @@ #include "qwifimanager.h" #include +#include #include #include #include +#ifdef Q_OS_ANDROID #include - +#endif /*! \qmltype Interface \inqmlmodule Qt.labs.wifi @@ -65,18 +67,16 @@ public: Q_INVOKABLE bool wifiSupported() const { bool supported = false; - if (wifi_load_driver() == 0 && wifi_start_supplicant(0) == 0) { - char interface[PROPERTY_VALUE_MAX]; - property_get("wifi.interface", interface, NULL); - // standard linux kernel path - QByteArray path; - path.append("/sys/class/net/").append(interface); - supported = QDir().exists(path.constData()); - if (!supported) - qWarning() << "QWifiGlobal: could not find wifi interface in " << path; - } else { +#ifdef Q_OS_ANDROID + if (wifi_load_driver() == 0 && wifi_start_supplicant(0) == 0) + supported = true; + else qWarning() << "QWifiGlobal: wifi driver is not available"; - } +#else + supported = QDir().exists(QStringLiteral("/sys/class/net/wlan0")); + if (!supported) + qWarning() << "QWifiGlobal: could not find wifi interface in /sys/class/net/"; +#endif return supported; } }; diff --git a/src/imports/wifi/qwifi_elinux.cpp b/src/imports/wifi/qwifi_elinux.cpp new file mode 100644 index 0000000..551d887 --- /dev/null +++ b/src/imports/wifi/qwifi_elinux.cpp @@ -0,0 +1,264 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +#include "qwifi_elinux.h" + +#include + +#include "wpa-supplicant/wpa_ctrl.h" + +#include +#include +#include + +static const char SUPP_CONFIG_FILE[] = "/etc/wpa_supplicant.conf"; +static const char IFACE_DIR[] = "/var/run/wpa_supplicant/"; +static const char WIFI[] = "wlan0"; + +static struct wpa_ctrl *ctrl_conn; +static struct wpa_ctrl *monitor_conn; +// socket pair used to exit from a blocking read +static int exit_sockets[2]; + +static const char IFNAME[] = "IFNAME="; +#define IFNAMELEN (sizeof(IFNAME) - 1) +static const char WPA_EVENT_IGNORE[] = "CTRL-EVENT-IGNORE "; + +int wifi_connect_on_socket_path(const char *path); +int wifi_ctrl_recv(char *reply, size_t *reply_len); +int wifi_wait_on_socket(char *buf, size_t buflen); +int wifi_send_command(const char *cmd, char *reply, size_t *reply_len); +void wifi_close_sockets(); + +int q_wifi_start_supplicant() +{ + // NOTE: supplicant started when bringing up the wifi interface in + // QWifiManager::connectToBackend() by: + // QProcess::execute(QStringLiteral("ifup") + + /* Clear out any stale socket files that might be left over. */ + //wpa_ctrl_cleanup(); + /* Reset sockets used for exiting from hung state */ + exit_sockets[0] = exit_sockets[1] = -1; + return 0; +} + +int q_wifi_stop_supplicant() +{ + // NOTE: supplicant stopped when bringing down the wifi + // interface in QWifiManager::disconnectFromBackend() by: + // QProcess::execute(QStringLiteral("ifdown") + return 0; +} + +int q_wifi_connect_to_supplicant(const char *ifname) +{ + Q_UNUSED(ifname); + static char path[4096]; + snprintf(path, sizeof(path), "%s/%s", IFACE_DIR, WIFI); + return wifi_connect_on_socket_path(path); +} + +int wifi_connect_on_socket_path(const char *path) +{ + // establishes the control and monitor socket connections on the interface + ctrl_conn = wpa_ctrl_open(path); + if (ctrl_conn == NULL) { + qWarning("Unable to open connection to supplicant on \"%s\": %s", + path, strerror(errno)); + return -1; + } + monitor_conn = wpa_ctrl_open(path); + if (monitor_conn == NULL) { + wpa_ctrl_close(ctrl_conn); + ctrl_conn = NULL; + return -1; + } + if (wpa_ctrl_attach(monitor_conn) != 0) { + wpa_ctrl_close(monitor_conn); + wpa_ctrl_close(ctrl_conn); + ctrl_conn = monitor_conn = NULL; + return -1; + } + + if (socketpair(AF_UNIX, SOCK_STREAM, 0, exit_sockets) == -1) { + wpa_ctrl_close(monitor_conn); + wpa_ctrl_close(ctrl_conn); + ctrl_conn = monitor_conn = NULL; + return -1; + } + + return 0; +} + +int q_wifi_wait_for_event(const char *ifname, char *buf, size_t buflen) +{ + Q_UNUSED(ifname); + return wifi_wait_on_socket(buf, buflen); +} + +int wifi_wait_on_socket(char *buf, size_t buflen) +{ + size_t nread = buflen - 1; + int result; + char *match, *match2; + + if (monitor_conn == NULL) { + return snprintf(buf, buflen, WPA_EVENT_TERMINATING " - connection closed"); + } + + result = wifi_ctrl_recv(buf, &nread); + + /* Terminate reception on exit socket */ + if (result == -2) { + return snprintf(buf, buflen, WPA_EVENT_TERMINATING " - connection closed"); + } + + if (result < 0) { + qWarning("wifi_ctrl_recv failed: %s\n", strerror(errno)); + return snprintf(buf, buflen, WPA_EVENT_TERMINATING " - recv error"); + } + buf[nread] = '\0'; + /* Check for EOF on the socket */ + if (result == 0 && nread == 0) { + /* Fabricate an event to pass up */ + qWarning("Received EOF on supplicant socket\n"); + return snprintf(buf, buflen, WPA_EVENT_TERMINATING " - signal 0 received"); + } + /* + * Events strings are in the format + * + * IFNAME=iface CTRL-EVENT-XXX + * or + * CTRL-EVENT-XXX + * + * where N is the message level in numerical form (0=VERBOSE, 1=DEBUG, + * etc.) and XXX is the event name. The level information is not useful + * to us, so strip it off. + */ + + if (strncmp(buf, IFNAME, IFNAMELEN) == 0) { + match = strchr(buf, ' '); + if (match != NULL) { + if (match[1] == '<') { + match2 = strchr(match + 2, '>'); + if (match2 != NULL) { + nread -= (match2 - match); + memmove(match + 1, match2 + 1, nread - (match - buf) + 1); + } + } + } else { + return snprintf(buf, buflen, "%s", WPA_EVENT_IGNORE); + } + } else if (buf[0] == '<') { + match = strchr(buf, '>'); + if (match != NULL) { + nread -= (match + 1 - buf); + memmove(buf, match + 1, nread + 1); + //qWarning("supplicant generated event without interface - %s\n", buf); + } + } else { + /* let the event go as is! */ + qWarning("supplicant generated event without interface and without message level - %s\n", buf); + } + + return nread; +} + +int wifi_ctrl_recv(char *reply, size_t *reply_len) +{ + int res = 0; + int ctrlfd = wpa_ctrl_get_fd(monitor_conn); + struct pollfd rfds[2]; + + memset(rfds, 0, 2 * sizeof(struct pollfd)); + rfds[0].fd = ctrlfd; + rfds[0].events |= POLLIN; + rfds[1].fd = exit_sockets[1]; + rfds[1].events |= POLLIN; + res = TEMP_FAILURE_RETRY(poll(rfds, 2, -1)); + if (res < 0) { + qWarning("Error poll = %d", res); + return res; + } + if (rfds[0].revents & POLLIN) { + return wpa_ctrl_recv(monitor_conn, reply, reply_len); + } + + /* it is not rfds[0], then it must be rfts[1] (i.e. the exit socket) + * or we timed out. In either case, this call has failed .. + */ + return -2; +} + +int wifi_send_command(const char *cmd, char *reply, size_t *reply_len) +{ + int ret; + if (ctrl_conn == NULL) { + qWarning("Not connected to wpa_supplicant - \"%s\" command dropped.\n", cmd); + return -1; + } + ret = wpa_ctrl_request(ctrl_conn, cmd, strlen(cmd), reply, reply_len, NULL); + if (ret == -2) { + qWarning("'%s' command timed out.\n", cmd); + /* unblocks the monitor receive socket for termination */ + TEMP_FAILURE_RETRY(write(exit_sockets[0], "T", 1)); + return -2; + } else if (ret < 0 || strncmp(reply, "FAIL", 4) == 0) { + return -1; + } + if (strncmp(cmd, "PING", 4) == 0) { + reply[*reply_len] = '\0'; + } + return 0; +} + +int q_wifi_command(const char *ifname, const char *command, char *reply, size_t *reply_len) +{ + Q_UNUSED(ifname); + return wifi_send_command(command, reply, reply_len); +} + +void q_wifi_close_supplicant_connection(const char *ifname) +{ + Q_UNUSED(ifname) + wifi_close_sockets(); +} + +void wifi_close_sockets() +{ + if (ctrl_conn != NULL) { + wpa_ctrl_close(ctrl_conn); + ctrl_conn = NULL; + } + + if (monitor_conn != NULL) { + wpa_ctrl_close(monitor_conn); + monitor_conn = NULL; + } + + if (exit_sockets[0] >= 0) { + close(exit_sockets[0]); + exit_sockets[0] = -1; + } + + if (exit_sockets[1] >= 0) { + close(exit_sockets[1]); + exit_sockets[1] = -1; + } +} diff --git a/src/imports/wifi/qwifi_elinux.h b/src/imports/wifi/qwifi_elinux.h new file mode 100644 index 0000000..92a04f8 --- /dev/null +++ b/src/imports/wifi/qwifi_elinux.h @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +#ifndef LOCAL_WIFI_H +#define LOCAL_WIFI_H + +#include + +// This API mirrors Android's Wi-Fi libraries interface [1] and implementation, excluding Android OS specific parts. +// [1] http://androidxref.com/4.4.2_r2/xref/hardware/libhardware_legacy/include/hardware_legacy/wifi.h + +int q_wifi_command(const char *ifname, const char *command, char *reply, size_t *reply_len); +int q_wifi_wait_for_event(const char *ifname, char *buf, size_t buflen); +int q_wifi_connect_to_supplicant(const char *ifname); +void q_wifi_close_supplicant_connection(const char *ifname); +int q_wifi_start_supplicant(); +int q_wifi_stop_supplicant(); + +#endif // LOCAL_WIFI_H diff --git a/src/imports/wifi/qwifimanager.cpp b/src/imports/wifi/qwifimanager.cpp index 7615f70..6e5e245 100644 --- a/src/imports/wifi/qwifimanager.cpp +++ b/src/imports/wifi/qwifimanager.cpp @@ -19,10 +19,13 @@ #include "qwifimanager.h" #include - +#ifdef Q_OS_ANDROID #include #include #include +#else +#include +#endif static const char SUPPLICANT_SVC[] = "init.svc.wpa_supplicant"; static const char WIFI_INTERFACE[] = "wifi.interface"; @@ -34,6 +37,7 @@ const QEvent::Type WIFI_SCAN_RESULTS = (QEvent::Type) (QEvent::User + 2001); const QEvent::Type WIFI_CONNECTED = (QEvent::Type) (QEvent::User + 2002); const QEvent::Type WIFI_HANDSHAKE_FAILED = (QEvent::Type) (QEvent::User + 2003); +#ifdef Q_OS_ANDROID /* * Work around API differences between Android versions */ @@ -125,6 +129,7 @@ static int wait_for_property(const char *name, const char *desired_value, int ma } return -1; /* failure */ } +#endif class QWifiManagerEvent : public QEvent { @@ -410,17 +415,25 @@ QWifiManager::QWifiManager() , m_eventThread(0) , m_scanTimer(0) , m_scanning(false) +#ifdef Q_OS_ANDROID , m_daemonClientSocket(0) +#endif , m_exitingEventThread(false) , m_startingUp(true) , m_network(0) { +#ifdef Q_OS_ANDROID char interface[PROPERTY_VALUE_MAX]; property_get(WIFI_INTERFACE, interface, NULL); m_interface = interface; - if (QT_WIFI_DEBUG) qDebug("QWifiManager: using wifi interface: %s", m_interface.constData()); +#else + m_interface = "wlan0"; // use envvar for the interface name? + m_dhcpRunner = new ProcessRunner(m_interface); + QObject::connect(m_dhcpRunner, &ProcessRunner::processFinished, this, &QWifiManager::handleDhcpFinished); +#endif + qDebug("QWifiManager: using wifi interface: %s", m_interface.constData()); m_eventThread = new QWifiManagerEventThread(this, m_interface); - +#ifdef Q_OS_ANDROID m_daemonClientSocket = new QLocalSocket; int qconnFd = socket_local_client("qconnectivity", ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM); if (qconnFd != -1) { @@ -444,15 +457,22 @@ QWifiManager::QWifiManager() disconnectFromBackend(); } } +#else + m_backendReady = false; + emit backendReadyChanged(); +#endif } QWifiManager::~QWifiManager() { exitEventThread(); delete m_eventThread; +#ifdef Q_OS_ANDROID delete m_daemonClientSocket; +#endif } +#ifdef Q_OS_ANDROID void QWifiManager::handleDhcpReply() { if (m_daemonClientSocket->canReadLine()) { @@ -487,6 +507,14 @@ void QWifiManager::connectedToDaemon() m_daemonClientSocket->write(m_request.constData(), m_request.length()); m_daemonClientSocket->flush(); } +#endif + +void QWifiManager::handleDhcpFinished() +{ + // ### TODO - could be that dhcp request fails, how to determine? + updateNetworkState(Connected); + call("SAVE_CONFIG"); +} void QWifiManager::start() { @@ -506,22 +534,31 @@ void QWifiManager::stop() void QWifiManager::connectToBackend() { + // ### TODO: maybe it makes sense to move this functions in non-gui thread +#ifdef Q_OS_ANDROID if (!(is_wifi_driver_loaded() || wifi_load_driver() == 0)) { qWarning("QWifiManager: failed to load a driver"); return; } +#else + QProcess::execute(QStringLiteral("ifup"), QStringList() << m_interface.constData()); +#endif if (q_wifi_start_supplicant() != 0) { qWarning("QWifiManager: failed to start a supplicant"); return; } +#ifdef Q_OS_ANDROID if (wait_for_property(SUPPLICANT_SVC, "running", 5) < 0) { qWarning("QWifiManager: Timed out waiting for supplicant to start"); return; } +#endif if (q_wifi_connect_to_supplicant(m_interface.constData()) == 0) { m_backendReady = true; emit backendReadyChanged(); +#ifdef Q_OS_ANDROID property_set(QT_WIFI_BACKEND, "running"); +#endif } else { qWarning("QWifiManager: failed to connect to a supplicant"); return; @@ -538,7 +575,12 @@ void QWifiManager::disconnectFromBackend() if (q_wifi_stop_supplicant() < 0) qWarning("QWifiManager: failed to stop supplicant"); q_wifi_close_supplicant_connection(m_interface.constData()); + setScanning(false); +#ifdef Q_OS_ANDROID property_set(QT_WIFI_BACKEND, "stopped"); +#else + QProcess::execute(QStringLiteral("ifdown"), QStringList() << m_interface.constData()); +#endif m_backendReady = false; emit backendReadyChanged(); } @@ -633,7 +675,6 @@ void QWifiManager::connect(QWifiNetwork *network, const QString &passphrase) return; } updateNetworkState(Authenticating); - call("DISABLE_NETWORK all"); if (!m_connectedSSID.isEmpty()) { m_connectedSSID.clear(); @@ -695,13 +736,35 @@ void QWifiManager::connect(QWifiNetwork *network, const QString &passphrase) void QWifiManager::disconnect() { call("DISCONNECT"); +#ifdef Q_OS_ANDROID QByteArray req = m_interface; sendDhcpRequest(req.append(" disconnect")); +#endif m_connectedSSID.clear(); updateNetworkState(Disconnected); emit connectedSSIDChanged(m_connectedSSID); } +void ProcessRunner::run() +{ + // kill existing udhcpc instance + QString filePath = QString("/var/run/udhcpc.").append(m_ifc).append(".pid"); + QFile pidFile(filePath); + if (pidFile.open(QIODevice::ReadOnly)) { + QByteArray pid = pidFile.readAll(); + pidFile.close(); + QProcess::execute(QStringLiteral("kill"), QStringList() << pid.trimmed().constData()); + } else { + qWarning() << "QWifiManager - Failed to read" << filePath; + } + QStringList args; + args << QStringLiteral("-R") << QStringLiteral("-n") << QStringLiteral("-p") + << filePath << QStringLiteral("-i") << m_ifc; + // start DHCP client + QProcess::execute(QStringLiteral("udhcpc"), args); + emit processFinished(); +} + void QWifiManager::handleConnected() { QList lists = call("LIST_NETWORKS").split('\n'); @@ -732,6 +795,10 @@ void QWifiManager::handleConnected() } updateNetworkState(ObtainingIPAddress); +#ifdef Q_OS_ANDROID QByteArray req = m_interface; sendDhcpRequest(req.append(" connect")); +#else + m_dhcpRunner->start(); +#endif } diff --git a/src/imports/wifi/qwifimanager.h b/src/imports/wifi/qwifimanager.h index 162190e..3af123f 100644 --- a/src/imports/wifi/qwifimanager.h +++ b/src/imports/wifi/qwifimanager.h @@ -20,15 +20,32 @@ #define QWIFIMANAGER_H #include +#include #include -#include +#ifdef Q_OS_ANDROID +#include #include +#endif #include "qwifinetworklistmodel.h" class QWifiManagerEventThread; +class ProcessRunner : public QThread +{ + Q_OBJECT +public: + ProcessRunner(const QByteArray &ifc) : m_ifc(ifc) {} + void run(); + +signals: + void processFinished(); + +private: + QByteArray m_ifc; +}; + class QWifiManager : public QObject { Q_OBJECT @@ -74,21 +91,26 @@ signals: protected: bool event(QEvent *); - void sendDhcpRequest(const QByteArray &request); void handleConnected(); void connectToBackend(); void disconnectFromBackend(); void exitEventThread(); + QByteArray call(const char *command) const; bool checkedCall(const char *command) const; void updateNetworkState(NetworkState state); protected slots: +#if defined(FORCE_MOC) + void sendDhcpRequest(const QByteArray &request); void connectedToDaemon(); void handleDhcpReply(); +#endif + void handleDhcpFinished(); private: friend class QWifiManagerEventThread; + friend class ProcessRunner; QString m_connectedSSID; QWifiNetworkListModel m_networkListModel; @@ -100,7 +122,11 @@ private: QByteArray m_interface; NetworkState m_state; +#ifdef Q_OS_ANDROID QLocalSocket *m_daemonClientSocket; +#else + ProcessRunner *m_dhcpRunner; +#endif QByteArray m_request; bool m_exitingEventThread; bool m_startingUp; diff --git a/src/imports/wifi/qwifinetworklistmodel.cpp b/src/imports/wifi/qwifinetworklistmodel.cpp index 4fbf25f..f95af36 100644 --- a/src/imports/wifi/qwifinetworklistmodel.cpp +++ b/src/imports/wifi/qwifinetworklistmodel.cpp @@ -88,14 +88,15 @@ void QWifiNetworkListModel::parseScanResults(const QByteArray &results) QWifiNetwork *knownNetwork = networkForSSID(info.at(4), &pos); if (!knownNetwork) knownNetwork = outOfRangeListContains(info.at(4)); - + // signal strength is in dBm. Deprecated, but still widely used "wext" + // wifi driver reports positive values for signal strength, we workaround that. + int signalStrength = qAbs(info.at(2).trimmed().toInt()) * -1; if (!knownNetwork) { QWifiNetwork *network = new QWifiNetwork(); network->setOutOfRange(false); network->setBssid(info.at(0)); network->setFlags(info.at(3)); - // signal strength is in dBm - network->setSignalStrength(info.at(2).toInt()); + network->setSignalStrength(signalStrength); network->setSsid(info.at(4)); beginInsertRows(QModelIndex(), m_networks.size(), m_networks.size()); m_networks << network; @@ -112,15 +113,15 @@ void QWifiNetworkListModel::parseScanResults(const QByteArray &results) // ssids are the same, compare bssids.. if (knownNetwork->bssid() == info.at(0)) { // same access point, simply update the signal strength - knownNetwork->setSignalStrength(info.at(2).toInt()); + knownNetwork->setSignalStrength(signalStrength); knownNetwork->setOutOfRange(false); dataChanged(createIndex(pos, 0), createIndex(pos, 0)); - } else if (knownNetwork->signalStrength() < info.at(2).toInt()) { + } else if (knownNetwork->signalStrength() < signalStrength) { // replace with a stronger access point within the same network m_networks.at(pos)->setOutOfRange(false); m_networks.at(pos)->setBssid(info.at(0)); m_networks.at(pos)->setFlags(info.at(3)); - m_networks.at(pos)->setSignalStrength(info.at(2).toInt()); + m_networks.at(pos)->setSignalStrength(signalStrength); m_networks.at(pos)->setSsid(info.at(4)); dataChanged(createIndex(pos, 0), createIndex(pos, 0)); } diff --git a/src/imports/wifi/wifi.pro b/src/imports/wifi/wifi.pro index b920978..fcb6cdd 100644 --- a/src/imports/wifi/wifi.pro +++ b/src/imports/wifi/wifi.pro @@ -4,18 +4,29 @@ TARGET = qwifimodule TARGETPATH = Qt/labs/wifi IMPORT_VERSION = 0.1 +HEADERS += \ + qwifimanager.h \ + qwifinetwork.h \ + qwifinetworklistmodel.h + SOURCES += \ pluginmain.cpp \ qwifimanager.cpp \ qwifinetwork.cpp \ qwifinetworklistmodel.cpp -HEADERS += \ - qwifimanager.h \ - qwifinetwork.h \ - qwifinetworklistmodel.h +android: { + LIBS += -lhardware_legacy -lcutils + DEFINES += FORCE_MOC +} else { + DEFINES += CONFIG_CTRL_IFACE \ + CONFIG_CTRL_IFACE_UNIX -LIBS += -lhardware_legacy -lcutils + HEADERS += qwifi_elinux.h + SOURCES += \ + qwifi_elinux.cpp \ + $$[QT_SYSROOT]/usr/include/wpa-supplicant/wpa_ctrl.c \ + $$[QT_SYSROOT]/usr/include/wpa-supplicant/os_unix.c +} load(qml_plugin) - -- cgit v1.2.3 From f0a5a1bcd4224fb98f88559fd211644f2f67b392 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Fri, 16 May 2014 09:22:03 +0200 Subject: Set initial "backend ready" state. Change-Id: Id1d7141cbbee181235093627cf18180354a78a6b Reviewed-by: Kalle Viironen --- src/imports/wifi/qwifimanager.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/imports/wifi/qwifimanager.cpp b/src/imports/wifi/qwifimanager.cpp index 6e5e245..65073f1 100644 --- a/src/imports/wifi/qwifimanager.cpp +++ b/src/imports/wifi/qwifimanager.cpp @@ -456,10 +456,12 @@ QWifiManager::QWifiManager() // same here, cleans up the state disconnectFromBackend(); } + } else { +#endif + m_backendReady = false; + emit backendReadyChanged(); +#ifdef Q_OS_ANDROID } -#else - m_backendReady = false; - emit backendReadyChanged(); #endif } -- cgit v1.2.3 From 81db2dd1ee852678e8e596ef5ee58bc9ed456b19 Mon Sep 17 00:00:00 2001 From: aavit Date: Fri, 16 May 2014 14:40:04 +0200 Subject: Doc: Add setup instructions for Nexus 7 (2013) Change-Id: I3d6dbb2376d86f66d195b9bd9a313ac2aaa62cf8 Reviewed-by: Jerome Pasion --- src/doc/src/b2qt.qdoc | 66 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 7c5863f..0ef20e3 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -43,7 +43,8 @@ \li \l{Supported Platforms} \li \l{Preparing Hardware} \list - \li \l{Preparing Nexus 7}{Nexus 7 (2012) (embedded Android)} + \li \l{Preparing Nexus 7 (2013)}{Nexus 7 (2013) (embedded Android)} + \li \l{Preparing Nexus 7 (2012)}{Nexus 7 (2012) (embedded Android)} \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} \li \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} @@ -316,10 +317,63 @@ and continue straight to \l {Building and Running an Example}. */ +/*! + \target Nexus 7 (2013) (embedded Android) + \page qtee-preparing-hardware-nexus-7-2013.html + \title Preparing Nexus 7 (2013) + \previouspage qtee-installation-guide.html + \nextpage qtee-building-and-running.html + + Take the following steps to prepare a + \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2013)} for + \B2Q. + + \section1 Enabling Developer Mode + + In order to install the \B2Q stack into the Nexus 7, you need to + enable developer mode and USB debugging: + + \list 1 + \li Power up the device. + \li Open the \b{Settings} app and select the \b{About tablet} item. + \li Press the \b{Build number} item seven times, until the message "You are now a developer!" appears. + + \li Back in the \b{Settings} menu, select \b{Developer options}. + \li Press the \b{USB debugging} item and confirm that you allow USB debugging. + \endlist + + You should now be able to establish USB connection to the device as follows. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Deploying the \B2Q Stack + + Using the \c{adb devices} command, confirm that you have a working + connection to the Nexus 7, and that the Nexus 7 is the only + connected device. Then run the following command to install the \B2Q stack: + + \badcode + cd + ./Boot2Qt-3.x/nexus7-2013-eAndroid/images/deploy.sh + \endcode + + The device will reboot during the process. Do not interact with it + or unplug it until the process is fully completed. + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ + /*! \target Nexus 7 (2012) (embedded Android) - \page qtee-preparing-hardware-nexus-7.html - \title Preparing Nexus 7 + \page qtee-preparing-hardware-nexus-7-2012.html + \title Preparing Nexus 7 (2012) \previouspage qtee-installation-guide.html \nextpage qtee-building-and-running.html @@ -327,7 +381,7 @@ \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2012)} for \B2Q. - \section1 Unlocking Nexus 7 Bootloader + \section1 Unlocking Nexus 7 (2012) Bootloader You must unlock the Nexus 7 Bootloader to be able to install custom software. You need to do this only once. @@ -349,7 +403,7 @@ \li Wait a few seconds, and check that the text line stating the \c{LOCK STATE} now says \c{UNLOCKED}. \endlist - \section1 Updating a Nexus 7 with \B2Q Images + \section1 Updating a Nexus 7 (2012) with \B2Q Images \note It is important that you repeat the steps in this section after you update \SDK. @@ -1176,7 +1230,7 @@ \B2Q has been tested to work on the following reference devices: \list - \li \l{http://www.google.com/nexus/7/specs/}{Google/Asus Nexus 7 (2012)} + \li \l{http://www.google.com/nexus/7/specs/}{Google/Asus Nexus 7 (2012 and 2013 models)} \li \l{http://beagleboard.org/hardware-xM}{BeagleBoard-xM} \li \l{http://beagleboard.org/products/beaglebone%20black}{BeagleBone Black} \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Freescale i.MX6 Sabre Lite board (Boundary Devices)} -- cgit v1.2.3 From a48c8f02245f76542ab52550f67b60c6cc166451 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Fri, 16 May 2014 16:40:26 +0300 Subject: doc: include sabre sd documentation Change-Id: Iabd01f452d5c93c47387d439eba4a8fc63f79e1d Reviewed-by: Jerome Pasion Reviewed-by: Kalle Viironen Reviewed-by: Eirik Aavitsland --- src/doc/src/b2qt.qdoc | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 0ef20e3..3f7d231 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -46,6 +46,7 @@ \li \l{Preparing Nexus 7 (2013)}{Nexus 7 (2013) (embedded Android)} \li \l{Preparing Nexus 7 (2012)}{Nexus 7 (2012) (embedded Android)} \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} + \li \l{Preparing SABRE SD i.MX6Quad}{SABRE SD i.MX6Quad (embedded Linux)} \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} \li \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} \li \l{Preparing Raspberry Pi}{Raspberry Pi Model B (embedded Linux)} @@ -634,6 +635,57 @@ see \l{Building and Running an Example}. */ +/*! + \target SABRE SD i.MX6Quad (embedded Linux) + \page qtee-preparing-hardware-imx6sabresd.html + \title Preparing SABRE SD i.MX6Quad + \previouspage qtee-installation-guide.html + + Take the following steps to prepare a + \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD} + {Freescale SABRE SD i.MX6Quad} for \B2Q. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The images containing the \B2Q stack for SABRE SD i.MX6Quad are included + in \SDK, ready to be copied to an SD card. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo Boot2Qt-3.x/imx6sabresd-eLinux/images/deploy.sh /dev/ + \endcode + + After the image has been deployed, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ + /*! \target Raspberry Pi Model B (embedded Linux) \page qtee-preparing-hardware-rasberrypi.html -- cgit v1.2.3 From d1fb7218787caa7393607c7aa8fed95bcfe34e37 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 19 May 2014 11:06:43 +0200 Subject: Doc: add change log for version 3.0.0 Change-Id: Id4d9a924200102c50083743bb7c63f76f60a32e4 Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 3f7d231..28c45c6 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1353,7 +1353,44 @@ \previouspage qtee-customization.html \nextpage qtee-troubleshooting.html - \section1 \B2Q 2.1.0 + \section1 \B2Q 3.0.0 + + \list + \li Release date: May 22, 2014 + \endlist + + \section2 Changes + \b {New Features}: + \list + \li \B2Q stack was updated to use Qt 5.3 on embedded Android and Linux + \li \l {Qt Virtual Keyboard} was updated to version 1.0 + \li \l {Qt Data Visualization} demo was added + \li Qt WebEngine 0.9 support (including WebEngine demo) was added for + embedded Android and Linux. However, the Emulator target is + currently not supported + \li Qt Quick Compiler (Technology Preview) was added to the \B2Q stack + \li \l{Preparing Nexus 7 (2013)}{Nexus 7 (2013)} was added as a + reference device for embedded Android + \li \l{Preparing SABRE SD i.MX6Quad}{Freescale SABRE SD i.MX6Quad} was + added as a reference device for embedded Linux + \li WiFi networking support and configuration were implemented on + embedded Linux + \endlist + + \b {Improvements}: + \list + \li Emulator warnings were improved + \li Embedded Linux: Moved to use Yocto 1.6 (Daisy) + \li Debug symbols were moved to a separately installable package + \li Presentation of \B2Q demos in Qt Creator was improved + \endlist + + \b {Fixed Bugs}: + \list + \li Build scripts: Incorrect path was fixed + \endlist + +\section1 \B2Q 2.1.0 \list \li Release date: Apr. 15, 2014 -- cgit v1.2.3 From fc6af7440dfacfa97640b4d179b1306082eaf51d Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 19 May 2014 13:55:02 +0200 Subject: Doc: add note about webengine's widget apis Change-Id: Idfd4692f125f64da4d49d1cb5528607979db03df Reviewed-by: Kalle Viironen Reviewed-by: Andras Becsi --- src/doc/src/b2qt.qdoc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 28c45c6..2bf3897 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1705,6 +1705,12 @@ Qt WebEngine is not currently available for the emulators, neither eLinux nor eAndroid. This is planned to be addressed in a later release. + + \section2 Widget-based web view is not available + + The Qt WebEngine APIs are available only for Qt Quick 2 based applications at the moment. + The QWidget-based equivalents, like QWebView, will become supported in future releases. + For the time being, use the WebView QML element. */ /*! -- cgit v1.2.3 From a23036aec3188197c3c8d469cd785c9a812f6616 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 19 May 2014 14:08:47 +0200 Subject: Fix class names for WebEngine Change-Id: I96f27eb348f6aa02e26c567d81349905aed2cec0 Reviewed-by: Jocelyn Turcotte --- src/doc/src/b2qt.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 2bf3897..7423178 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1709,8 +1709,8 @@ \section2 Widget-based web view is not available The Qt WebEngine APIs are available only for Qt Quick 2 based applications at the moment. - The QWidget-based equivalents, like QWebView, will become supported in future releases. - For the time being, use the WebView QML element. + The QWidget-based equivalents, like QWebEngineView, will become supported in future releases. + For the time being, use the WebEngineView QML element. */ /*! -- cgit v1.2.3 From 26c94a0c7fb55d9b52b33d29477763df425fed35 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Mon, 19 May 2014 14:27:53 +0200 Subject: Don't show Wi-Fi group box on iMX6-eAndroid This device currently does not support wifi. Change-Id: I8048d7109908c4c2de553dda119cb14be73ef6a7 Reviewed-by: Eirik Aavitsland --- src/imports/wifi/pluginmain.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/imports/wifi/pluginmain.cpp b/src/imports/wifi/pluginmain.cpp index 6dc6cc9..51a2e7c 100644 --- a/src/imports/wifi/pluginmain.cpp +++ b/src/imports/wifi/pluginmain.cpp @@ -66,18 +66,19 @@ public: Q_INVOKABLE bool wifiSupported() const { - bool supported = false; + bool hasInterface = QDir().exists(QStringLiteral("/sys/class/net/wlan0")); + if (!hasInterface) + qWarning() << "QWifiGlobal: could not find wifi interface in /sys/class/net/"; #ifdef Q_OS_ANDROID - if (wifi_load_driver() == 0 && wifi_start_supplicant(0) == 0) - supported = true; - else + if (hasInterface && wifi_load_driver() == 0 && wifi_start_supplicant(0) == 0) { + return true; + } else { qWarning() << "QWifiGlobal: wifi driver is not available"; + return false; + } #else - supported = QDir().exists(QStringLiteral("/sys/class/net/wlan0")); - if (!supported) - qWarning() << "QWifiGlobal: could not find wifi interface in /sys/class/net/"; + return hasInterface; #endif - return supported; } }; -- cgit v1.2.3 From 0884d79a7c89318e257bc59a4c6a83cd021e8b1b Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Mon, 19 May 2014 17:56:30 +0200 Subject: Build wifi also on eLinux It turns out that wifi was never build on eLinux. Change-Id: I27b3f01761b9aaa6f70d0ff4220344551a39ad56 Reviewed-by: Samuli Piippo Reviewed-by: Laszlo Agocs --- src/imports/imports.pro | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/imports/imports.pro b/src/imports/imports.pro index 0a5ccf5..0b5a551 100644 --- a/src/imports/imports.pro +++ b/src/imports/imports.pro @@ -1,3 +1,2 @@ TEMPLATE = subdirs -SUBDIRS = utils -android:SUBDIRS += wifi +SUBDIRS += utils wifi -- cgit v1.2.3 From 8136f448fefbf78dbfee2a53e44e8840823173cc Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Wed, 21 May 2014 09:38:19 +0300 Subject: doc: move adb connection change info to customization This should be under customization and not under build your own embedded linux. Change-Id: Idcc5723b43cdff4d74f75f562f4265bf7abd4555 Reviewed-by: Kalle Viironen Reviewed-by: Eirik Aavitsland --- src/doc/src/b2qt.qdoc | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 7423178..b06929e 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1101,6 +1101,23 @@ change \c /init.rc, or simply rename the \c {/system/bin/surfaceflinger} executable. \endlist + + \section1 Using Network Connection for ADB + + By default, \B2Q uses USB cable for communication between device and Qt Creator. + On \B2QL, you can change the device to use ethernet network connection for the + communication. To enable network connection, you need to modify file + \c /etc/default/adbd located on the devices, and change value of \c USE_ETHERNET + to \c 'yes'. This can also be done with \c adb, while the device is still + connected via USB. + + \badcode + /Tools/b2qt/adb shell sed -i -e 's/USE_ETHERNET=no/USE_ETHERNET=yes/' /etc/default/adbd + \endcode + + \note You need to restart the device for this change to take effect. + + \include b2qt-post-install-setup.qdocinc configuring network device */ /*! @@ -1241,23 +1258,6 @@ This will set up a new kit in Qt Creator, using the toolchain and Qt from your build directory. The new kit is visible under \b Tools > \b Options > \b {Build & Run} > \b Kits. - - \section1 Using Network Connection for ADB - - By default, \B2Q uses USB cable for communication between device and Qt Creator. - On \B2QL, you can change the device to use ethernet network connection for the - communication. To enable network connection, you need to modify file - \c /etc/default/adbd located on the devices, and change value of \c USE_ETHERNET - to \c 'yes'. This can also be done with \c adb, while the device is still - connected via USB. - - \badcode - /Tools/b2qt/adb shell sed -i -e 's/USE_ETHERNET=no/USE_ETHERNET=yes/' /etc/default/adbd - \endcode - - \note You need to restart the device for this change to take effect. - - \include b2qt-post-install-setup.qdocinc configuring network device */ /*! -- cgit v1.2.3 From 65ba0ea65a573f1049eb574e3272da93bb47f010 Mon Sep 17 00:00:00 2001 From: aavit Date: Wed, 21 May 2014 10:25:34 +0200 Subject: Doc: Warn the user that his Nexus will be wiped. Change-Id: I51b1435cfd42ddc598a9f82de6fe76e4e1f8d6c1 Reviewed-by: Jerome Pasion --- src/doc/src/b2qt.qdoc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index b06929e..067ffc1 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -329,6 +329,10 @@ \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2013)} for \B2Q. + \note The installation process will wipe the device. Make sure to + backup any personal data. The device can later be restored to + factory state, see \l{Troubleshooting}. + \section1 Enabling Developer Mode In order to install the \B2Q stack into the Nexus 7, you need to @@ -382,6 +386,10 @@ \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2012)} for \B2Q. + \note The installation process will wipe the device. Make sure to + backup any personal data. The device can later be restored to + factory state, see \l{Troubleshooting}. + \section1 Unlocking Nexus 7 (2012) Bootloader You must unlock the Nexus 7 Bootloader to be able to install custom -- cgit v1.2.3 From 366d1832c715789b6734847b2eb079b9a2f40af1 Mon Sep 17 00:00:00 2001 From: Jerome Pasion Date: Wed, 21 May 2014 12:32:25 +0200 Subject: doc: Updated links to Qt EE known issues and product page -fixes broken links -pages moved Task-number: QTEE-571 Change-Id: Icb3ba61d374edf1bcc44e46fd8e296bdf1736f20 Reviewed-by: Kalle Viironen --- src/doc/src/b2qt-external-pages.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/doc/src/b2qt-external-pages.qdoc b/src/doc/src/b2qt-external-pages.qdoc index 694f349..ea835ad 100644 --- a/src/doc/src/b2qt-external-pages.qdoc +++ b/src/doc/src/b2qt-external-pages.qdoc @@ -18,12 +18,12 @@ ****************************************************************************/ /*! - \externalpage http://qt.digia.com/Product/Qt-for-Embedded-Development/Qt-Enterprise-Embedded/Supported-Modules-and-Known-Issues/ + \externalpage http://qt.digia.com/Product/Qt-Enterprise-Embedded/Supported-Modules-and-Known-Issues/ \title Known Issues */ /*! - \externalpage http://qt.digia.com/Product/Qt-for-Embedded-Development/Qt-Enterprise-Embedded/ + \externalpage http://qt.digia.com/Product/Qt-Enterprise-Embedded/ \title product page */ -- cgit v1.2.3 From bee1c07094a77779b6e8ec54071901d5ce6ed703 Mon Sep 17 00:00:00 2001 From: Jerome Pasion Date: Wed, 21 May 2014 12:16:09 +0200 Subject: doc: Updated versions and supported platforms -updated support info for Beagleboard-XM (only supported in 2.x) -updated Yocto version to 1.6 "Daisy" -updated toolchain version to toolchain-1.6.sh Task-number: QTEE-571 Change-Id: I771effbeb258262eff7141c7c1bdd11b40d0d2dd Reviewed-by: Eirik Aavitsland Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 067ffc1..2f32716 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -114,8 +114,8 @@ forefront. \li \b{\B2QL} where the software stack is using the traditional embedded - Linux kernel built with the Yocto Poky reference system (Yocto 1.5 - \e Dora release). The Embedded Linux variant is designed for great + Linux kernel built with the Yocto Poky reference system (Yocto 1.6 + \e Daisy release). The Embedded Linux variant is designed for great customization possibilities. It contains only components required in the embedded device, resulting in smaller image sizes while keeping valuable development tools available. @@ -509,8 +509,8 @@ {BeagleBoard-xM} for \B2Q. - \note It is important that you repeat the steps in this section after you - update \SDK. + \note BeagleBoard-xM is no longer supported in \SDK 3.0. It is still, + however, supported and tested under the previous 2.x versions. The image containing \B2Q stack for BeagleBoard-xM are included in \SDK, ready to be copied to an SD card. @@ -900,7 +900,7 @@ \li In Qt Creator, select \b File > \b {New File or Project} > \b Applications > \b{Qt Quick Application} > \b{Choose}. \li Choose a location for your new project. - \li In the \b{Qt Quick Component Set} dialog, select \b{Qt Quick 2.0}. + \li In the \b{Qt Quick Component Set} dialog, select \b{Qt Quick 2.2}. \li In the \b{Kit Selection} dialog, select the kits for your devices. You can also select the emulator kit to test running the project in the emulator. @@ -1063,7 +1063,7 @@ application in QML. \qml - import QtQuick 2.0 + import QtQuick 2.2 Item { id: root @@ -1224,7 +1224,7 @@ \endcode The target rootfs image is located in the \c /tmp/deploy/images//b2qt-embedded-image-.tar.gz, - and the new toolchain is in \c /tmp/deploy/sdk/b2qt-eglibc-x86_64-meta-toolchain-b2qt-embedded-sdk--toolchain-1.5.sh + and the new toolchain is in \c /tmp/deploy/sdk/b2qt-eglibc-x86_64-meta-toolchain-b2qt-embedded-sdk--toolchain-1.6.sh \note The generated target image does not yet include Qt libraries, you need to build Qt and add it into the image yourself. @@ -1291,12 +1291,15 @@ \B2Q has been tested to work on the following reference devices: \list \li \l{http://www.google.com/nexus/7/specs/}{Google/Asus Nexus 7 (2012 and 2013 models)} - \li \l{http://beagleboard.org/hardware-xM}{BeagleBoard-xM} \li \l{http://beagleboard.org/products/beaglebone%20black}{BeagleBone Black} \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Freescale i.MX6 Sabre Lite board (Boundary Devices)} \li \l{http://www.raspberrypi.org/faqs}{Raspberry Pi Model B} \endlist + For the \SDK 3.0 release, \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} + is no longer tested and supported. It is, however, still tested and supported + in the earlier 2.x releases. + \section1 Supported Development Environment The development environment supported by \SDK is Ubuntu Linux 64-bit (12.04 LTS or 12.10). -- cgit v1.2.3 From 5c160b6fe916e5605eaa1fd8394b62527ff9f997 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Wed, 21 May 2014 13:59:51 +0200 Subject: Add notes about Quick Compiler failures Change-Id: I04ff434e652ed22615b7f9829585fd69ea638f5a Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 2f32716..ab72787 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1722,6 +1722,17 @@ The Qt WebEngine APIs are available only for Qt Quick 2 based applications at the moment. The QWidget-based equivalents, like QWebEngineView, will become supported in future releases. For the time being, use the WebEngineView QML element. + + \section2 Qt Quick Compiler fails on the emulators + + The Qt Quick Compiler is not yet functional in the emulator environments, and projects + are likely fail to build or run with compilation enabled. Support for the emulators + will be added in a later release. + + \section2 QML debugging not functional when using Qt Quick Compiler + + QML debugging is not fully functional when the Qt Quick Compiler is enabled. Support + for this will be added in a later release. */ /*! -- cgit v1.2.3 From 2d0cdf6753fc1801929f4cad5bc97021b22723bd Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Fri, 23 May 2014 10:31:57 +0200 Subject: Add plugins.qmltypes for Wi-Fi library This fixes autocompletion issue in QtCreator. Task-number: QTEE-568 Change-Id: I186a5777e54d8629fd896bd1ee677ac359373a17 Reviewed-by: Oswald Buddenhagen Reviewed-by: Eirik Aavitsland --- src/imports/wifi/plugins.qmltypes | 60 +++++++++++++++++++++++++++++++++++++++ src/imports/wifi/qmldir | 1 + 2 files changed, 61 insertions(+) create mode 100644 src/imports/wifi/plugins.qmltypes diff --git a/src/imports/wifi/plugins.qmltypes b/src/imports/wifi/plugins.qmltypes new file mode 100644 index 0000000..6667fcb --- /dev/null +++ b/src/imports/wifi/plugins.qmltypes @@ -0,0 +1,60 @@ +import QtQuick.tooling 1.1 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable Qt.labs.wifi 0.1 /system/qml/Qt/labs/wifi/' + +Module { + Component { + name: "QWifiGlobal" + prototype: "QObject" + exports: ["Qt.labs.wifi/Interface 0.1"] + exportMetaObjectRevisions: [0] + Method { name: "wifiSupported"; type: "bool" } + } + Component { + name: "QWifiManager" + prototype: "QObject" + exports: ["Qt.labs.wifi/WifiManager 0.1"] + exportMetaObjectRevisions: [0] + Enum { + name: "NetworkState" + values: { + "Disconnected": 0, + "Authenticating": 1, + "HandshakeFailed": 2, + "ObtainingIPAddress": 3, + "DhcpRequestFailed": 4, + "Connected": 5 + } + } + Property { name: "networkState"; type: "NetworkState"; isReadonly: true } + Property { name: "backendReady"; type: "bool"; isReadonly: true } + Property { name: "scanning"; type: "bool" } + Property { name: "connectedSSID"; type: "string"; isReadonly: true } + Property { name: "networks"; type: "QWifiNetworkListModel"; isReadonly: true; isPointer: true } + Signal { + name: "scanningChanged" + Parameter { name: "scanning"; type: "bool" } + } + Signal { + name: "networkStateChanged" + Parameter { name: "network"; type: "QWifiNetwork"; isPointer: true } + } + Signal { + name: "connectedSSIDChanged" + Parameter { name: "ssid"; type: "string" } + } + Method { name: "start" } + Method { name: "stop" } + Method { + name: "connect" + Parameter { name: "network"; type: "QWifiNetwork"; isPointer: true } + Parameter { name: "passphrase"; type: "string" } + } + Method { name: "disconnect" } + } + Component { name: "QWifiNetworkListModel"; prototype: "QAbstractListModel" } +} diff --git a/src/imports/wifi/qmldir b/src/imports/wifi/qmldir index 4c36784..d4f65d9 100644 --- a/src/imports/wifi/qmldir +++ b/src/imports/wifi/qmldir @@ -1,2 +1,3 @@ module Qt.labs.wifi plugin qwifimodule +typeinfo plugins.qmltypes -- cgit v1.2.3 From a63568ab216fb0fa8e13eaa26358f9fe5af108ae Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 23 May 2014 12:57:20 +0200 Subject: Doc: Update the list of supported platforms Add the missing links to device-specific setup instructions and update the supported platforms page. Change-Id: Ic5bd32f207676cf694521a9acad3609da8b77901 Reviewed-by: Eirik Aavitsland Reviewed-by: Samuli Piippo --- src/doc/src/b2qt.qdoc | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index ab72787..5c41070 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -307,8 +307,10 @@ \B2Q stack. These steps vary from device to device: \list + \li \l{Nexus 7 (2013) (embedded Android)} \li \l{Nexus 7 (2012) (embedded Android)} \li \l{BD-SL-i.MX6 (embedded Android and Linux)} + \li \l{SABRE SD i.MX6Quad (embedded Linux)} \li \l{BeagleBone Black (embedded Android and Linux)} \li \l{BeagleBoard-xM (embedded Linux)} \li \l{Raspberry Pi Model B (embedded Linux)} @@ -1276,33 +1278,50 @@ \section1 Supported Target Devices - The \B2Q stack can be made to run on a variety of hardware. \B2QA - requires hardware that has support for the Android operating system, - version 4.0 or later. + The \B2Q stack can be made to run on a variety of hardware. Approximate minimal hardware requirements for running \B2Q are: \list \li 256 MB of RAM \li 500 MHz CPU, 1 GHz preferred for 60-FPS velvet-smooth UI \li OpenGL ES 2.0 support - \li Android 4.0+ compatible hardware \endlist + \B2QA requires hardware that has support for the Android operating + system, version 4.2 or later. + \B2Q has been tested to work on the following reference devices: \list - \li \l{http://www.google.com/nexus/7/specs/}{Google/Asus Nexus 7 (2012 and 2013 models)} - \li \l{http://beagleboard.org/products/beaglebone%20black}{BeagleBone Black} - \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Freescale i.MX6 Sabre Lite board (Boundary Devices)} - \li \l{http://www.raspberrypi.org/faqs}{Raspberry Pi Model B} + \li \l{http://www.google.com/nexus/7/specs/} + {Google/Asus Nexus 7 (2012 and 2013 models)} + \li \l{http://beagleboard.org/products/beaglebone%20black} + {BeagleBone Black} + \li \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD} + {Freescale SABRE SD i.MX6Quad} + \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} + {BD-SL-i.MX6} + \li \l{http://www.raspberrypi.org/faqs} + {Raspberry Pi Model B} \endlist - For the \SDK 3.0 release, \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} - is no longer tested and supported. It is, however, still tested and supported - in the earlier 2.x releases. + \section2 Legacy Reference Devices + + The following devices are no longer tested or supported by the latest + release of \SDK. + + \list + \li \l{http://beagleboard.org/hardware-xM} + {BeagleBoard-xM} + \list + \li Starting from \SDK 3.0 release, BeagleBoard-xM is no longer + tested and supported. It is, however, still tested and supported + in the earlier 2.x releases. + \endlist + \endlist \section1 Supported Development Environment - The development environment supported by \SDK is Ubuntu Linux 64-bit (12.04 LTS or 12.10). + The development environment supported by \SDK is Ubuntu Linux 64-bit (12.04 LTS or later). \sa {Requirements for Development Host} -- cgit v1.2.3 From 84cb69dd5af6d2e44cce7bbef2536706d781f799 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Thu, 12 Jun 2014 12:37:44 +0200 Subject: Don't hardcode interface name in getIPAddress() Change-Id: I29ac16d598ce56a7fa0a7b3b5bb89ca12d5f074a Reviewed-by: Eirik Aavitsland --- src/utils/qdroidutils.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/utils/qdroidutils.cpp b/src/utils/qdroidutils.cpp index d880de9..379fc20 100644 --- a/src/utils/qdroidutils.cpp +++ b/src/utils/qdroidutils.cpp @@ -225,14 +225,20 @@ bool QDroidUtils::setDisplayBrightness(quint8 value) */ QString QDroidUtils::getIPAddress() { - QStringList addresses; - QNetworkInterface interface = QNetworkInterface::interfaceFromName(QStringLiteral("eth0")); - QList entries; - entries = interface.addressEntries(); - foreach (const QNetworkAddressEntry &entry, entries) { - addresses.append(entry.ip().toString().split('%').first()); + QList availableInterfaces = QNetworkInterface::allInterfaces(); + if (availableInterfaces.length() > 0) { + foreach (const QNetworkInterface &interface, availableInterfaces) { + if (interface.flags() & QNetworkInterface::IsRunning + && (interface.flags() & QNetworkInterface::IsLoopBack) == 0) { + QList entries = interface.addressEntries(); + QStringList addresses; + foreach (const QNetworkAddressEntry &entry, entries) + addresses.append(entry.ip().toString().split('%').first()); + return addresses.join(QStringLiteral(", ")); + } + } } - return addresses.join(QStringLiteral(", ")); + return QString(); } /*! -- cgit v1.2.3 From e30a8e704c129315225368de6cf41bd31df62d64 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Thu, 8 May 2014 17:36:52 +0200 Subject: Fix Wifi issues on Android 4.4.2 - Reload Wi-Fi firmware on a device startup (initializes wlan0 interface). - Android version 4.4 (and above) requires IFNAME=wlan0 prefix to the wpa_supplicant calls, without this all calls to the wpa_supplicant fail. - Fix "broken pipe" issue - a message in the logcat when trying to access a broken network. This seems to be a generic message whenever something is wrong with a network configuration (broken routing table, firewall issues, DNS issues etc.). Android uses Connectivity and NetworkManagement JAVA services to handle network configuration - we can use qconnectivity daemon for this. Task-number: QTEE-562 Change-Id: Ib5a93c677439a0e9bf92ede532667542d2bc4bed Reviewed-by: Eirik Aavitsland --- src/imports/wifi/qwifimanager.cpp | 9 ++++- src/qconnectivity/main.cpp | 79 +++++++++++++++++++++++++++------------ 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/src/imports/wifi/qwifimanager.cpp b/src/imports/wifi/qwifimanager.cpp index 65073f1..dd395c0 100644 --- a/src/imports/wifi/qwifimanager.cpp +++ b/src/imports/wifi/qwifimanager.cpp @@ -618,8 +618,13 @@ QByteArray QWifiManager::call(const char *command) const { char data[2048]; size_t len = sizeof(data) - 1; // -1: room to add a 0-terminator - if (q_wifi_command(m_interface.constData(), command, data, &len) < 0) { - qWarning("QWifiManager: call failed: %s", command); + QByteArray cmd; +#if !(Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 4) + cmd.append("IFNAME=").append(m_interface).append(" "); +#endif + cmd.append(command); + if (q_wifi_command(m_interface.constData(), cmd.constData(), data, &len) < 0) { + qWarning("QWifiManager: call failed: %s", cmd.constData()); return QByteArray(); } if (len < sizeof(data)) diff --git a/src/qconnectivity/main.cpp b/src/qconnectivity/main.cpp index 6f01021..97f9582 100644 --- a/src/qconnectivity/main.cpp +++ b/src/qconnectivity/main.cpp @@ -65,7 +65,8 @@ static int q_dhcp_do_request(bool renew, char *dns2, char *server, uint32_t *lease, - char *vendorInfo) + char *vendorInfo, + char *domain) { #if Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 3 if (!renew) @@ -73,7 +74,6 @@ static int q_dhcp_do_request(bool renew, return dhcp_do_request_renew(ifname, ipaddr, gateway, prefixLength, dns1, dns2, server, lease, vendorInfo); #else char *dns[3] = {dns1, dns2, 0}; - char domain[PROPERTY_VALUE_MAX]; char mtu[PROPERTY_VALUE_MAX]; #if Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 4 if (!renew) @@ -123,6 +123,11 @@ private: LeaseTimer *m_leaseTimer; bool m_isEmulator; QByteArray m_ethInterface; + // android initializes services in a separate threads, therefore it is + // not guaranteed that the netd socket will be ready at the time when qconnectivity + // is starting up - we try to reconnect again after 2 second intervals. This + // variable holds the maximum attempt count (chosen arbitrarily). + int m_attemptCount; }; class LeaseTimer : public QTimer @@ -153,7 +158,12 @@ private: }; QConnectivityDaemon::QConnectivityDaemon() - : m_netdSocket(0), m_serverSocket(0), m_linkUp(false), m_leaseTimer(0), m_isEmulator(isEmulator()) + : m_netdSocket(0), + m_serverSocket(0), + m_linkUp(false), + m_leaseTimer(0), + m_isEmulator(isEmulator()), + m_attemptCount(12) { qDebug() << "starting QConnectivityDaemon..."; if (!m_isEmulator) { @@ -194,26 +204,34 @@ bool QConnectivityDaemon::isEmulator() const void QConnectivityDaemon::initNetdConnection() { + int netdFd = socket_local_client("netd", ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM); + if (netdFd != -1) { + qDebug() << "QConnectivityDaemon: connected to netd socket"; + m_netdSocket = new QLocalSocket(this); + m_netdSocket->setSocketDescriptor(netdFd); + connect(m_netdSocket, SIGNAL(readyRead()), this, SLOT(handleNetdEvent())); + connect(m_netdSocket, SIGNAL(error(QLocalSocket::LocalSocketError)), + this, SLOT(handleError(QLocalSocket::LocalSocketError))); + } else { + qWarning() << "QConnectivityDaemon: failed to connect to netd socket"; + if (--m_attemptCount != 0) + QTimer::singleShot(2000, this, SLOT(initNetdConnection())); + return; + } if (ethernetSupported()) { - static int attemptCount = 12; - int netdFd = socket_local_client("netd", ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM); - if (netdFd != -1) { - qDebug() << "QConnectivityDaemon: connected to netd socket"; - m_netdSocket = new QLocalSocket(this); - m_netdSocket->setSocketDescriptor(netdFd); - connect(m_netdSocket, SIGNAL(readyRead()), this, SLOT(handleNetdEvent())); - connect(m_netdSocket, SIGNAL(error(QLocalSocket::LocalSocketError)), - this, SLOT(handleError(QLocalSocket::LocalSocketError))); - // down-up sequence generates "linkstate" events, which we can use to setup - // our daemon on initial startup or on daemon restarts - sendCommand(QByteArray("0 interface setcfg ").append(m_ethInterface).append(" down").constData()); - sendCommand(QByteArray("0 interface setcfg ").append(m_ethInterface).append(" up").constData()); - } else { - qWarning() << "QConnectivityDaemon: failed to connect to netd socket"; - if (--attemptCount != 0) - QTimer::singleShot(2000, this, SLOT(initNetdConnection())); - } + // down-up sequence generates "linkstate" events, which we can use to setup + // our daemon on initial startup (device boot) or on daemon restarts + sendCommand(QByteArray("0 interface setcfg ").append(m_ethInterface).append(" down").constData()); + sendCommand(QByteArray("0 interface setcfg ").append(m_ethInterface).append(" up").constData()); } + char wifiInterface[PROPERTY_VALUE_MAX]; + property_get("wifi.interface", wifiInterface, NULL); + if (wifiInterface) + // reload wifi firmware + sendCommand(QByteArray("0 softap fwreload ").append(wifiInterface).append(" STA").constData()); + // disable firewall - this setting seems to be enabled only when using "Always-on VPN" + // mode on Android phones, see setLockdownTracker() in ConnectivityService.java + sendCommand("0 firewall disable"); } void QConnectivityDaemon::setHostnamePropery(const char *interface) const @@ -240,6 +258,10 @@ void QConnectivityDaemon::setHostnamePropery(const char *interface) const void QConnectivityDaemon::sendCommand(const char *command) const { + if (!m_netdSocket) { + qDebug() << "QConnectivityDaemon: netd socket is not ready!"; + return; + } qDebug() << "QConnectivityDaemon: sending command - " << command; // netd expects "\0" terminated commands... m_netdSocket->write(command, qstrlen(command) + 1); @@ -286,10 +308,11 @@ bool QConnectivityDaemon::startDhcp(bool renew, const char *interface) char server[PROPERTY_VALUE_MAX]; quint32 lease = 0; char vendorInfo[PROPERTY_VALUE_MAX]; + char domain[PROPERTY_VALUE_MAX] = {0}; if (renew) { result = q_dhcp_do_request(true, interface, ipaddr, gateway, &prefixLength, - dns1, dns2, server, &lease, vendorInfo); + dns1, dns2, server, &lease, vendorInfo, domain); } else { // stop any existing DHCP daemon before starting new dhcp_stop(interface); @@ -298,7 +321,7 @@ bool QConnectivityDaemon::startDhcp(bool renew, const char *interface) // we are responsible for renewing a lease before it expires ifc_clear_addresses(interface); result = q_dhcp_do_request(false, interface, ipaddr, gateway, &prefixLength, - dns1, dns2, server, &lease, vendorInfo); + dns1, dns2, server, &lease, vendorInfo, domain); } bool success = (result == 0) ? true : false; @@ -316,6 +339,16 @@ bool QConnectivityDaemon::startDhcp(bool renew, const char *interface) ifc_configure(interface, _ipaddr.s_addr, prefixLength, _gateway.s_addr, _dns1.s_addr, _dns2.s_addr); + // set DNS servers for interface - see NetworkManagementService.java + if (domain[0]) { + QByteArray dnsForInterface("0 resolver setifdns "); + dnsForInterface.append(interface).append(" ").append(domain).append(" "); + dnsForInterface.append(dns1).append(" ").append(dns2); + sendCommand(dnsForInterface.constData()); + } + // set default interface for DNS - see NetworkManagementService.java + sendCommand(QByteArray("0 resolver setdefaultif ").append(interface).constData()); + property_set("net.dns1", dns1); property_set("net.dns2", dns2); } -- cgit v1.2.3 From f2cf2032de110182c45e9ab61d00e65a8db8028b Mon Sep 17 00:00:00 2001 From: aavit Date: Fri, 20 Jun 2014 15:55:02 +0200 Subject: Doc: injection to eAndroid reference devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Including improved nexus script. Change-Id: I4fffcf09a7b562c2779df0e742ad868771e86bc2 Reviewed-by: Topi Reiniö --- src/doc/src/b2qt.qdoc | 181 ++++++++++++-------------------------------------- 1 file changed, 43 insertions(+), 138 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 5c41070..3dad876 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -43,8 +43,7 @@ \li \l{Supported Platforms} \li \l{Preparing Hardware} \list - \li \l{Preparing Nexus 7 (2013)}{Nexus 7 (2013) (embedded Android)} - \li \l{Preparing Nexus 7 (2012)}{Nexus 7 (2012) (embedded Android)} + \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2012/2013) (embedded Android)} \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{Preparing SABRE SD i.MX6Quad}{SABRE SD i.MX6Quad (embedded Linux)} \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} @@ -307,8 +306,7 @@ \B2Q stack. These steps vary from device to device: \list - \li \l{Nexus 7 (2013) (embedded Android)} - \li \l{Nexus 7 (2012) (embedded Android)} + \li \l{Nexus 7 (2012/2013) (embedded Android)} \li \l{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{SABRE SD i.MX6Quad (embedded Linux)} \li \l{BeagleBone Black (embedded Android and Linux)} @@ -321,24 +319,38 @@ */ /*! - \target Nexus 7 (2013) (embedded Android) - \page qtee-preparing-hardware-nexus-7-2013.html - \title Preparing Nexus 7 (2013) + \target Nexus 7 (2012/2013) (embedded Android) + \page qtee-preparing-hardware-nexus-7.html + \title Preparing Nexus 7 (2012/2013) \previouspage qtee-installation-guide.html \nextpage qtee-building-and-running.html Take the following steps to prepare a - \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2013)} for + \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2012/2013)} for \B2Q. \note The installation process will wipe the device. Make sure to backup any personal data. The device can later be restored to - factory state, see \l{Troubleshooting}. + factory state, see \l{nexus-factory-reset}{Troubleshooting}. + + The Nexus 7 must have the same Android main version (e.g. \c{4.2} + or \c{4.4}) as the generic \B2Q eAndroid stack that is to be + installed. If needed, you can update the Android version either by + using Android's upgrading tool, or by flashing a factory image of + the right version. See \l{nexus-factory-reset}{Troubleshooting}. \section1 Enabling Developer Mode In order to install the \B2Q stack into the Nexus 7, you need to - enable developer mode and USB debugging: + enable developer mode and USB debugging. This is only needed for + the first time install. + + \note If for some reason the device does not boot up normally, it + is also possible to install to a Nexus 7 started up in + \c{fastboot} (bootloader) mode (see + \l{nexus-factory-reset}{Troubleshooting}). Just skip this section + and add the \c{-fastboot} argument to the \c{deploy.sh} command + below. \list 1 \li Power up the device. @@ -357,140 +369,32 @@ \section1 Deploying the \B2Q Stack - Using the \c{adb devices} command, confirm that you have a working - connection to the Nexus 7, and that the Nexus 7 is the only - connected device. Then run the following command to install the \B2Q stack: - - \badcode - cd - ./Boot2Qt-3.x/nexus7-2013-eAndroid/images/deploy.sh - \endcode - - The device will reboot during the process. Do not interact with it - or unplug it until the process is fully completed. - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target Nexus 7 (2012) (embedded Android) - \page qtee-preparing-hardware-nexus-7-2012.html - \title Preparing Nexus 7 (2012) - \previouspage qtee-installation-guide.html - \nextpage qtee-building-and-running.html - - Take the following steps to prepare a - \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2012)} for - \B2Q. - - \note The installation process will wipe the device. Make sure to - backup any personal data. The device can later be restored to - factory state, see \l{Troubleshooting}. + Depending on the edition of your Nexus 7 device, use one of the + commands below to install the \B2Q stack. Replace \c{X.Y} with the + device's Android version number, for example \c{4.2} or \c{4.4}. - \section1 Unlocking Nexus 7 (2012) Bootloader + \note The deploy script will check that the connected Nexus device + is of the expected type and Android version, and abort the + installation if it is not. - You must unlock the Nexus 7 Bootloader to be able to install custom - software. You need to do this only once. - - \list 1 - \li Power off the device. - \li Connect the device to the development host with a USB cable. - \li To start the Nexus up in \e{fastboot} mode, press the power button - for a second, and then keep the \b {Volume Down} key pressed down, - until you see a screen with a green robot with its front panel open. - \note If the ordinary startup screen appears instead, power off the - device and try again. - \li On the development host, enter the following command: - \badcode - sudo /Tools/b2qt/fastboot oem unlock - \endcode - \li Press the power button to confirm that you want to unlock the - bootloader when the prompt appears on the Nexus screen. - \li Wait a few seconds, and check that the text line stating the \c{LOCK STATE} now says \c{UNLOCKED}. - \endlist - - \section1 Updating a Nexus 7 (2012) with \B2Q Images - - \note It is important that you repeat the steps in this section after you - update \SDK. - - To update an unlocked Nexus 7 device with a \B2Q image: - - \list 1 - \li Make sure that the device is in \e{fastboot} mode and that it is - connected to the development host via USB. - - \li Re-flash the \e{boot}, \e{system}, and \e{userdata} partitions on the - device, by entering the following commands in the following order: - - \badcode - cd - sudo ./Tools/b2qt/fastboot flash boot Boot2Qt-3.x/nexus7-eAndroid/images/boot.img - sudo ./Tools/b2qt/fastboot flash system Boot2Qt-3.x/nexus7-eAndroid/images/system.img - sudo ./Tools/b2qt/fastboot flash userdata Boot2Qt-3.x/nexus7-eAndroid/images/data.img - \endcode - - \li Once the flashing is completed successfully, reboot the device: - - \badcode - sudo ./Tools/b2qt/fastboot reboot - \endcode - - \endlist - - \note You must install proprietary drivers for the Nexus 7 to boot - correctly. Until then, the screen will briefly show the "Google" logo and then go black, - instead of showing the \B2Q welcome screen or demo. - - \section1 Installing Proprietary Drivers - - Download the proprietary drivers for your Nexus 7. The following script downloads the third - party drivers from \l{https://developers.google.com/android/nexus/drivers#grouperjdq39} - {https://developers.google.com/android/nexus/drivers#grouperjdq39} - \badcode - cd - ./Boot2Qt-3.x/nexus7-eAndroid/images/download.sh - \endcode - - \note Only the version "Android 4.2.2 (JDQ39 to JDQ39E)" works with the - current \B2Q image. - - To install the drivers to Nexus 7: - - \list 1 - \li Power on the device and connect it to the development host via USB. - Also check that the device is \e{not} in fastboot mode. - \li Run the driver extractors: - \badcode - cd Boot2Qt-3.x/nexus7-eAndroid/images/drivers - ./extract-nvidia-grouper.sh - ./extract-asus-grouper.sh - ./extract-invensense-grouper.sh - cd - - \endcode - \note Carefully read the license terms enclosed in each individual - extractor. - \li Find out the serial number of the connected Nexus 7 device: + \list + \li \b{Nexus 7 (2013):} \badcode - ./Tools/b2qt/adb devices + cd + ./Boot2Qt-3.x/generic-X.Y-eAndroid/images/nexus7v2/deploy.sh \endcode - \li Deploy the drivers to your device: + \li \b{Nexus 7 (2012):} \badcode - ./Boot2Qt-3.x/nexus7-eAndroid/images/deploy.sh + cd + ./Boot2Qt-3.x/generic-X.Y-eAndroid/images/nexus7/deploy.sh \endcode \endlist - After the installation is complete, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Setting up USB Access + During the installation, the device may ask for confirmation to be + unlocked. Press the power button once to confirm. - \include b2qt-post-install-setup.qdocinc setting up usb access + The device will reboot during the process. Do not interact with it + or unplug it until the process is fully completed. \section1 Configuring a Device Kit in Qt Creator @@ -621,7 +525,7 @@ \li \b{\B2QA} \badcode cd - ./Boot2Qt-3.x/iMX6-eAndroid/images/deploy.sh /dev/ + ./Boot2Qt-3.x/generic-4.2-eAndroid/images/iMX6/deploy.sh /dev/ \endcode \li \b{\B2QL} \badcode @@ -808,7 +712,7 @@ \li \b{\B2QA} \badcode cd - ./Boot2Qt-3.x/beaglebone-eAndroid/images/deploy.sh /dev/ + ./Boot2Qt-3.x/generic-4.2-eAndroid/images/beaglebone/deploy.sh \endcode \li \b{\B2QL} \badcode @@ -1399,7 +1303,7 @@ embedded Android and Linux. However, the Emulator target is currently not supported \li Qt Quick Compiler (Technology Preview) was added to the \B2Q stack - \li \l{Preparing Nexus 7 (2013)}{Nexus 7 (2013)} was added as a + \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2013)} was added as a reference device for embedded Android \li \l{Preparing SABRE SD i.MX6Quad}{Freescale SABRE SD i.MX6Quad} was added as a reference device for embedded Linux @@ -1589,6 +1493,7 @@ \li \l http://boundarydevices.com/switching-u-boot-versions-on-i-mx6/ \endlist + \target nexus-factory-reset \section2 How do I restore my Nexus 7 to factory settings? Go to \l{https://developers.google.com/android/nexus/images} and -- cgit v1.2.3 From 95176bb8b10b6bcc70b44abf50374a32d6ac41d5 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 23 Jun 2014 12:51:22 +0300 Subject: doc: add documentation for Toradex Apalis iMX6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I83c7b2ed8b7b941ab6cca21860da7e863b5e5251 Reviewed-by: Eirik Aavitsland Reviewed-by: Topi Reiniö --- src/doc/src/b2qt.qdoc | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 3dad876..3902529 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -46,6 +46,7 @@ \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2012/2013) (embedded Android)} \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{Preparing SABRE SD i.MX6Quad}{SABRE SD i.MX6Quad (embedded Linux)} + \li \l{Preparing Toradex Apalis iMX6}{Toradex Apalis iMX6 (embedded Linux)} \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} \li \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} \li \l{Preparing Raspberry Pi}{Raspberry Pi Model B (embedded Linux)} @@ -309,6 +310,7 @@ \li \l{Nexus 7 (2012/2013) (embedded Android)} \li \l{BD-SL-i.MX6 (embedded Android and Linux)} \li \l{SABRE SD i.MX6Quad (embedded Linux)} + \li \l{Toradex Apalis iMX6 (embedded Linux)} \li \l{BeagleBone Black (embedded Android and Linux)} \li \l{BeagleBoard-xM (embedded Linux)} \li \l{Raspberry Pi Model B (embedded Linux)} @@ -600,6 +602,69 @@ see \l{Building and Running an Example}. */ +/*! + \target Toradex Apalis iMX6 (embedded Linux) + \page qtee-preparing-hardware-apalis-imx6.html + \title Preparing Toradex Apalis iMX6 + \previouspage qtee-installation-guide.html + + Take the following steps to prepare a + \l{http://www.toradex.com/products/apalis-arm-computer-modules/freescale-imx-6-computer-module} + {Toradex Apalis iMX6} for \B2Q. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The images containing the \B2Q stack for Toradex Apalis iMX6 are included + in \SDK, ready to be copied to an SD card. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo Boot2Qt-3.x/apalis-imx6-eLinux/images/deploy.sh /dev/ + \endcode + + By default, the Toradex Apalis iMX6 boots from its internal eMMC. In order to boot from + the external SD card, the U-Boot environment needs to be updated. Connect a serial cable + to the device and enter into the U-Boot environment by pressing any key before the autoboot. + Enter following lines into U-Boot: + + \badcode + setenv bootcmd 'run sdboot ; echo sdboot failed ; run emmcboot ; echo ; echo emmcboot failed ; run nfsboot ; echo ; echo nfsboot failed ; usb start ;setenv stdout serial,vga ; setenv stdin serial,usbkbd' + setenv sdboot 'run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs};echo Booting from SD card in 8bit slot...; fatload mmc 2:1 10800000 uImage && bootm 10800000' + setenv sdargs 'ip=off root=/dev/mmcblk1p2 rw,noatime rootfstype=ext3 rootwait' + saveenv + \endcode + + New U-Boot command are now stored into the device, and you can start \B2Q. For more information + about the boot process on Toredex Apalis iMX6, see + \l{http://developer.toradex.com/software-resources/arm-family/linux/linux-booting}{Toradex Linux Booting} + + After the image has been deployed, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring network device + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ + /*! \target Raspberry Pi Model B (embedded Linux) \page qtee-preparing-hardware-rasberrypi.html @@ -1115,6 +1180,9 @@ \row \li Freescale SABRE SD i.MX6Quad \li imx6qsabresd + \row + \li Toradex Apalis iMX6 + \li apalis-imx6 \row \li Emulator \li emulator @@ -1204,6 +1272,8 @@ {Freescale SABRE SD i.MX6Quad} \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} {BD-SL-i.MX6} + \li \l{http://www.toradex.com/products/apalis-arm-computer-modules/freescale-imx-6-computer-module} + {Toradex Apalis iMX6} \li \l{http://www.raspberrypi.org/faqs} {Raspberry Pi Model B} \endlist -- cgit v1.2.3 From a136643d97abb384a963f5da566a7ce0e34695ea Mon Sep 17 00:00:00 2001 From: aavit Date: Wed, 25 Jun 2014 12:45:38 +0200 Subject: Doc: Fix path for sabre install Change-Id: Id577ea9d5e6cf5d0b0b129f90688f88acf44f9fb Reviewed-by: Samuli Piippo --- src/doc/src/b2qt.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 3902529..bf4bf0b 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -584,7 +584,7 @@ \badcode cd - sudo Boot2Qt-3.x/imx6sabresd-eLinux/images/deploy.sh /dev/ + sudo Boot2Qt-3.x/imx6qsabresd-eLinux/images/deploy.sh /dev/ \endcode After the image has been deployed, insert the SD card, power on the device and check that -- cgit v1.2.3 From dc109fe1f3077dbcaf17902dc75032684e7ac269 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 26 Jun 2014 12:02:52 +0200 Subject: Doc: Update the Supported Platforms page Describe the support in more clear terms, including the support for stack customization. Task-number: QTEE-680 Change-Id: I43c72ee8f4aa363ff9e05a4a10ac3df456abc6bc Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index bf4bf0b..e47168e 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1248,9 +1248,13 @@ \previouspage qtee-installation-guide.html \nextpage qtee-preparing-hardware.html - \section1 Supported Target Devices + \section1 Supported Reference Devices - The \B2Q stack can be made to run on a variety of hardware. + The \B2Q stack can be made to run on a variety of hardware. For \SDK license + holders, tooling is provided to customize the contents of the stack as well + as to take it into desired production hardware. For more information on how + to customize the stack for embedded Linux, see + \l {Building Your Own Embedded Linux Image}. Approximate minimal hardware requirements for running \B2Q are: \list @@ -1262,7 +1266,8 @@ \B2QA requires hardware that has support for the Android operating system, version 4.2 or later. - \B2Q has been tested to work on the following reference devices: + \B2Q software stack is provided pre-built, tested and supported for the + following hardware: \list \li \l{http://www.google.com/nexus/7/specs/} {Google/Asus Nexus 7 (2012 and 2013 models)} -- cgit v1.2.3 From 5de04cef57fe33e257aebc407ed327e7d4f793bb Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 27 Jun 2014 14:46:31 +0200 Subject: Doc: Bump version to 3.1.0 Change-Id: Ic4e5b270a0289d3e7eab34af58b61b8d034fa72d Reviewed-by: Samuli Piippo Reviewed-by: Kalle Viironen --- src/doc/config/b2qt.qdocconf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/doc/config/b2qt.qdocconf b/src/doc/config/b2qt.qdocconf index 045c8ea..28cb2d5 100644 --- a/src/doc/config/b2qt.qdocconf +++ b/src/doc/config/b2qt.qdocconf @@ -6,7 +6,7 @@ sourceencoding = UTF-8 project = QtEnterpriseEmbedded description = Qt Enterprise Embedded Documentation -version = 3.0.0 +version = 3.1.0 sourcedirs = ../src \ ../../imports/wifi @@ -23,7 +23,7 @@ indexes = $QT_INSTALL_DOCS/qtquick/qtquick.index \ qhp.projects = B2Qt qhp.B2Qt.file = b2qt.qhp -qhp.B2Qt.namespace = com.digia.b2qt.300 +qhp.B2Qt.namespace = com.digia.b2qt.310 qhp.B2Qt.virtualFolder = b2qt qhp.B2Qt.indexTitle = Qt Enterprise Embedded Documentation qhp.B2Qt.indexRoot = -- cgit v1.2.3 From 7fd7d05ca382fd4dc1d609c8fe4544bb88764cff Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Mon, 30 Jun 2014 12:18:08 +0200 Subject: Fix #ifdef for Android detection It was wrongly adding "IFNAME=" to wpa_supplicant calls on eLinux, "IFNAME=" is required only for eAndroid. Change-Id: Ic16d321765071df66fbffc1c3d6ce78180eb3b1c Reviewed-by: Eirik Aavitsland --- src/imports/wifi/qwifimanager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/imports/wifi/qwifimanager.cpp b/src/imports/wifi/qwifimanager.cpp index dd395c0..8eec3e0 100644 --- a/src/imports/wifi/qwifimanager.cpp +++ b/src/imports/wifi/qwifimanager.cpp @@ -619,8 +619,10 @@ QByteArray QWifiManager::call(const char *command) const char data[2048]; size_t len = sizeof(data) - 1; // -1: room to add a 0-terminator QByteArray cmd; +#ifdef Q_OS_ANDROID #if !(Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 4) cmd.append("IFNAME=").append(m_interface).append(" "); +#endif #endif cmd.append(command); if (q_wifi_command(m_interface.constData(), cmd.constData(), data, &len) < 0) { @@ -630,7 +632,7 @@ QByteArray QWifiManager::call(const char *command) const if (len < sizeof(data)) data[len] = 0; QByteArray result = QByteArray::fromRawData(data, len); - if (QT_WIFI_DEBUG) qDebug("QWifiManager::call: %s ==>\n%s", command, result.constData()); + if (QT_WIFI_DEBUG) qDebug("QWifiManager::call: %s ==>\n%s", cmd.constData(), result.constData()); return result; } -- cgit v1.2.3 From e8f88b15069677cc93a5f5d6154137963a10d7ff Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Mon, 30 Jun 2014 14:46:41 +0200 Subject: Doc: Add note about crash message when closing an application Task-number: QTEE-400 Change-Id: I0c8b8cb190919d97bc7c2efff989655ead2b1de1 Reviewed-by: Eirik Aavitsland --- src/doc/src/b2qt.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index e47168e..185a606 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1621,6 +1621,11 @@ /Tools/b2qt/adb logcat \endcode + \note When terminating an application from Qt Creator, you may see the + message \e {Terminating application. Error running process: Process crashed}. + This is normal and does not indicate a problem in your code; a SIGTERM + signal is sent to the application, and Qt interprets it as a crash. + \section2 Mouse or touch input does not work See \l{Customization}. -- cgit v1.2.3 From dd9c79664a5d463acaad2be599b053659576aa88 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 26 Jun 2014 14:12:41 +0200 Subject: Doc: Android-specific instructions for Qt Creator Kit setup Adjust kit selection instructions for Android injection solution, and create re-usable documentation blocks to cover eLinux, eAndroid, and both. Task-number: QTEE-65QTEE-651 Change-Id: I42a1055a76f8a9e2d8dfb053ab1272643aef5671 Reviewed-by: Eirik Aavitsland --- src/doc/src/b2qt-post-install-setup.qdocinc | 36 +++++++++++++++++++++++++++++ src/doc/src/b2qt.qdoc | 8 +++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/doc/src/b2qt-post-install-setup.qdocinc b/src/doc/src/b2qt-post-install-setup.qdocinc index ec293de..0bd96dd 100644 --- a/src/doc/src/b2qt-post-install-setup.qdocinc +++ b/src/doc/src/b2qt-post-install-setup.qdocinc @@ -56,12 +56,14 @@ //! [setting up usb access] //! [configuring device kit] +//! [common config device kit] After you have prepared the hardware, you must perform one final step to set up the development tools in Qt Creator for your device. That is, you must configure the correct device to be used for each build and run \e{kit}. Connect your device to the development host via USB and launch Qt Creator. In Qt Creator: +//! [common config device kit] //! [steps for device kit] \list 1 \li Select \b{Tools > Options > Build & Run > Kits}. @@ -73,6 +75,25 @@ //! [steps for device kit] //! [configuring device kit] +//! [android steps for dev kit] + \list 1 + \li Select \b{Tools > Options > Build & Run > Kits}. + \li Select the kit with the correct Android version + (for example, \e {generic-4.2}). + \li Select the correct device in the \b{Device} field. + \li Select \b{OK}. + \endlist + + If you have more than one development device that use the same Android + version, clone the \e generic kit and rename it after the physical device: + + \list 1 + \li Select the generic Android kit and then \b Clone. + \li Select the correct device in the \b{Device} field. + \li Edit the name of the cloned kit and press \b OK. + \endlist +//! [android steps for dev kit] + //! [configuring network device] After you have prepared the hardware, you must set up the development tools in Qt Creator for your device. Connect your device to the network via an @@ -93,4 +114,19 @@ \include b2qt-post-install-setup.qdocinc steps for device kit //! [configuring network device] + +//! [configuring device kit android] + \include b2qt-post-install-setup.qdocinc common config device kit + \include b2qt-post-install-setup.qdocinc android steps for dev kit +//! [configuring device kit android] + +//! [configuring device kit android linux] + \include b2qt-post-install-setup.qdocinc common config device kit + \list + \li \b{\B2QL} + \include b2qt-post-install-setup.qdocinc steps for device kit + \li \b{\B2QA} + \include b2qt-post-install-setup.qdocinc android steps for dev kit + \endlist +//! [configuring device kit android linux] */ diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 185a606..b25616f 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -290,7 +290,7 @@ \section1 6. Configuring a Device Kit in Qt Creator - \include b2qt-post-install-setup.qdocinc configuring device kit + \include b2qt-post-install-setup.qdocinc configuring device kit android linux You are now ready to start developing for your device. For more information, see \l{Building and Running an Example}. @@ -400,7 +400,7 @@ \section1 Configuring a Device Kit in Qt Creator - \include b2qt-post-install-setup.qdocinc configuring device kit + \include b2qt-post-install-setup.qdocinc configuring device kit android You are now ready to start developing for your device. For more information, see \l{Building and Running an Example}. @@ -545,7 +545,7 @@ \section1 Configuring a Device Kit in Qt Creator - \include b2qt-post-install-setup.qdocinc configuring device kit + \include b2qt-post-install-setup.qdocinc configuring device kit android linux You are now ready to start developing for your device. For more information, see \l{Building and Running an Example}. @@ -795,7 +795,7 @@ \section1 Configuring a Device Kit in Qt Creator - \include b2qt-post-install-setup.qdocinc configuring device kit + \include b2qt-post-install-setup.qdocinc configuring device kit android linux You are now ready to start developing for your device. For more information, see \l{Building and Running an Example}. -- cgit v1.2.3 From 64164764fdfe9ed736b7367d573c0daa026b777f Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Mon, 30 Jun 2014 14:45:23 +0200 Subject: Doc: ChangeLog for 3.1.0 release Task-number: QTEE-685 Change-Id: I6d2974fb569207f504ec17bae1acc988ce8ee04c Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index b25616f..34b8d58 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1362,6 +1362,47 @@ \previouspage qtee-customization.html \nextpage qtee-troubleshooting.html + \section1 \B2Q 3.1.0 + + \list + \li Release date: July 3, 2014 + \endlist + + \section2 Changes + \b {New Features}: + \list + \li Boot to Qt stack was updated to use Qt 5.3.1 on embedded Android + and Linux. + \li Added a generic solution for injecting \B2QA stack into devices + running Android version 4.2.2 or later. + \li \l {Preparing Toradex Apalis iMX6}{Toradex Apalis iMX6} was added + as a reference device. + \li \l {Qt Data Visualization} was updated to version 1.1. + \li \l {Qt Charts} was updated to version 1.4. + \li \l {Qt Virtual Keyboard} was update to version 1.1. + \endlist + + \b {Improvements}: + \list + \li Added translucent widget windows support to eglfs. + \li Changed \e appcontroller to print status messages to stdout. + \li Switched to use symbolic links for GL-streaming library, instead + of having multiple copies. + \li Fixed C++ debugging issues and improved performance on embedded + Android. + \li Updated the content of \e About \e {\SDK} demo. + \li Improved Sensors and Media Player examples. + \endlist + + \b {Fixed Bugs}: + \list + \li Fixed WiFi not working on Nexus 7 (2013). + \li BeagleBone Black: Fixed C++ debugging failing on embedded Android. + \li BeagleBone Black: embedded Linux did not include USB serial drivers. + \li Fixed JavaScript crash on ARM (QTBUG-39289). + \li Removed useless warnings about setMask when using Qt Widgets. + \endlist + \section1 \B2Q 3.0.0 \list -- cgit v1.2.3 From a2c0d8a6b715a80db5eb0e99ec1f199db74eeb8f Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Wed, 2 Jul 2014 15:10:19 +0200 Subject: Doc: Mention the new templates in Building and Running topic Change-Id: I490ee23f78a07d4e682c98768390e90aea52d8b5 Reviewed-by: Eirik Aavitsland --- src/doc/src/b2qt.qdoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 34b8d58..94d3ac6 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -871,7 +871,8 @@ \li In Qt Creator, select \b File > \b {New File or Project} > \b Applications > \b{Qt Quick Application} > \b{Choose}. \li Choose a location for your new project. - \li In the \b{Qt Quick Component Set} dialog, select \b{Qt Quick 2.2}. + \li In the \b{Qt Quick Component Set} dialog, select \b{Qt Quick 2.2} + or \b{Qt Quick 2.2 Boot2Qt}. \li In the \b{Kit Selection} dialog, select the kits for your devices. You can also select the emulator kit to test running the project in the emulator. -- cgit v1.2.3 From 95801e49bafc6a314c5aadca37f2f2de0ea74dbe Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Wed, 2 Jul 2014 17:41:55 +0200 Subject: [Doc] Troubleshooting - add note about flashing BD's i.MX6 Change-Id: I2323becd5b62f01d6c62e848e77ad3588ceee270 Reviewed-by: Laszlo Agocs --- src/doc/src/b2qt.qdoc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 94d3ac6..03328b9 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1779,6 +1779,28 @@ QML debugging is not fully functional when the Qt Quick Compiler is enabled. Support for this will be added in a later release. + + + \section2 Boundary Devices Android Jellybean i.MX6 image deploying issues + + On some hosts running the mksdcard.sh script results in the following failure messages: + + \badcode + Cannot find device with major:minor 8:20: No such device + cp: target ‘/media/BOOT/’ is not a directory + \endcode + + This means that flashing an sdcard has failed, even if the scripts seemingly runs to the end. + The issue can be worked around by adding "sleep" call before "udisks --mount" loop (search at + the end of the script): + + \badcode + sleep 2 + for n in 1 2 4 ; do + udisks --mount ${diskname}${prefix}${n} + done + \endcode + */ /*! -- cgit v1.2.3 From 8ae48de206bf9a03850a4c1fd5060b499cb6bad8 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 3 Jul 2014 11:56:24 +0200 Subject: Doc: Update URLs for external pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit URLs on qt.digia.com have changed slightly - most of them have working redirects in place. Add also a link to Qt Quick Compiler product page. Change-Id: Id789fce39211e5141043e465fe7937a326f84e09 Reviewed-by: Topi Reiniö --- src/doc/src/b2qt-external-pages.qdoc | 13 +++++++++---- src/doc/src/b2qt.qdoc | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/doc/src/b2qt-external-pages.qdoc b/src/doc/src/b2qt-external-pages.qdoc index ea835ad..d642fa2 100644 --- a/src/doc/src/b2qt-external-pages.qdoc +++ b/src/doc/src/b2qt-external-pages.qdoc @@ -33,25 +33,30 @@ */ /*! - \externalpage http://qt.digia.com/Product/Qt-Enterprise-Features/Advanced-Data-Visualization/ + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Advanced-Data-Visualization/ \title Qt Data Visualization */ /*! - \externalpage http://qt.digia.com/Product/Qt-Enterprise-Features/Qt-Quick-Enterprise-Controls/ + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Qt-Quick-Enterprise-Controls/ \title Qt Quick Enterprise Controls */ /*! - \externalpage http://qt.digia.com/Product/Qt-Enterprise-Features/Qt-Virtual-Keyboard/ + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Qt-Virtual-Keyboard/ \title Qt Virtual Keyboard */ /*! - \externalpage http://qt.digia.com/Product/Qt-Enterprise-Features/Charts/ + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Charts/ \title Qt Charts */ +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Qt-Quick-Compiler/ + \title Qt Quick Compiler +*/ + /*! \externalpage https://www.yoctoproject.org/ \title Yocto Project diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 03328b9..e0a818a 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1419,7 +1419,7 @@ \li Qt WebEngine 0.9 support (including WebEngine demo) was added for embedded Android and Linux. However, the Emulator target is currently not supported - \li Qt Quick Compiler (Technology Preview) was added to the \B2Q stack + \li \l {Qt Quick Compiler} (Technology Preview) was added to the \B2Q stack \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2013)} was added as a reference device for embedded Android \li \l{Preparing SABRE SD i.MX6Quad}{Freescale SABRE SD i.MX6Quad} was -- cgit v1.2.3 From b765798665e2c156f10815663b1383a45a638910 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Wed, 9 Jul 2014 13:13:54 +0200 Subject: Get rid of the missing cmake tests error from qmake with Qt 5.4 Due to some bizarre new policy, any Qt module will fail unless tests/auto/cmake is present. See qtbase/mkspecs/features/create_cmake.prf. We don't care about cmake so just disable this thing in the .qmake.conf Change-Id: Idbad4c580f6c69e9650930224c0fb418cde09281 Reviewed-by: Eirik Aavitsland --- .qmake.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/.qmake.conf b/.qmake.conf index d253d07..a21d90c 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,2 +1,3 @@ load(qt_build_config) MODULE_VERSION=2.0.0 +CMAKE_MODULE_TESTS=- -- cgit v1.2.3 From ef61549a06b60be3be5d5afc99df682f884f933f Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Wed, 6 Aug 2014 10:20:38 +0200 Subject: Doc: Minor update to Toradex Apalis iMX6 boot instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the displayed text to match what the script does - mmc 2:1 refers to 4bit slot, not 8bit. Change-Id: I55a4ebe2bc483ebdf132d1e5cefbd0d6ec919201 Reviewed-by: Pasi Petäjäjärvi --- src/doc/src/b2qt.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index e0a818a..1b1bc98 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -645,7 +645,7 @@ \badcode setenv bootcmd 'run sdboot ; echo sdboot failed ; run emmcboot ; echo ; echo emmcboot failed ; run nfsboot ; echo ; echo nfsboot failed ; usb start ;setenv stdout serial,vga ; setenv stdin serial,usbkbd' - setenv sdboot 'run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs};echo Booting from SD card in 8bit slot...; fatload mmc 2:1 10800000 uImage && bootm 10800000' + setenv sdboot 'run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs};echo Booting from SD card in 4bit slot...; fatload mmc 2:1 10800000 uImage && bootm 10800000' setenv sdargs 'ip=off root=/dev/mmcblk1p2 rw,noatime rootfstype=ext3 rootwait' saveenv \endcode -- cgit v1.2.3 From 28cbd241051af18603ef61fcc5d94bdb10868e12 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Tue, 19 Aug 2014 12:27:12 +0200 Subject: Doc: ChangeLog for QtEE 3.1.1 release Change-Id: Ie3b87920a3a522391618756045d6bf9ec3ab3ba1 Reviewed-by: Samuli Piippo --- src/doc/src/b2qt.qdoc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc index 1b1bc98..ebb8b11 100644 --- a/src/doc/src/b2qt.qdoc +++ b/src/doc/src/b2qt.qdoc @@ -1363,6 +1363,19 @@ \previouspage qtee-customization.html \nextpage qtee-troubleshooting.html + \section1 \B2Q 3.1.1 + + \list + \li Release date: Aug 20, 2014 + \endlist + + \section2 Changes + \b {Fixed Bugs}: + \list + \li \l {Building Your Own Embedded Linux Image}: + fixed issues that caused the Yocto build process to fail. + \endlist + \section1 \B2Q 3.1.0 \list -- cgit v1.2.3 From 5a3e8d73b675a90cd6c48b94c0b226148857fa9f Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Tue, 19 Aug 2014 12:32:24 +0200 Subject: Doc: Bump version to 3.1.1 Change-Id: I630c3913befa54d5951c46425e4af0610ffe76af Reviewed-by: Samuli Piippo --- src/doc/config/b2qt.qdocconf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/doc/config/b2qt.qdocconf b/src/doc/config/b2qt.qdocconf index 28cb2d5..9928640 100644 --- a/src/doc/config/b2qt.qdocconf +++ b/src/doc/config/b2qt.qdocconf @@ -6,7 +6,7 @@ sourceencoding = UTF-8 project = QtEnterpriseEmbedded description = Qt Enterprise Embedded Documentation -version = 3.1.0 +version = 3.1.1 sourcedirs = ../src \ ../../imports/wifi @@ -23,7 +23,7 @@ indexes = $QT_INSTALL_DOCS/qtquick/qtquick.index \ qhp.projects = B2Qt qhp.B2Qt.file = b2qt.qhp -qhp.B2Qt.namespace = com.digia.b2qt.310 +qhp.B2Qt.namespace = com.digia.b2qt.311 qhp.B2Qt.virtualFolder = b2qt qhp.B2Qt.indexTitle = Qt Enterprise Embedded Documentation qhp.B2Qt.indexRoot = -- cgit v1.2.3 From 5bbd7f92e895d63439165fd0d3dfd5ee80bd6d7b Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Mon, 30 Jun 2014 11:37:43 +0200 Subject: Doc: split up the docs into multiple files Split up the monolithic b2qt.qdoc into separate documentation files, making future edits and maintenance easier. Device-specific instructions are created in devices/ subdirectory, and shared documentation (referenced in multiple places) are moved to shared/. Change-Id: I9425297781a1dda9c08a149b0870a0389c575560 Reviewed-by: Samuli Piippo Reviewed-by: Kalle Viironen --- src/doc/src/b2qt.qdoc | 1832 -------------------- src/doc/src/devices/qtee-bd-sl-imx6.qdoc | 110 ++ src/doc/src/devices/qtee-beagleboard-xm.qdoc | 69 + src/doc/src/devices/qtee-beaglebone-black.qdoc | 101 ++ src/doc/src/devices/qtee-imx53.qdoc | 70 + src/doc/src/devices/qtee-nexus-7.qdoc | 103 ++ src/doc/src/devices/qtee-raspberry-pi.qdoc | 69 + src/doc/src/devices/qtee-sabre-sd-imx6quad.qdoc | 69 + src/doc/src/devices/qtee-supported-devices.qdoc | 106 ++ src/doc/src/devices/qtee-toradex-apalis.qdoc | 80 + src/doc/src/qtee-building-running.qdoc | 134 ++ src/doc/src/qtee-changelog.qdoc | 239 +++ src/doc/src/qtee-custom-embedded-linux.qdoc | 160 ++ src/doc/src/qtee-customization.qdoc | 148 ++ src/doc/src/qtee-index.qdoc | 166 ++ src/doc/src/qtee-install-guide.qdoc | 149 ++ src/doc/src/qtee-licenses.qdoc | 68 + src/doc/src/qtee-qml-reference.qdoc | 34 + src/doc/src/qtee-troubleshooting.qdoc | 255 +++ src/doc/src/shared/b2qt-external-pages.qdoc | 63 + src/doc/src/shared/b2qt-post-install-setup.qdocinc | 132 ++ .../src/shared/detect-sd-card-device-name.qdocinc | 45 + 22 files changed, 2370 insertions(+), 1832 deletions(-) delete mode 100644 src/doc/src/b2qt.qdoc create mode 100644 src/doc/src/devices/qtee-bd-sl-imx6.qdoc create mode 100644 src/doc/src/devices/qtee-beagleboard-xm.qdoc create mode 100644 src/doc/src/devices/qtee-beaglebone-black.qdoc create mode 100644 src/doc/src/devices/qtee-imx53.qdoc create mode 100644 src/doc/src/devices/qtee-nexus-7.qdoc create mode 100644 src/doc/src/devices/qtee-raspberry-pi.qdoc create mode 100644 src/doc/src/devices/qtee-sabre-sd-imx6quad.qdoc create mode 100644 src/doc/src/devices/qtee-supported-devices.qdoc create mode 100644 src/doc/src/devices/qtee-toradex-apalis.qdoc create mode 100644 src/doc/src/qtee-building-running.qdoc create mode 100644 src/doc/src/qtee-changelog.qdoc create mode 100644 src/doc/src/qtee-custom-embedded-linux.qdoc create mode 100644 src/doc/src/qtee-customization.qdoc create mode 100644 src/doc/src/qtee-index.qdoc create mode 100644 src/doc/src/qtee-install-guide.qdoc create mode 100644 src/doc/src/qtee-licenses.qdoc create mode 100644 src/doc/src/qtee-qml-reference.qdoc create mode 100644 src/doc/src/qtee-troubleshooting.qdoc create mode 100644 src/doc/src/shared/b2qt-external-pages.qdoc create mode 100644 src/doc/src/shared/b2qt-post-install-setup.qdocinc create mode 100644 src/doc/src/shared/detect-sd-card-device-name.qdocinc diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc deleted file mode 100644 index ebb8b11..0000000 --- a/src/doc/src/b2qt.qdoc +++ /dev/null @@ -1,1832 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Digia Plc -** All rights reserved. -** For any questions to Digia, please use the contact form at -** http://qt.digia.com/ -** -** This file is part of Qt Enterprise Embedded. -** -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** the contact form at http://qt.digia.com/ -** -****************************************************************************/ - -/*! - \contentspage{index.html}{Qt Enterprise Embedded} - \page index.html - \nextpage qtee-overview.html - \title Qt Enterprise Embedded - - \SDK provides a fully-integrated solution to get you started immediately - with software development on your embedded device with a tailored user - experience for embedded Linux and embedded Android. \SDK contains the tools - you need for fast, easy, and fully-integrated embedded device application - development. It comes with \B2Q, a light-weight UI stack for embedded - systems, and the Qt Creator integrated development environment (IDE) with - preconfigured build targets for hardware platforms, as well as an emulator - for testing the applications. - - \e{\b{IMPORTANT:} Make sure to follow the \l{Installation Guide} - closely!} - - \section1 Contents - - \list - \li \l{About Qt Enterprise Embedded} - \li \l{Installation Guide} - \li \l{Supported Platforms} - \li \l{Preparing Hardware} - \list - \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2012/2013) (embedded Android)} - \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} - \li \l{Preparing SABRE SD i.MX6Quad}{SABRE SD i.MX6Quad (embedded Linux)} - \li \l{Preparing Toradex Apalis iMX6}{Toradex Apalis iMX6 (embedded Linux)} - \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} - \li \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} - \li \l{Preparing Raspberry Pi}{Raspberry Pi Model B (embedded Linux)} - \endlist - \li \l{Building and Running Embedded Applications} - \list - \li \l{Special Build & Run Options} - \endlist - \li \l{Customization} - \li \l{Building Your Own Embedded Linux Image} - \li \l{ChangeLog} - \li \l{Troubleshooting} - \li \l{License Information} - \endlist - - \section1 Reference Documentation - - \list - \li \l{Add-On QML Types} - \endlist -*/ - -/*! - \contentspage{index.html}{Qt Enterprise Embedded} - \page qtee-overview.html - \previouspage index.html - \nextpage qtee-installation-guide.html - - \title About Qt Enterprise Embedded - - \SDK has two main parts: - - \list - \li Development environment that is installed on a Linux development - desktop by using an online installer - \li \B2Q - \endlist - - \section1 About the Development Environment - - The development is done with the Qt Enterprise libraries and device - deployment can be done with one click directly from Qt Creator to a device - connected via USB. Alternatively, you can deploy the application locally - directly to the \B2Q Emulator that is running the full target software stack - as in the device. - - As with any Qt based application, the same application can be deployed to - desktop and mobile OS targets as well. - - \section1 About \B2Q - - \e{\b{\B2Q}} is a light-weight, Qt-optimized, full software stack for - embedded systems that is installed into the actual target device. This is - done by flashing the device's memory card or internal memory directly with a - pre-built image that comes with the development environment. - - \B2Q supports two different operating systems: - - \list - \li \b{\B2QA} where the software stack is based on the Android Kernel - (version 4.1 or higher) and selected middleware. It includes a lean - software stack where Qt/QML replaces the top Java graphical layer - and removes the Zygote process layer as well the Android home screen - enabling better and faster development where modern UIs are at the - forefront. - - \li \b{\B2QL} where the software stack is using the traditional embedded - Linux kernel built with the Yocto Poky reference system (Yocto 1.6 - \e Daisy release). The Embedded Linux variant is designed for great - customization possibilities. It contains only components required in - the embedded device, resulting in smaller image sizes while keeping - valuable development tools available. - \endlist - - Both versions have been tested and verified on a number of different - hardware configurations. \B2Q support is not limited to the devices used - as reference platforms, it can be made to run on a variety of hardware. - - \section1 About Qt - - \l{http://qt.digia.com/}{Qt} is a full development framework with tools - designed to streamline the creation of applications and user interfaces - for desktop, embedded, and mobile platforms. - - \list - \li \b{Qt Framework} - intuitive APIs for C++ - and CSS/JavaScript-like programming with - \b{Qt Quick} for rapid UI - creation - \li \b{Qt Creator IDE} - powerful cross-platform integrated development - environment, including UI designer tools and on-device debugging - \li \b{Tools and toolchains} - internationalization support, embedded - toolchains and more. - \endlist - - With Qt, you can reuse code efficiently to target multiple platforms - with one code base. The modular C++ class library and development tools - enable developers to create applications for one platform and easily - build and run to deploy also on other platforms. - - - \section1 \B2Q vs Qt for Android - - \image b2qt-vs-qt-for-android.png - - \e{\b{Qt for Android}} is a port of the Qt Framework to be used for application - development on the Android platform. Its purpose is to enable development - of applications that can run on Android devices. For developers writing - applications for the Android ecosystem, Qt for Android is the right choice. - - \b{\B2QA} tries to strip down the Android - stack to the bare minimum, relying only on basic Linux - features. The majority of the Android stack, such as - \e{Dalvik virtual machine} is not running in \B2Q, - resulting in faster startup times, lower memory consumption and - overall better performance. -*/ - -/*! - \page qtee-installation-guide.html - \title Installation Guide - \previouspage qtee-overview.html - \nextpage qtee-supported-platforms.html - - To successfully set up \SDK, you must closely follow the instructions in - this section and perform all the described tasks. - - In case of problems, see the \l{Troubleshooting} information and the - \l {Known Issues} in \SDK \l {product page}. - - \target Requirements for Development Host - \section1 Requirements for Development Host - - A 64-bit Linux system is required to install and use \SDK. Instructions - in this documentation assume Ubuntu Linux 64-bit 12.04 LTS or later. - Other Linux distributions may work, but have not been tested. C/C++ build - essentials must be installed. - - \target Installing 32-bit Support Libraries - \section1 1. Installing 32-bit Support Libraries - - Some of the build tools in \SDK are 32-bit programs, and on 64-bit - systems they require support libraries for running 32-bit code. To - install the required packages in recent versions of Ubuntu, use - the following command in a terminal: - - \badcode - sudo apt-get install g++-multilib zlib1g:i386 - \endcode - - For older Ubuntu versions such as 12.04, instead do: - - \badcode - sudo apt-get install g++-multilib ia32-libs - \endcode - - \target Installing VirtualBox - \section1 2. Installing VirtualBox - - The \B2Q emulator in \SDK relies on VirtualBox virtualization software. You can - download it from \l{https://www.virtualbox.org/wiki/Linux_Downloads} or - install it via distribution tools. - - If you have older Ubuntu versions such as 12.04 you have to install a newer - version of VirtualBox than your distribution does provide. - You have to add a foreign package source: - - \badcode - wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - - echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list - sudo apt-get update - \endcode - - Now install VirtualBox on your computer - \badcode - sudo apt-get install virtualbox-4.3 - \endcode - - To configure VirtualBox: - - \list 1 - \li Start the VirtualBox user interface. - \li Select \b{File > Preferences} > \b{Network} to open VirtualBox - network settings. - \li Create a new network named \e{vboxnet0} and edit its properties: - - \list 1 - \li Change the IPv4 address to \c{192.168.56.1} and the IPv4 network - mask to \c{255.255.255.0}. - \li In the \b{DCHP Server} tab, select the \b{Enable Server} check - box. - \li Change the server address to \c{192.168.56.1}. - \li Change both the lower and upper address bounds to - \c{192.168.56.101}. - \endlist - \endlist - - If a firewall is enabled on the development host, it needs to - allow TCP and UDP packets between your host and the virtual - machine. - - \section1 3. Installing \SDK - - \list 1 - - \li Download the binary \SDK installer, and make sure it is executable - by using one of the following methods: - - \list - \li Enter the \c{chmod +x } command. - \li Right-click the file, and select \b{Properties} > - \b{Permissions} > \b{Allow executing file as program}. - \endlist - - \li Run the installer and follow its instructions. - - \endlist - - \note Do not execute the installer as root user or with sudo. - - The installer will let you select a directory where \SDK will be - installed. In this documentation, the installation directory is referred - to as \b{\c{}}. The default installation directory is - \tt{~/Qt}. - - \target Installing Boot to Qt on Target Devices - \section1 4. Install \B2Q on Target Devices - - \e{If you target only the emulator, you can skip this step.} - - Before you can deploy and test your Qt application on hardware, you must - flash the target device with an image that contains the - \B2Q stack. The steps vary from device to device. Follow the instructions - specific to your device in \l {Preparing Hardware}. - - \section1 5. Setting up USB Access to Embedded Devices - - \e{If you target only the emulator, you can skip this step.} - - \include b2qt-post-install-setup.qdocinc setting up usb access - - \section1 6. Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit android linux - - You are now ready to start developing for your device. - For more information, see \l{Building and Running an Example}. -*/ - -/*! - \page qtee-preparing-hardware.html - \title Preparing Hardware - \previouspage qtee-supported-platforms.html - \nextpage qtee-building-and-running.html - - Before you can deploy and test your Qt application on hardware, you must - flash the target device with an image that contains the - \B2Q stack. These steps vary from device to device: - - \list - \li \l{Nexus 7 (2012/2013) (embedded Android)} - \li \l{BD-SL-i.MX6 (embedded Android and Linux)} - \li \l{SABRE SD i.MX6Quad (embedded Linux)} - \li \l{Toradex Apalis iMX6 (embedded Linux)} - \li \l{BeagleBone Black (embedded Android and Linux)} - \li \l{BeagleBoard-xM (embedded Linux)} - \li \l{Raspberry Pi Model B (embedded Linux)} - \endlist - - If you use only the emulator, you can skip this step - and continue straight to \l {Building and Running an Example}. -*/ - -/*! - \target Nexus 7 (2012/2013) (embedded Android) - \page qtee-preparing-hardware-nexus-7.html - \title Preparing Nexus 7 (2012/2013) - \previouspage qtee-installation-guide.html - \nextpage qtee-building-and-running.html - - Take the following steps to prepare a - \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2012/2013)} for - \B2Q. - - \note The installation process will wipe the device. Make sure to - backup any personal data. The device can later be restored to - factory state, see \l{nexus-factory-reset}{Troubleshooting}. - - The Nexus 7 must have the same Android main version (e.g. \c{4.2} - or \c{4.4}) as the generic \B2Q eAndroid stack that is to be - installed. If needed, you can update the Android version either by - using Android's upgrading tool, or by flashing a factory image of - the right version. See \l{nexus-factory-reset}{Troubleshooting}. - - \section1 Enabling Developer Mode - - In order to install the \B2Q stack into the Nexus 7, you need to - enable developer mode and USB debugging. This is only needed for - the first time install. - - \note If for some reason the device does not boot up normally, it - is also possible to install to a Nexus 7 started up in - \c{fastboot} (bootloader) mode (see - \l{nexus-factory-reset}{Troubleshooting}). Just skip this section - and add the \c{-fastboot} argument to the \c{deploy.sh} command - below. - - \list 1 - \li Power up the device. - \li Open the \b{Settings} app and select the \b{About tablet} item. - \li Press the \b{Build number} item seven times, until the message "You are now a developer!" appears. - - \li Back in the \b{Settings} menu, select \b{Developer options}. - \li Press the \b{USB debugging} item and confirm that you allow USB debugging. - \endlist - - You should now be able to establish USB connection to the device as follows. - - \section1 Setting up USB Access - - \include b2qt-post-install-setup.qdocinc setting up usb access - - \section1 Deploying the \B2Q Stack - - Depending on the edition of your Nexus 7 device, use one of the - commands below to install the \B2Q stack. Replace \c{X.Y} with the - device's Android version number, for example \c{4.2} or \c{4.4}. - - \note The deploy script will check that the connected Nexus device - is of the expected type and Android version, and abort the - installation if it is not. - - \list - \li \b{Nexus 7 (2013):} - \badcode - cd - ./Boot2Qt-3.x/generic-X.Y-eAndroid/images/nexus7v2/deploy.sh - \endcode - \li \b{Nexus 7 (2012):} - \badcode - cd - ./Boot2Qt-3.x/generic-X.Y-eAndroid/images/nexus7/deploy.sh - \endcode - \endlist - - During the installation, the device may ask for confirmation to be - unlocked. Press the power button once to confirm. - - The device will reboot during the process. Do not interact with it - or unplug it until the process is fully completed. - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit android - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target BeagleBoard-xM (embedded Linux) - \page qtee-preparing-hardware-beagleboard.html - \title Preparing BeagleBoard-xM - \previouspage qtee-installation-guide.html - \nextpage qtee-building-and-running.html - - Take the following steps to prepare a \l{http://beagleboard.org/hardware-xM} - {BeagleBoard-xM} for - \B2Q. - - \note BeagleBoard-xM is no longer supported in \SDK 3.0. It is still, - however, supported and tested under the previous 2.x versions. - - The image containing \B2Q stack for BeagleBoard-xM are included in \SDK, - ready to be copied to an SD card. - - \section1 Preparing an SD Card - - An SD card of at least 512 MB capacity is needed. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the \B2Q Image - - To write the image to the SD card, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, - - \badcode - cd - sudo Boot2Qt-3.x/beagleboard-eLinux/images/deploy.sh /dev/ - \endcode - - After the image has been deployed, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Setting up USB Access - - \include b2qt-post-install-setup.qdocinc setting up usb access - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target BD-SL-i.MX6 (embedded Android and Linux) - \page qtee-preparing-hardware-imx6.html - \title Preparing BD-SL-i.MX6 - \previouspage qtee-installation-guide.html - - Take the following steps to prepare a - \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} - {Boundary Devices BD-SL-i.MX6} (SABRE Lite) for \B2Q. - - \note It is important that you repeat the steps in this section after you - update \SDK. - - The images containing the \B2Q stack for BD-SL-i.MX6 are included - in \SDK, ready to be copied to an SD card. - - \section1 Preparing an SD Card - - For \B2QA, an SD card of at least 4 GB capacity is needed. For \B2QL, - a card of at least 512 MB capacity is sufficient. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the Android image - - \e{If installing} \B2QL, \e{you can skip this step and proceed to} - \l{Installing the Boot to Qt Image}. - - Download the package \e{imx6-jb-20130628.tar.gz} from - \l{http://boundarydevices.com/android-jellybean-on-i-mx6-with-no-disclaimers/}{Boundary - Devices Android Jellybean i.MX6 images} (registration required). - - Use the following commands to create an SD card containing the - downloaded image: - - \list 1 - \li Extract the downloaded package: - \badcode - ~/$ mkdir bd-android - ~/$ cd bd-android - ~/bd-android$ tar zxvf ~/Downloads/imx6-jb-20130628.tar.gz - \endcode - \li Run device/boundary/mksdcard.sh: - \badcode - ~/bd-android$ sudo device/boundary/mksdcard.sh /dev/ - ~/bd-android$ sync - \endcode - \endlist - - \section1 Installing the \B2Q Image - - Make sure you have the required tools installed in your development machine: - - \badcode - sudo apt-get install u-boot-tools - \endcode - - Then, upgrade the SD card with \B2Q. First, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, use one of the commands below, depending on whether you are developing - for embedded Android or Linux: - - \list - \li \b{\B2QA} - \badcode - cd - ./Boot2Qt-3.x/generic-4.2-eAndroid/images/iMX6/deploy.sh /dev/ - \endcode - \li \b{\B2QL} - \badcode - cd - sudo ./Boot2Qt-3.x/iMX6-eLinux/images/deploy.sh /dev/ - \endcode - \endlist - - After the installation is complete, insert the SD card, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Setting up USB Access - - \include b2qt-post-install-setup.qdocinc setting up usb access - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit android linux - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target SABRE SD i.MX6Quad (embedded Linux) - \page qtee-preparing-hardware-imx6sabresd.html - \title Preparing SABRE SD i.MX6Quad - \previouspage qtee-installation-guide.html - - Take the following steps to prepare a - \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD} - {Freescale SABRE SD i.MX6Quad} for \B2Q. - - \note It is important that you repeat the steps in this section after you - update \SDK. - - The images containing the \B2Q stack for SABRE SD i.MX6Quad are included - in \SDK, ready to be copied to an SD card. - - \section1 Preparing an SD Card - - An SD card of at least 512 MB capacity is sufficient. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the \B2Q Image - - To write the image to the SD card, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, - - \badcode - cd - sudo Boot2Qt-3.x/imx6qsabresd-eLinux/images/deploy.sh /dev/ - \endcode - - After the image has been deployed, insert the SD card, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Setting up USB Access - - \include b2qt-post-install-setup.qdocinc setting up usb access - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target Toradex Apalis iMX6 (embedded Linux) - \page qtee-preparing-hardware-apalis-imx6.html - \title Preparing Toradex Apalis iMX6 - \previouspage qtee-installation-guide.html - - Take the following steps to prepare a - \l{http://www.toradex.com/products/apalis-arm-computer-modules/freescale-imx-6-computer-module} - {Toradex Apalis iMX6} for \B2Q. - - \note It is important that you repeat the steps in this section after you - update \SDK. - - The images containing the \B2Q stack for Toradex Apalis iMX6 are included - in \SDK, ready to be copied to an SD card. - - \section1 Preparing an SD Card - - An SD card of at least 512 MB capacity is sufficient. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the \B2Q Image - - To write the image to the SD card, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, - - \badcode - cd - sudo Boot2Qt-3.x/apalis-imx6-eLinux/images/deploy.sh /dev/ - \endcode - - By default, the Toradex Apalis iMX6 boots from its internal eMMC. In order to boot from - the external SD card, the U-Boot environment needs to be updated. Connect a serial cable - to the device and enter into the U-Boot environment by pressing any key before the autoboot. - Enter following lines into U-Boot: - - \badcode - setenv bootcmd 'run sdboot ; echo sdboot failed ; run emmcboot ; echo ; echo emmcboot failed ; run nfsboot ; echo ; echo nfsboot failed ; usb start ;setenv stdout serial,vga ; setenv stdin serial,usbkbd' - setenv sdboot 'run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs};echo Booting from SD card in 4bit slot...; fatload mmc 2:1 10800000 uImage && bootm 10800000' - setenv sdargs 'ip=off root=/dev/mmcblk1p2 rw,noatime rootfstype=ext3 rootwait' - saveenv - \endcode - - New U-Boot command are now stored into the device, and you can start \B2Q. For more information - about the boot process on Toredex Apalis iMX6, see - \l{http://developer.toradex.com/software-resources/arm-family/linux/linux-booting}{Toradex Linux Booting} - - After the image has been deployed, insert the SD card, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring network device - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target Raspberry Pi Model B (embedded Linux) - \page qtee-preparing-hardware-rasberrypi.html - \title Preparing Raspberry Pi - \previouspage qtee-installation-guide.html - \nextpage qtee-building-and-running.html - - Take the following steps to prepare a \l{http://www.raspberrypi.org/} - {Raspberry Pi} for - \B2Q. - - \note Ethernet networking is required to connect the device to Qt Creator. - This means that the support is currently limited to Raspberry Pi Model B, which - includes an Ethernet port. - - \note It is important that you repeat the steps in this section after you - update \SDK. - - The image containing \B2Q stack for Raspberry Pi is included in the SDK, - ready to be copied to an SD card. - - \section1 Preparing an SD Card - - An SD card of at least 512 MB capacity is sufficient. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the \B2Q Image - - To write the image to the SD card, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, - - \badcode - cd - sudo Boot2Qt-3.x/raspberrypi-eLinux/images/deploy.sh /dev/ - \endcode - - After the image has been deployed, insert the SD card, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring network device - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target BeagleBone Black (embedded Android and Linux) - \page qtee-preparing-hardware-beaglebone.html - \title Preparing BeagleBone Black - \previouspage qtee-installation-guide.html - - Take the following steps to prepare a - \l{http://beagleboard.org/products/beaglebone%20black}{BeagleBone Black} for \B2Q. - - \note It is important that you repeat the steps in this section after you - update \SDK. - - The images containing the \B2Q stack for BeagleBone Black are included - in \SDK, ready to be copied to an SD card. - - \section1 Preparing an SD Card - - For \B2QA, an SD card of at least 2 GB capacity is needed. For \B2QL, - a card of at least 512 MB capacity is sufficient. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the Android image - - \e{If installing} \B2QL, \e{you can skip this step and proceed to} - \l{Installing the Boot to Qt Image}. - - Download the package \e{TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz} from - \l{http://downloads.ti.com/sitara_android/esd/TI_Android_DevKit/TI_Android_JB_4_2_2_DevKit_4_1_1/index_FDS.html} - {Texas Instruments} (search for \e {BeagleBone Black} in the list of download packages). - - Use the following commands to create an SD card containing the - downloaded image: - - \list 1 - \li Extract the downloaded package: - \badcode - ~$ tar zxvf ~/Downloads/TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz - \endcode - \li Run beagleboneblack/mkmmc-android.sh: - \badcode - ~$ cd beagleboneblack - ~/beagleboneblack$ sudo ./mkmmc-android.sh /dev/ - \endcode - \endlist - - \section1 Installing the \B2Q Image - - Then, upgrade the SD card with \B2Q. First, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, use one of the commands below, depending on whether you are developing - for embedded Android or Linux: - - \list - \li \b{\B2QA} - \badcode - cd - ./Boot2Qt-3.x/generic-4.2-eAndroid/images/beaglebone/deploy.sh - \endcode - \li \b{\B2QL} - \badcode - cd - sudo ./Boot2Qt-3.x/beaglebone-eLinux/images/deploy.sh /dev/ - \endcode - \endlist - - After the installation is complete, insert the SD card, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Setting up USB Access - - \include b2qt-post-install-setup.qdocinc setting up usb access - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring device kit android linux - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \target i.MX53 Quick Start Board (embedded Linux) - \page qtee-preparing-hardware-imx53qsb.html - \title Preparing i.MX53 Quick Start Board - \previouspage qtee-installation-guide.html - \nextpage qtee-building-and-running.html - - Take the following steps to prepare a - \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB} {i.MX53 Quick Start Board} - for \B2Q. - - \note Ethernet networking is required to connect the device to Qt Creator. - - \note It is important that you repeat the steps in this section after you - update \SDK. - - As i.MX53 Quick Start Board is not a \SDK reference board, there is no ready-made - image containing a \B2Q stack available. Instead, you must build it yourself using - the Yocto recipes and build scripts from the \B2Q source packages. - For more information, see \l{Building Your Own Embedded Linux Image}. - - \section1 Preparing an SD Card - - An SD card of at least 512 MB capacity is sufficient. - - \include detect-sd-card-device-name.qdocinc instructions - - \section1 Installing the \B2Q Image - - To write the image to the SD card, ensure that no partitions on the - SD card are mounted: - - \include detect-sd-card-device-name.qdocinc unmount - - Then, - - \badcode - cd - sudo deploy.sh /dev/ - \endcode - - After the image has been deployed, insert the SD card, power on the device and check that - the \B2Q welcome screen and/or demo appear. - - \section1 Configuring a Device Kit in Qt Creator - - \include b2qt-post-install-setup.qdocinc configuring network device - - You are now ready to start developing for your device. For more information, - see \l{Building and Running an Example}. -*/ - -/*! - \page qtee-building-and-running.html - \title Building and Running Embedded Applications - \previouspage qtee-preparing-hardware.html - \nextpage qtee-custom-build-steps.html - - \section1 Building and Running an Example - - After you complete the installation and configuration steps for \SDK and the - target devices, you can test the setup by creating a simple \l{Qt Quick} - application and running it on the device: - - \list 1 - \li Make sure that your device is powered on and connected to the - development host. - \li In Qt Creator, select \b File > \b {New File or Project} > - \b Applications > \b{Qt Quick Application} > \b{Choose}. - \li Choose a location for your new project. - \li In the \b{Qt Quick Component Set} dialog, select \b{Qt Quick 2.2} - or \b{Qt Quick 2.2 Boot2Qt}. - \li In the \b{Kit Selection} dialog, select the kits for your - devices. You can also select the emulator kit to test running the - project in the emulator. - \li Click \b{Next} and finish the wizard. - \li In \b Projects > \b {Build & Run}, select the correct kit for your - connected device. - \li To build and run the project, click \inlineimage qtcreator-run.png - \endlist - - \section1 Building and Running \B2Q Demos - - You can find the \B2Q demo applications in Qt Creator. - - \list 1 - \li Go to \b Welcome > \b Examples. - \li Select a \e Boot2Qt Qt version from the drop-down list. - \li Select a demo you want to build. - \li In \b Projects > \b {Build & Run}, select the correct kit for your - connected device or emulator. - \li To build and run the project, click \inlineimage qtcreator-run.png - \endlist - - \section1 Setting Up an Already Existing Project for Deployment - - New Qt Quick application projects generated by Qt Creator always have the correct - settings for deployment on the device or emulator. However, other projects need - some changes. This includes projects created using the - \b File > \b {New File or Project} > \b Applications > \b{Qt Widget Application} - template. - - As a general rule, application binaries and resources are deployed to the - \c {/data/user/qt/} directory. Therefore, the \c path variable for - the \c INSTALLS targets needs to be adjusted accordingly in .pro files. - - Open the .pro file and define the \c target.path and \c INSTALLS variables as follows: - - \badcode - target.path = /data/user/qt/$$TARGET - INSTALLS += target - \endcode - - Above, \c {$$TARGET} expands to the application target (executable) name. - - \section2 Deploying Application Resources - - If the application depends on additional resources (such as QML files and - images), you need to deploy them as well. For example: - - \badcode - appFiles.files = *.png qml - appFiles.path = /data/user/qt/$$TARGET - INSTALLS += appFiles - \endcode - - Above, all PNG images from the application source directory, and the entire - \e qml subdirectory are included in the deployment. - - Alternatively, the files used by the application can be stored into the application - executable using the \l{The Qt Resource System}{Qt resource system}. This way, simply - deploying the application binary is all that's required. -*/ - -/*! - \page qtee-custom-build-steps.html - \title Special Build & Run Options - \previouspage qtee-building-and-running.html - \nextpage qtee-customization.html - - Qt Creator allows you to execute custom commands on the embedded device connected - to the development host, both during the build process and during deployment of your - application. - - \section1 Custom Build Steps - - To add a custom step to be executed during the build: - - \list 1 - \li In Qt Creator, go to \b Projects > \b {Build Settings} - \li Select \b Build configuration for the \e {\B2Q} version you want to customize. - \li Click \b {Add Build Step} and select \b {Custom Remote Command (via adb shell)}. - \li Enter the command to be executed. - \endlist - - \section1 Custom Deployment Steps - - To add a custom step to be executed during deployment: - - \list 1 - \li In Qt Creator, go to \b Projects > \b {Run Settings} - \li Select \b Run configuration for the \e {\B2Q} version you want to customize. - \li Click \b {Add Deploy Step} and select \b {Custom Remote Command (via adb shell)}. - \li Enter the command to be executed. - \endlist - - \sa {Booting to a Custom Application} -*/ - -/*! - \page qtee-customization.html - \title Customization - \previouspage qtee-building-and-running.html - \nextpage qtee-custom-embedded-linux-image.html - - \section1 Environment and Input - - By default, the basic environment variables and startup options of - \B2Q applications are set in the file \c - {/system/bin/appcontroller.conf} in embedded Android devices and - in \c{/etc/appcontroller.conf} in embedded Linux devices. - - You can customize this file if you target a hardware device that - has other input devices than the ones that the \B2Q stack is configured - for by default. - - On some devices, the root file system (where this file - resides) is mounted read-only at boot time. To allow modification, - remount it read-write by entering the following command: - \badcode - /Tools/b2qt/adb remount - \endcode - - In the \c{appcontroller.conf} file, the input devices are - specified by the lines similar to these: - \badcode - env=QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0 - \endcode - - Usually, you do not need to change this setting. USB input devices, such as - keyboards and mice, are automatically recognized. The mouse pointer is shown - automatically if a mouse is connected. - - However, hotplugging may not work, which means that the input - devices, such as a keyboard and mouse, have to be connected at boot - time. - - On some devices, for example the BD-SL-i.MX6, the touchscreen device is - specified explicitly with \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. This is - necessary because the automatic device discovery would fail to find the - touchscreen. - - \section1 Booting to a Custom Application - - After you have deployed your own application to the device, it will be - launched on boot, instead of the \B2Q demo launcher. To prevent this - behavior, remove or disable the \b {Make this application the default one} - step from the \b{Run Settings} for your project in the Qt Creator \b Projects - mode. - - To remove your application from the default startup, use the following - command: - \badcode - /Tools/b2qt/adb shell appcontroller --remove-default - \endcode - - \section1 Switching Between Portrait and Landscape Views - - Depending on device screen dimensions and application requirements, it might - be desirable - to change the default view orientation. The following example shows how to rotate your - application in QML. - - \qml - import QtQuick 2.2 - - Item { - id: root - width: 800 - height: 1280 - // Container element for rotating - Rectangle { - id: main - // Swap the width and height of the root item - width: root.height - height: root.width - anchors.centerIn: parent - // Rotate 90 degrees clockwise around transformOrigin - rotation: 90 - // The rotated content - Text { - text: qsTr("Hello World") - anchors.centerIn: parent - } - MouseArea { - anchors.fill: parent - onClicked: { - Qt.quit(); - } - } - } - } - \endqml - - \section1 Disabling Screen Composer on Embedded Android - - By default, the \B2Q stack uses Android's screen composer, \e - Surfaceflinger. It is required for Qt Multimedia functionality, - i.e. video playback and camera. If that functionality is not - required, Surfaceflinger may be disabled. This can in some - situations improve performance. - - \list 1 - \li Edit \c {/system/bin/appcontroller.conf} to set the value of - the environment variable \c QT_QPA_EGLFS_NO_SURFACEFLINGER to \c - 1 instead of \c 0. - \li Disable the startup of \c surfaceflinger at boot-up. Either - change \c /init.rc, or simply rename the \c - {/system/bin/surfaceflinger} executable. - \endlist - - \section1 Using Network Connection for ADB - - By default, \B2Q uses USB cable for communication between device and Qt Creator. - On \B2QL, you can change the device to use ethernet network connection for the - communication. To enable network connection, you need to modify file - \c /etc/default/adbd located on the devices, and change value of \c USE_ETHERNET - to \c 'yes'. This can also be done with \c adb, while the device is still - connected via USB. - - \badcode - /Tools/b2qt/adb shell sed -i -e 's/USE_ETHERNET=no/USE_ETHERNET=yes/' /etc/default/adbd - \endcode - - \note You need to restart the device for this change to take effect. - - \include b2qt-post-install-setup.qdocinc configuring network device -*/ - -/*! - \page qtee-custom-embedded-linux-image.html - \title Building Your Own Embedded Linux Image - \previouspage qtee-customization.html - \nextpage qtee-changelog.html - - \B2QL is built using the tools and resources from the \l {Yocto Project}, - and is based on Yocto's reference distribution (\e Poky). You can - use the same tools to build custom \B2Q images, and have control over - which packages are included in the build and how the software stack - is configured. - - \section2 Note About Support Services for Yocto Tools - - By default, Digia will only provide customer support for the Yocto - recipes on the reference platforms, as delivered with \SDK, and - setting up the development environment for them. Receiving support - for any other configuration requires a separate service agreement - between a customer and Digia. - - \section1 Requirements - - You should be familiar with the Yocto tools and the concept of - \e {recipes}. For more information, see Yocto Project - \l{https://www.yoctoproject.org/documentation/current}{documentation}. - - To get started, you need the following: - - \list - \li Install the \B2Q \e source packages. You can - find these by running the \e MaintenanceTool application - located in the \SDK installation directory and selecting - \e {Package Manager}. The \e {Yocto meta layer} package - contains the additional recipes required to make the image - compatible with \B2Q. - \li Install the dependencies for the Yocto tools. In Ubuntu, - the following packages are required: - \badcode - sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm - \endcode - \endlist - - \section1 Setting Up Yocto Build Environment - - Run the setup script that initializes the Yocto environment: - - \badcode - cd - /Boot2Qt-3.x/sources/b2qt-yocto-meta/b2qt-init-build-env . - \endcode - - \section1 Building the Image and Toolchain - - After the Yocto environment is set up, you need to configure the - build environment for your target device. Using Raspberry Pi as - an example: - - \badcode - export TEMPLATECONF=meta-b2qt/conf - export MACHINE=raspberrypi - source poky/oe-init-build-env build-raspberrypi - \endcode - - The following table lists the \c MACHINE values for our reference platforms: - - \table - \header - \li Board - \li MACHINE value - \row - \li Raspberry Pi - \li raspberrypi - \row - \li BeagleBone Black - \li beaglebone - \row - \li Boundary Devices BD-SL-i.MX6 - \li nitrogen6x - \row - \li Freescale SABRE SD i.MX6Quad - \li imx6qsabresd - \row - \li Toradex Apalis iMX6 - \li apalis-imx6 - \row - \li Emulator - \li emulator - \endtable - - Yocto recipes for \B2QL have two main targets to build: The target image, - and the external toolchain that is used for building the Qt framework and - applications. - - \badcode - bitbake b2qt-embedded-image - bitbake meta-toolchain-b2qt-embedded-sdk - \endcode - - The target rootfs image is located in the \c /tmp/deploy/images//b2qt-embedded-image-.tar.gz, - and the new toolchain is in \c /tmp/deploy/sdk/b2qt-eglibc-x86_64-meta-toolchain-b2qt-embedded-sdk--toolchain-1.6.sh - - \note The generated target image does not yet include Qt libraries, - you need to build Qt and add it into the image yourself. - - \section1 Building Qt and Addons - - \e {Build scripts} source package contains scripts that can be used to - build Qt and all additional Qt addons that are part of \B2QL image. - To setup build environment for your target hardware, run the initialization - script. Using Raspberry Pi as an example: - - \badcode - /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/init_build_env.sh /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/config.raspberrypi - \endcode - - \note You can use the same build directory for Qt and the Yocto image. - The toolchain and the target image are then used from the Yocto build directory. - - You can use following scripts to build different parts of the \B2Q stack. - - \badcode - /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_qt.sh - /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_extras.sh - /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_image.sh - \endcode - - After \e {embedded-linux/build_image.sh} has finished, you can flash the device with - the updated image located in the build folder. - - \section1 Configuring Qt Creator - - After you have built the \B2Q stack, you must also set up Qt Creator in order to start - developing for your device. The following script does this for you. - - \badcode - /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/setup_qtcreator.sh - \endcode - - This will set up a new kit in Qt Creator, using the toolchain and Qt from - your build directory. The new kit is visible under \b Tools > \b Options - > \b {Build & Run} > \b Kits. -*/ - -/*! - \page qtee-supported-platforms.html - \title Supported Platforms - \previouspage qtee-installation-guide.html - \nextpage qtee-preparing-hardware.html - - \section1 Supported Reference Devices - - The \B2Q stack can be made to run on a variety of hardware. For \SDK license - holders, tooling is provided to customize the contents of the stack as well - as to take it into desired production hardware. For more information on how - to customize the stack for embedded Linux, see - \l {Building Your Own Embedded Linux Image}. - - Approximate minimal hardware requirements for running \B2Q are: - \list - \li 256 MB of RAM - \li 500 MHz CPU, 1 GHz preferred for 60-FPS velvet-smooth UI - \li OpenGL ES 2.0 support - \endlist - - \B2QA requires hardware that has support for the Android operating - system, version 4.2 or later. - - \B2Q software stack is provided pre-built, tested and supported for the - following hardware: - \list - \li \l{http://www.google.com/nexus/7/specs/} - {Google/Asus Nexus 7 (2012 and 2013 models)} - \li \l{http://beagleboard.org/products/beaglebone%20black} - {BeagleBone Black} - \li \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD} - {Freescale SABRE SD i.MX6Quad} - \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} - {BD-SL-i.MX6} - \li \l{http://www.toradex.com/products/apalis-arm-computer-modules/freescale-imx-6-computer-module} - {Toradex Apalis iMX6} - \li \l{http://www.raspberrypi.org/faqs} - {Raspberry Pi Model B} - \endlist - - \section2 Legacy Reference Devices - - The following devices are no longer tested or supported by the latest - release of \SDK. - - \list - \li \l{http://beagleboard.org/hardware-xM} - {BeagleBoard-xM} - \list - \li Starting from \SDK 3.0 release, BeagleBoard-xM is no longer - tested and supported. It is, however, still tested and supported - in the earlier 2.x releases. - \endlist - \endlist - - \section1 Supported Development Environment - - The development environment supported by \SDK is Ubuntu Linux 64-bit (12.04 LTS or later). - - \sa {Requirements for Development Host} - -*/ - -/*! - \page qtee-licenses.html - \title License Information - \previouspage qtee-troubleshooting.html - \nextpage qtee-qml-reference.html - - \section1 Licensing - - \SDK is licensed under the Qt Enterprise commercial license. For more information, - see \l {http://qt.digia.com/licensing}. Evaluation licenses are also available, - see \l {product page}{\SDK} on qt.digia.com. - - \section1 3rd Party Software Licenses - - The third-party licenses used in \SDK are listed in the file - \c {/Licenses/ThirdPartySoftware_Listing.txt}. - - \section1 Embedded Android Images - - The embedded Android platform is built from the \e {Android Open Source Project}, - source code available at \l {http://android.googlesource.com/}. The open - source licenses and notices are collected into the file - \c {/etc/NOTICE.html.gz} in the target images. - - \section1 Embedded Linux Images - - The embedded Linux platform is built using tools from the \l {Yocto Project}. - The open source licenses and notices are located in - \list - \li \c /usr/share/common-licenses/license.manifest - \li \c /usr/share/licenses/* - \endlist - - \section1 Android GNU C++ Run-time Licensing - - The Android platform does not provide a full implementation of the C++ run-time. Instead, - apps that depend on features such as STL, exceptions, or RTTI, must include an additional - native run-time library that provides the features they need. - - \B2QA uses the GNU libstdc++ library distributed as part of the \e {Android Open Source Project}. - This library is included in the images for \B2QA, and will be loaded by the application - on start-up to meet the run-time requirements of Qt. - - The GNU C++ run-time is licensed under the - \l{http://gcc.gnu.org/onlinedocs/libstdc++/manual/appendix_gpl.html}{GNU General Public License version 3} with - an exception which grants permission for run-time linking and usage of the library by an application which - would otherwise violate the terms of the main license. For more information about this exception, see - \l{http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html}{the official license page}. -*/ - -/*! - \page qtee-changelog.html - \title ChangeLog - \previouspage qtee-customization.html - \nextpage qtee-troubleshooting.html - - \section1 \B2Q 3.1.1 - - \list - \li Release date: Aug 20, 2014 - \endlist - - \section2 Changes - \b {Fixed Bugs}: - \list - \li \l {Building Your Own Embedded Linux Image}: - fixed issues that caused the Yocto build process to fail. - \endlist - - \section1 \B2Q 3.1.0 - - \list - \li Release date: July 3, 2014 - \endlist - - \section2 Changes - \b {New Features}: - \list - \li Boot to Qt stack was updated to use Qt 5.3.1 on embedded Android - and Linux. - \li Added a generic solution for injecting \B2QA stack into devices - running Android version 4.2.2 or later. - \li \l {Preparing Toradex Apalis iMX6}{Toradex Apalis iMX6} was added - as a reference device. - \li \l {Qt Data Visualization} was updated to version 1.1. - \li \l {Qt Charts} was updated to version 1.4. - \li \l {Qt Virtual Keyboard} was update to version 1.1. - \endlist - - \b {Improvements}: - \list - \li Added translucent widget windows support to eglfs. - \li Changed \e appcontroller to print status messages to stdout. - \li Switched to use symbolic links for GL-streaming library, instead - of having multiple copies. - \li Fixed C++ debugging issues and improved performance on embedded - Android. - \li Updated the content of \e About \e {\SDK} demo. - \li Improved Sensors and Media Player examples. - \endlist - - \b {Fixed Bugs}: - \list - \li Fixed WiFi not working on Nexus 7 (2013). - \li BeagleBone Black: Fixed C++ debugging failing on embedded Android. - \li BeagleBone Black: embedded Linux did not include USB serial drivers. - \li Fixed JavaScript crash on ARM (QTBUG-39289). - \li Removed useless warnings about setMask when using Qt Widgets. - \endlist - - \section1 \B2Q 3.0.0 - - \list - \li Release date: May 22, 2014 - \endlist - - \section2 Changes - \b {New Features}: - \list - \li \B2Q stack was updated to use Qt 5.3 on embedded Android and Linux - \li \l {Qt Virtual Keyboard} was updated to version 1.0 - \li \l {Qt Data Visualization} demo was added - \li Qt WebEngine 0.9 support (including WebEngine demo) was added for - embedded Android and Linux. However, the Emulator target is - currently not supported - \li \l {Qt Quick Compiler} (Technology Preview) was added to the \B2Q stack - \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2013)} was added as a - reference device for embedded Android - \li \l{Preparing SABRE SD i.MX6Quad}{Freescale SABRE SD i.MX6Quad} was - added as a reference device for embedded Linux - \li WiFi networking support and configuration were implemented on - embedded Linux - \endlist - - \b {Improvements}: - \list - \li Emulator warnings were improved - \li Embedded Linux: Moved to use Yocto 1.6 (Daisy) - \li Debug symbols were moved to a separately installable package - \li Presentation of \B2Q demos in Qt Creator was improved - \endlist - - \b {Fixed Bugs}: - \list - \li Build scripts: Incorrect path was fixed - \endlist - -\section1 \B2Q 2.1.0 - - \list - \li Release date: Apr. 15, 2014 - \endlist - - \section2 Changes - \b {New Features}: - \list - \li \l {Qt Data Visualization} version 1.0 was added to the \B2Q stack - \li \l {Enginio Data Storage} version 1.0 was added to the \B2Q stack - \li \l {Qt Quick Enterprise Controls} was updated to version 1.1 - \li \l {Qt Serial Port} support was added to the \B2Q stack - \li Bluetooth on \B2QL: Support for bluez was added - \li Added support for building \B2QL for i.MX53 from sources - \endlist - - \b {Improvements}: - \list - \li Qt Creator plugin for \B2Q now supports incremental deployment, custom adb commands - \li Adb now easily usable over IP on all devices on \B2QL - \li Update new content to device without erasing it first on \B2QL - \li All images now contain generally used CA certificates - \li Toolchains updated to support Qt WebEngine - \li Documentation was added for QML types provided by the \l {WiFi Module} - \li Emulator: Debug logging functionality was added - \li Various documentation improvements - \li \SDK installer error handling was improved - \li 3rd party license information was updated - \li Launcher Settings application UI was improved - \endlist - - \b {Fixed Bugs}: - \list - \li \B2QL: OpenSSL Heartbleed bug was fixed - \li \B2QA: Qt debug symbols were missing - \li QEglFSCompositor::render() using incorrect vertices for full-screen quad, resulting in bad texture sampling - \li Use damaged rect instead of full texture upload for raster windows - \li Emulator: Crash when launching multiple instances - \li Emulator: State transitions were not working properly - \li \B2QA emulator: C++ debugging was fixed - \li Emulators: Qt Quick applications don't exit on Qt.quit() - \li Banding was visible on Raspberry Pi - \li Qt Creator: adb failed to connect - \li QtCreator: Different Virtual Machiness with the same OS were not handled properly - \li Qt Creator: Tabstop order in device wizard was incorrect - \li Qt 5 Everywhere demo: not all internet radio station were working - \endlist - - \b {Fixed Known Issues}: - \list - \li Embedded Android: Arabic Numbers Not Always Rendered Correctly - \endlist - - \section1 \B2Q 2.0.0 - - \list - \li Release date: Feb. 25, 2014 - \endlist - - \section2 Changes - \b {New Features}: - \list - \li \B2Q stack was updated to use Qt 5.2.1 on embedded Android and Linux - \li Building your own \B2Q embedded Linux stack was enabled - \li Emulator graphics performance and quality was improved (GL-streaming) - \li BeagleBone Black was added as a reference device - \li \l {Qt Virtual Keyboard} was integrated into \B2Q - \li \l {Qt Quick Enterprise Controls} was added to the \B2Q stack - \li \l {Qt Charts} was added to the \B2Q stack - \li \B2Q source code was made available via online installer - \li WiFi networking support/configuration were implemented on embedded Android - \li Ethernet connectivity was enabled on embedded Android - \endlist - - \b {Improvements}: - \list - \li Updated GDB for embedded Android toolchain - \li Enterprise demos (Charts, Enterprise Controls) were added - \li Embedded Linux: Moved to use Yocto 1.5 (Dora) - \li Demos available as examples in Qt Creator - \li Embedded Android emulator updated to Android 4.2.2 - \endlist - - \b {Fixed Bugs}: - \list - \li Embedded Android emulator: Missing Mesa headers - \li Embedded Linux emulator: Black screen in camera demo - \li Emulator tries to load host plugins - \li Sensors not working in emulators - \li Empty \c HOME environment variable in processes launched by appcontroller - \li Embedded Android emulator: C++ debugging fails - \li Qt add-ons not installed to host - \endlist - - \b {Fixed Known Issues}: - \list - \li Qt SQL: QML LocalStorage Fails to Connect to Database on Embedded Android - \li Qt XML Patterns: Module not Available on embedded Android - \li Qt Multimedia: Audio is Muted on Nexus 7 - \li Unnecessary Warnings Displayed by the Installer - \li Virtual Keyboard: Backspace Removes Two Characters - \endlist - - \section1 \B2Q 1.0.1 - - \list - \li Release date: Dec. 5, 2013 - \endlist - - \section2 Changes - \list - \li Emulator: Remote control widget version shown together with emulator version - \li Emulator: Mouse events are sent instead of touch events - \li Emulator: Raster window support added - \li Emulator: emulatorproxyd shows its version on startup - \li Emulator: Detect some network problems - \li Emulator: Fixed issues related to startup - \li Emulator: Updated source code license headers - \li Emulator: Show all VirtualBox errors - \li Emulator: Video playback support on embedded Linux - \endlist -*/ - -/*! - \page qtee-troubleshooting.html - \title Troubleshooting - \previouspage qtee-changelog.html - \nextpage qtee-licenses.html - - \note An updated version of this information may be available in Digia customer portal, - see \l {Known Issues} in \SDK \l {product page}. - - \section1 General Issues - - \section2 I have problems deploying/launching the application in Qt Creator - - Check that the device is properly connected to the development host via USB - or Ethernet (depending on the device). - See \l{Connectivity Issues}. - - If using the emulator, see \l{Installing VirtualBox}. - - \section2 I have problems deploying/launching a Qt or Qt Quick example application - - Because of a technical peculiarity in \c{qmake}, it is not - possible to get correct deployment setup for any application that - is placed inside a Qt source code tree. - - The workaround is to copy the example sources to a location - outside the Qt source tree, and open this copy of the example - application instead. - - \section2 I have problems launching or running applications on hardware after updating the SDK - - Remember to repeat the process of updating also your device with the latest - version of \B2Q. See \l{Installing Boot to Qt on Target Devices}. - - \section2 Booting BD-SL-i.MX6 stops with \e {6x_bootscript not found} error - - Check the U-Boot version number. It should start with either \c{2012} or \c{2013}. - If it is \c{2009.xx}, an upgrade of the bootloader is required. For more - information, see: - - \list - \li \l http://boundarydevices.com/6q_bootscript/ - \li \l http://boundarydevices.com/switching-u-boot-versions-on-i-mx6/ - \endlist - - \target nexus-factory-reset - \section2 How do I restore my Nexus 7 to factory settings? - - Go to \l{https://developers.google.com/android/nexus/images} and - download the correct file for your device. Unpack it, and then enter the - following commands: - - \badcode - /Tools/b2qt/adb reboot bootloader - /Tools/b2qt/fastboot -w update .zip - \endcode - - \section2 How do I shut down the Nexus 7? - - If the \B2Q demo launcher is running, start the \b {Launcher - Settings} app, and select \b {Shut Down} to power off the device. - - Otherwise, make sure the Nexus 7 is connected to the development host, and run - the following command in a terminal: - \badcode - /Tools/b2qt/adb shell reboot -p - \endcode - - If the device is in the fastboot mode, use the volume button to display the - \b {Power off} option and press the power button to power off the device. - - Alternatively, press and hold the power button for 10 - seconds. This will force a reboot. - - \section2 How do I get HDMI output working properly on BeagleBone Black? - - Depending on the HDMI monitor, the cable, and the build variant of - the BeagleBone Black device, it may not be able to drive an HDMI display in a - stable way; the image may disappear or stutter. These issues are not caused by - the \B2Q stack. - - More details and possible solutions can be found - \l {http://www.elinux.org/Beagleboard:BeagleBoneBlack_HDMI}{here}. - - \section2 Trying to build for the emulator target fails with error message \e{make: i686-android-linux-g++: Command not found} - - You need to install support libraries in order to run 32-bit programs in a - 64-bit Linux operating system. - - See \l{Installing 32-bit Support Libraries}. - - \section2 Something crashed! - - The following command shows the system log: - \badcode - /Tools/b2qt/adb logcat - \endcode - - \note When terminating an application from Qt Creator, you may see the - message \e {Terminating application. Error running process: Process crashed}. - This is normal and does not indicate a problem in your code; a SIGTERM - signal is sent to the application, and Qt interprets it as a crash. - - \section2 Mouse or touch input does not work - - See \l{Customization}. - - \note Hotplugging does not currently work, and therefore, any input device - must be present at boot time to be recognized. - - \section2 Application stops with \e{EGLFS: OpenGL windows cannot be mixed with others.} - - OpenGL and Qt Quick 2 applications can only have one - fullscreen window existing at a time. Trying to create another - OpenGL window, or trying to mix an OpenGL window with a raster one - will display the above message and abort the application. - - \note For raster windows (software rendered content based on QWidget or - QPainter), there is no such limitation. - - \section2 I cannot edit the contents of appcontroller.conf on the device - - The file system where this file is located may be mounted as read-only. - - See \l{Customization}. - - \section2 C++11 features do not work on Android - - To enable C++11 features in the compiler, add \e{CONFIG += c++11} to the .pro file. - On Embedded Linux this will be enough because there the toolchain contains a more - recent version of gcc (4.8.x). On Embedded Android however the toolchain is based on - gcc 4.6. This offers limited support for C++11 and Qt's own C++11 support is disabled, - meaning that adding \e{c++11} to \e{CONFIG} will have no effect. There is still a - possibility however to manually enable some level of C++11 support just for the - application, by adding \e{QMAKE_CXXFLAGS += -std=c++11} to the .pro file. - - \section1 Connectivity Issues - \section2 I cannot connect to my hardware device via USB - - See \l{5. Setting up USB Access to Embedded Devices}. - - \section2 adb fails with "error: more than one device and emulator" - - You have to specify which Android device you want \c{adb} to talk - to, using adb's \c{-s } option. Use the following - command to find to see the serial number of the connected - devices: - - \badcode - /Tools/b2qt/adb devices - \endcode - - \section2 The emulator cannot connect to the Internet - - By default, the VirtualBox is configured to use a host-only network, so external - connections do not work in the emulator. - - You may be able to enable Internet connectivity with another - virtual network adapter in NAT mode by adapting - \l{http://askubuntu.com/questions/293816/in-virtualbox-how-do-i-set-up-host-only-virtual-machines-that-can-access-the-in}{these} - instructions. - - \section2 The emulator is stuck in \e{Waiting for display data} or fails to start properly - - Check the output of the following command: - - \badcode - /Tools/b2qt/adb devices - \endcode - - If the emulator (192.168.56.101) is not listed there, try connecting to it: - - \badcode - /Tools/b2qt/adb connect 192.168.56.101 - \endcode - - If the emulator is already listed, try disconnecting it: - \badcode - /Tools/b2qt/adb disconnect 192.168.56.101 - \endcode - - And then close the emulator and retry. - - \section2 What are the user and password to access my embedded Linux device? - - Embedded Linux devices can be accessed using user \c{root} and an empty password. - - \section2 No sound on Embedded Android devices - - When connecting a headphone or speakers while the device is running, the - audio may not be properly routed to the correct output. As a workaround, - connect the headphone or speakers before turning on the device. - - \section2 Qt WebEngine libraries cannot be found when targeting the emulator - - Qt WebEngine is not currently available for the emulators, neither eLinux - nor eAndroid. This is planned to be addressed in a later release. - - \section2 Widget-based web view is not available - - The Qt WebEngine APIs are available only for Qt Quick 2 based applications at the moment. - The QWidget-based equivalents, like QWebEngineView, will become supported in future releases. - For the time being, use the WebEngineView QML element. - - \section2 Qt Quick Compiler fails on the emulators - - The Qt Quick Compiler is not yet functional in the emulator environments, and projects - are likely fail to build or run with compilation enabled. Support for the emulators - will be added in a later release. - - \section2 QML debugging not functional when using Qt Quick Compiler - - QML debugging is not fully functional when the Qt Quick Compiler is enabled. Support - for this will be added in a later release. - - - \section2 Boundary Devices Android Jellybean i.MX6 image deploying issues - - On some hosts running the mksdcard.sh script results in the following failure messages: - - \badcode - Cannot find device with major:minor 8:20: No such device - cp: target ‘/media/BOOT/’ is not a directory - \endcode - - This means that flashing an sdcard has failed, even if the scripts seemingly runs to the end. - The issue can be worked around by adding "sleep" call before "udisks --mount" loop (search at - the end of the script): - - \badcode - sleep 2 - for n in 1 2 4 ; do - udisks --mount ${diskname}${prefix}${n} - done - \endcode - -*/ - -/*! - \page qtee-qml-reference.html - \title Add-On QML Types - \previouspage qtee-licenses.html - - The following QML modules are included in the \B2Q stack and provide - additional QML types that are useful in an embedded application: - - \annotatedlist qtee-qmlmodules - - \section1 WiFi Module - - \annotatedlist wifi-qmltypes -*/ diff --git a/src/doc/src/devices/qtee-bd-sl-imx6.qdoc b/src/doc/src/devices/qtee-bd-sl-imx6.qdoc new file mode 100644 index 0000000..700375c --- /dev/null +++ b/src/doc/src/devices/qtee-bd-sl-imx6.qdoc @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target BD-SL-i.MX6 (embedded Android and Linux) + \page qtee-preparing-hardware-imx6.html + \title Preparing BD-SL-i.MX6 + \previouspage qtee-installation-guide.html + + Take the following steps to prepare a + \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} + {Boundary Devices BD-SL-i.MX6} (SABRE Lite) for \B2Q. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The images containing the \B2Q stack for BD-SL-i.MX6 are included + in \SDK, ready to be copied to an SD card. + + \section1 Preparing an SD Card + + For \B2QA, an SD card of at least 4 GB capacity is needed. For \B2QL, + a card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the Android image + + \e{If installing} \B2QL, \e{you can skip this step and proceed to} + \l{Installing the Boot to Qt Image}. + + Download the package \e{imx6-jb-20130628.tar.gz} from + \l{http://boundarydevices.com/android-jellybean-on-i-mx6-with-no-disclaimers/}{Boundary + Devices Android Jellybean i.MX6 images} (registration required). + + Use the following commands to create an SD card containing the + downloaded image: + + \list 1 + \li Extract the downloaded package: + \badcode + ~/$ mkdir bd-android + ~/$ cd bd-android + ~/bd-android$ tar zxvf ~/Downloads/imx6-jb-20130628.tar.gz + \endcode + \li Run device/boundary/mksdcard.sh: + \badcode + ~/bd-android$ sudo device/boundary/mksdcard.sh /dev/ + ~/bd-android$ sync + \endcode + \endlist + + \section1 Installing the \B2Q Image + + Make sure you have the required tools installed in your development machine: + + \badcode + sudo apt-get install u-boot-tools + \endcode + + Then, upgrade the SD card with \B2Q. First, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, use one of the commands below, depending on whether you are developing + for embedded Android or Linux: + + \list + \li \b{\B2QA} + \badcode + cd + ./Boot2Qt-3.x/generic-4.2-eAndroid/images/iMX6/deploy.sh /dev/ + \endcode + \li \b{\B2QL} + \badcode + cd + sudo ./Boot2Qt-3.x/iMX6-eLinux/images/deploy.sh /dev/ + \endcode + \endlist + + After the installation is complete, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit android linux + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/devices/qtee-beagleboard-xm.qdoc b/src/doc/src/devices/qtee-beagleboard-xm.qdoc new file mode 100644 index 0000000..fae5725 --- /dev/null +++ b/src/doc/src/devices/qtee-beagleboard-xm.qdoc @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target BeagleBoard-xM (embedded Linux) + \page qtee-preparing-hardware-beagleboard.html + \title Preparing BeagleBoard-xM + \previouspage qtee-installation-guide.html + \nextpage qtee-building-and-running.html + + Take the following steps to prepare a \l{http://beagleboard.org/hardware-xM} + {BeagleBoard-xM} for + \B2Q. + + \note BeagleBoard-xM is no longer supported in \SDK 3.0. It is still, + however, supported and tested under the previous 2.x versions. + + The image containing \B2Q stack for BeagleBoard-xM are included in \SDK, + ready to be copied to an SD card. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is needed. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo Boot2Qt-3.x/beagleboard-eLinux/images/deploy.sh /dev/ + \endcode + + After the image has been deployed, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/devices/qtee-beaglebone-black.qdoc b/src/doc/src/devices/qtee-beaglebone-black.qdoc new file mode 100644 index 0000000..360eb6d --- /dev/null +++ b/src/doc/src/devices/qtee-beaglebone-black.qdoc @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target BeagleBone Black (embedded Android and Linux) + \page qtee-preparing-hardware-beaglebone.html + \title Preparing BeagleBone Black + \previouspage qtee-installation-guide.html + + Take the following steps to prepare a + \l{http://beagleboard.org/products/beaglebone%20black}{BeagleBone Black} for \B2Q. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The images containing the \B2Q stack for BeagleBone Black are included + in \SDK, ready to be copied to an SD card. + + \section1 Preparing an SD Card + + For \B2QA, an SD card of at least 2 GB capacity is needed. For \B2QL, + a card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the Android image + + \e{If installing} \B2QL, \e{you can skip this step and proceed to} + \l{Installing the Boot to Qt Image}. + + Download the package \e{TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz} from + \l{http://downloads.ti.com/sitara_android/esd/TI_Android_DevKit/TI_Android_JB_4_2_2_DevKit_4_1_1/index_FDS.html} + {Texas Instruments} (search for \e {BeagleBone Black} in the list of download packages). + + Use the following commands to create an SD card containing the + downloaded image: + + \list 1 + \li Extract the downloaded package: + \badcode + ~$ tar zxvf ~/Downloads/TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz + \endcode + \li Run beagleboneblack/mkmmc-android.sh: + \badcode + ~$ cd beagleboneblack + ~/beagleboneblack$ sudo ./mkmmc-android.sh /dev/ + \endcode + \endlist + + \section1 Installing the \B2Q Image + + Then, upgrade the SD card with \B2Q. First, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, use one of the commands below, depending on whether you are developing + for embedded Android or Linux: + + \list + \li \b{\B2QA} + \badcode + cd + ./Boot2Qt-3.x/generic-4.2-eAndroid/images/beaglebone/deploy.sh + \endcode + \li \b{\B2QL} + \badcode + cd + sudo ./Boot2Qt-3.x/beaglebone-eLinux/images/deploy.sh /dev/ + \endcode + \endlist + + After the installation is complete, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit android linux + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/devices/qtee-imx53.qdoc b/src/doc/src/devices/qtee-imx53.qdoc new file mode 100644 index 0000000..96dcbea --- /dev/null +++ b/src/doc/src/devices/qtee-imx53.qdoc @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target i.MX53 Quick Start Board (embedded Linux) + \page qtee-preparing-hardware-imx53qsb.html + \title Preparing i.MX53 Quick Start Board + \previouspage qtee-installation-guide.html + \nextpage qtee-building-and-running.html + + Take the following steps to prepare a + \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB} {i.MX53 Quick Start Board} + for \B2Q. + + \note Ethernet networking is required to connect the device to Qt Creator. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + As i.MX53 Quick Start Board is not a \SDK reference board, there is no ready-made + image containing a \B2Q stack available. Instead, you must build it yourself using + the Yocto recipes and build scripts from the \B2Q source packages. + For more information, see \l{Building Your Own Embedded Linux Image}. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo deploy.sh /dev/ + \endcode + + After the image has been deployed, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring network device + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ + diff --git a/src/doc/src/devices/qtee-nexus-7.qdoc b/src/doc/src/devices/qtee-nexus-7.qdoc new file mode 100644 index 0000000..c461fb6 --- /dev/null +++ b/src/doc/src/devices/qtee-nexus-7.qdoc @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target Nexus 7 (2012/2013) (embedded Android) + \page qtee-preparing-hardware-nexus-7.html + \title Preparing Nexus 7 (2012/2013) + \previouspage qtee-installation-guide.html + \nextpage qtee-building-and-running.html + + Take the following steps to prepare a + \l{http://www.google.com/nexus/7/specs/}{Nexus 7 (2012/2013)} for + \B2Q. + + \note The installation process will wipe the device. Make sure to + backup any personal data. The device can later be restored to + factory state, see \l{nexus-factory-reset}{Troubleshooting}. + + The Nexus 7 must have the same Android main version (e.g. \c{4.2} + or \c{4.4}) as the generic \B2Q eAndroid stack that is to be + installed. If needed, you can update the Android version either by + using Android's upgrading tool, or by flashing a factory image of + the right version. See \l{nexus-factory-reset}{Troubleshooting}. + + \section1 Enabling Developer Mode + + In order to install the \B2Q stack into the Nexus 7, you need to + enable developer mode and USB debugging. This is only needed for + the first time install. + + \note If for some reason the device does not boot up normally, it + is also possible to install to a Nexus 7 started up in + \c{fastboot} (bootloader) mode (see + \l{nexus-factory-reset}{Troubleshooting}). Just skip this section + and add the \c{-fastboot} argument to the \c{deploy.sh} command + below. + + \list 1 + \li Power up the device. + \li Open the \b{Settings} app and select the \b{About tablet} item. + \li Press the \b{Build number} item seven times, until the message "You are now a developer!" appears. + + \li Back in the \b{Settings} menu, select \b{Developer options}. + \li Press the \b{USB debugging} item and confirm that you allow USB debugging. + \endlist + + You should now be able to establish USB connection to the device as follows. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Deploying the \B2Q Stack + + Depending on the edition of your Nexus 7 device, use one of the + commands below to install the \B2Q stack. Replace \c{X.Y} with the + device's Android version number, for example \c{4.2} or \c{4.4}. + + \note The deploy script will check that the connected Nexus device + is of the expected type and Android version, and abort the + installation if it is not. + + \list + \li \b{Nexus 7 (2013):} + \badcode + cd + ./Boot2Qt-3.x/generic-X.Y-eAndroid/images/nexus7v2/deploy.sh + \endcode + \li \b{Nexus 7 (2012):} + \badcode + cd + ./Boot2Qt-3.x/generic-X.Y-eAndroid/images/nexus7/deploy.sh + \endcode + \endlist + + During the installation, the device may ask for confirmation to be + unlocked. Press the power button once to confirm. + + The device will reboot during the process. Do not interact with it + or unplug it until the process is fully completed. + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit android + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/devices/qtee-raspberry-pi.qdoc b/src/doc/src/devices/qtee-raspberry-pi.qdoc new file mode 100644 index 0000000..9a30dce --- /dev/null +++ b/src/doc/src/devices/qtee-raspberry-pi.qdoc @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target Raspberry Pi Model B (embedded Linux) + \page qtee-preparing-hardware-rasberrypi.html + \title Preparing Raspberry Pi + \previouspage qtee-installation-guide.html + \nextpage qtee-building-and-running.html + + Take the following steps to prepare a \l{http://www.raspberrypi.org/} + {Raspberry Pi} for + \B2Q. + + \note Ethernet networking is required to connect the device to Qt Creator. + This means that the support is currently limited to Raspberry Pi Model B, which + includes an Ethernet port. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The image containing \B2Q stack for Raspberry Pi is included in the SDK, + ready to be copied to an SD card. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo Boot2Qt-3.x/raspberrypi-eLinux/images/deploy.sh /dev/ + \endcode + + After the image has been deployed, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring network device + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/devices/qtee-sabre-sd-imx6quad.qdoc b/src/doc/src/devices/qtee-sabre-sd-imx6quad.qdoc new file mode 100644 index 0000000..15898c7 --- /dev/null +++ b/src/doc/src/devices/qtee-sabre-sd-imx6quad.qdoc @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target SABRE SD i.MX6Quad (embedded Linux) + \page qtee-preparing-hardware-imx6sabresd.html + \title Preparing SABRE SD i.MX6Quad + \previouspage qtee-installation-guide.html + + Take the following steps to prepare a + \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD} + {Freescale SABRE SD i.MX6Quad} for \B2Q. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The images containing the \B2Q stack for SABRE SD i.MX6Quad are included + in \SDK, ready to be copied to an SD card. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo Boot2Qt-3.x/imx6qsabresd-eLinux/images/deploy.sh /dev/ + \endcode + + After the image has been deployed, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Setting up USB Access + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ + diff --git a/src/doc/src/devices/qtee-supported-devices.qdoc b/src/doc/src/devices/qtee-supported-devices.qdoc new file mode 100644 index 0000000..ad33aa9 --- /dev/null +++ b/src/doc/src/devices/qtee-supported-devices.qdoc @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-preparing-hardware.html + \title Preparing Hardware + \previouspage qtee-supported-platforms.html + \nextpage qtee-building-and-running.html + + Before you can deploy and test your Qt application on hardware, you must + flash the target device with an image that contains the + \B2Q stack. These steps vary from device to device: + + \list + \li \l{Nexus 7 (2012/2013) (embedded Android)} + \li \l{BD-SL-i.MX6 (embedded Android and Linux)} + \li \l{SABRE SD i.MX6Quad (embedded Linux)} + \li \l{Toradex Apalis iMX6 (embedded Linux)} + \li \l{BeagleBone Black (embedded Android and Linux)} + \li \l{BeagleBoard-xM (embedded Linux)} + \li \l{Raspberry Pi Model B (embedded Linux)} + \endlist + + If you use only the emulator, you can skip this step + and continue straight to \l {Building and Running an Example}. +*/ + +/*! + \page qtee-supported-platforms.html + \title Supported Platforms + \previouspage qtee-installation-guide.html + \nextpage qtee-preparing-hardware.html + + \section1 Supported Reference Devices + + The \B2Q stack can be made to run on a variety of hardware. For \SDK license + holders, tooling is provided to customize the contents of the stack as well + as to take it into desired production hardware. For more information on how + to customize the stack for embedded Linux, see + \l {Building Your Own Embedded Linux Image}. + + Approximate minimal hardware requirements for running \B2Q are: + \list + \li 256 MB of RAM + \li 500 MHz CPU, 1 GHz preferred for 60-FPS velvet-smooth UI + \li OpenGL ES 2.0 support + \endlist + + \B2QA requires hardware that has support for the Android operating + system, version 4.2 or later. + + \B2Q software stack is provided pre-built, tested and supported for the + following hardware: + \list + \li \l{http://www.google.com/nexus/7/specs/} + {Google/Asus Nexus 7 (2012 and 2013 models)} + \li \l{http://beagleboard.org/products/beaglebone%20black} + {BeagleBone Black} + \li \l{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD} + {Freescale SABRE SD i.MX6Quad} + \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/} + {BD-SL-i.MX6} + \li \l{http://www.toradex.com/products/apalis-arm-computer-modules/freescale-imx-6-computer-module} + {Toradex Apalis iMX6} + \li \l{http://www.raspberrypi.org/faqs} + {Raspberry Pi Model B} + \endlist + + \section2 Legacy Reference Devices + + The following devices are no longer tested or supported by the latest + release of \SDK. + + \list + \li \l{http://beagleboard.org/hardware-xM} + {BeagleBoard-xM} + \list + \li Starting from \SDK 3.0 release, BeagleBoard-xM is no longer + tested and supported. It is, however, still tested and supported + in the earlier 2.x releases. + \endlist + \endlist + + \section1 Supported Development Environment + + The development environment supported by \SDK is Ubuntu Linux 64-bit (12.04 LTS or later). + + \sa {Requirements for Development Host} + +*/ diff --git a/src/doc/src/devices/qtee-toradex-apalis.qdoc b/src/doc/src/devices/qtee-toradex-apalis.qdoc new file mode 100644 index 0000000..4af35c3 --- /dev/null +++ b/src/doc/src/devices/qtee-toradex-apalis.qdoc @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \target Toradex Apalis iMX6 (embedded Linux) + \page qtee-preparing-hardware-apalis-imx6.html + \title Preparing Toradex Apalis iMX6 + \previouspage qtee-installation-guide.html + + Take the following steps to prepare a + \l{http://www.toradex.com/products/apalis-arm-computer-modules/freescale-imx-6-computer-module} + {Toradex Apalis iMX6} for \B2Q. + + \note It is important that you repeat the steps in this section after you + update \SDK. + + The images containing the \B2Q stack for Toradex Apalis iMX6 are included + in \SDK, ready to be copied to an SD card. + + \section1 Preparing an SD Card + + An SD card of at least 512 MB capacity is sufficient. + + \include detect-sd-card-device-name.qdocinc instructions + + \section1 Installing the \B2Q Image + + To write the image to the SD card, ensure that no partitions on the + SD card are mounted: + + \include detect-sd-card-device-name.qdocinc unmount + + Then, + + \badcode + cd + sudo Boot2Qt-3.x/apalis-imx6-eLinux/images/deploy.sh /dev/ + \endcode + + By default, the Toradex Apalis iMX6 boots from its internal eMMC. In order to boot from + the external SD card, the U-Boot environment needs to be updated. Connect a serial cable + to the device and enter into the U-Boot environment by pressing any key before the autoboot. + Enter following lines into U-Boot: + + \badcode + setenv bootcmd 'run sdboot ; echo sdboot failed ; run emmcboot ; echo ; echo emmcboot failed ; run nfsboot ; echo ; echo nfsboot failed ; usb start ;setenv stdout serial,vga ; setenv stdin serial,usbkbd' + setenv sdboot 'run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs};echo Booting from SD card in 4bit slot...; fatload mmc 2:1 10800000 uImage && bootm 10800000' + setenv sdargs 'ip=off root=/dev/mmcblk1p2 rw,noatime rootfstype=ext3 rootwait' + saveenv + \endcode + + New U-Boot command are now stored into the device, and you can start \B2Q. For more information + about the boot process on Toredex Apalis iMX6, see + \l{http://developer.toradex.com/software-resources/arm-family/linux/linux-booting}{Toradex Linux Booting} + + After the image has been deployed, insert the SD card, power on the device and check that + the \B2Q welcome screen and/or demo appear. + + \section1 Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring network device + + You are now ready to start developing for your device. For more information, + see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/qtee-building-running.qdoc b/src/doc/src/qtee-building-running.qdoc new file mode 100644 index 0000000..7dbcb04 --- /dev/null +++ b/src/doc/src/qtee-building-running.qdoc @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \page qtee-building-and-running.html + \title Building and Running Embedded Applications + \previouspage qtee-preparing-hardware.html + \nextpage qtee-custom-build-steps.html + + \section1 Building and Running an Example + + After you complete the installation and configuration steps for \SDK and the + target devices, you can test the setup by creating a simple \l{Qt Quick} + application and running it on the device: + + \list 1 + \li Make sure that your device is powered on and connected to the + development host. + \li In Qt Creator, select \b File > \b {New File or Project} > + \b Applications > \b{Qt Quick Application} > \b{Choose}. + \li Choose a location for your new project. + \li In the \b{Qt Quick Component Set} dialog, select \b{Qt Quick 2.2} + or \b{Qt Quick 2.2 Boot2Qt}. + \li In the \b{Kit Selection} dialog, select the kits for your + devices. You can also select the emulator kit to test running the + project in the emulator. + \li Click \b{Next} and finish the wizard. + \li In \b Projects > \b {Build & Run}, select the correct kit for your + connected device. + \li To build and run the project, click \inlineimage qtcreator-run.png + \endlist + + \section1 Building and Running \B2Q Demos + + You can find the \B2Q demo applications in Qt Creator. + + \list 1 + \li Go to \b Welcome > \b Examples. + \li Select a \e Boot2Qt Qt version from the drop-down list. + \li Select a demo you want to build. + \li In \b Projects > \b {Build & Run}, select the correct kit for your + connected device or emulator. + \li To build and run the project, click \inlineimage qtcreator-run.png + \endlist + + \section1 Setting Up an Already Existing Project for Deployment + + New Qt Quick application projects generated by Qt Creator always have the correct + settings for deployment on the device or emulator. However, other projects need + some changes. This includes projects created using the + \b File > \b {New File or Project} > \b Applications > \b{Qt Widget Application} + template. + + As a general rule, application binaries and resources are deployed to the + \c {/data/user/qt/} directory. Therefore, the \c path variable for + the \c INSTALLS targets needs to be adjusted accordingly in .pro files. + + Open the .pro file and define the \c target.path and \c INSTALLS variables as follows: + + \badcode + target.path = /data/user/qt/$$TARGET + INSTALLS += target + \endcode + + Above, \c {$$TARGET} expands to the application target (executable) name. + + \section2 Deploying Application Resources + + If the application depends on additional resources (such as QML files and + images), you need to deploy them as well. For example: + + \badcode + appFiles.files = *.png qml + appFiles.path = /data/user/qt/$$TARGET + INSTALLS += appFiles + \endcode + + Above, all PNG images from the application source directory, and the entire + \e qml subdirectory are included in the deployment. + + Alternatively, the files used by the application can be stored into the application + executable using the \l{The Qt Resource System}{Qt resource system}. This way, simply + deploying the application binary is all that's required. +*/ + +/*! + \page qtee-custom-build-steps.html + \title Special Build & Run Options + \previouspage qtee-building-and-running.html + \nextpage qtee-customization.html + + Qt Creator allows you to execute custom commands on the embedded device connected + to the development host, both during the build process and during deployment of your + application. + + \section1 Custom Build Steps + + To add a custom step to be executed during the build: + + \list 1 + \li In Qt Creator, go to \b Projects > \b {Build Settings} + \li Select \b Build configuration for the \e {\B2Q} version you want to customize. + \li Click \b {Add Build Step} and select \b {Custom Remote Command (via adb shell)}. + \li Enter the command to be executed. + \endlist + + \section1 Custom Deployment Steps + + To add a custom step to be executed during deployment: + + \list 1 + \li In Qt Creator, go to \b Projects > \b {Run Settings} + \li Select \b Run configuration for the \e {\B2Q} version you want to customize. + \li Click \b {Add Deploy Step} and select \b {Custom Remote Command (via adb shell)}. + \li Enter the command to be executed. + \endlist + + \sa {Booting to a Custom Application} +*/ diff --git a/src/doc/src/qtee-changelog.qdoc b/src/doc/src/qtee-changelog.qdoc new file mode 100644 index 0000000..494c285 --- /dev/null +++ b/src/doc/src/qtee-changelog.qdoc @@ -0,0 +1,239 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-changelog.html + \title ChangeLog + \previouspage qtee-customization.html + \nextpage qtee-troubleshooting.html + + \section1 \B2Q 3.1.1 + + \list + \li Release date: Aug 20, 2014 + \endlist + + \section2 Changes + \b {Fixed Bugs}: + \list + \li \l {Building Your Own Embedded Linux Image}: + fixed issues that caused the Yocto build process to fail. + \endlist + + \section1 \B2Q 3.1.0 + + \list + \li Release date: July 3, 2014 + \endlist + + \section2 Changes + \b {New Features}: + \list + \li Boot to Qt stack was updated to use Qt 5.3.1 on embedded Android + and Linux. + \li Added a generic solution for injecting \B2QA stack into devices + running Android version 4.2.2 or later. + \li \l {Preparing Toradex Apalis iMX6}{Toradex Apalis iMX6} was added + as a reference device. + \li \l {Qt Data Visualization} was updated to version 1.1. + \li \l {Qt Charts} was updated to version 1.4. + \li \l {Qt Virtual Keyboard} was update to version 1.1. + \endlist + + \b {Improvements}: + \list + \li Added translucent widget windows support to eglfs. + \li Changed \e appcontroller to print status messages to stdout. + \li Switched to use symbolic links for GL-streaming library, instead + of having multiple copies. + \li Fixed C++ debugging issues and improved performance on embedded + Android. + \li Updated the content of \e About \e {\SDK} demo. + \li Improved Sensors and Media Player examples. + \endlist + + \b {Fixed Bugs}: + \list + \li Fixed WiFi not working on Nexus 7 (2013). + \li BeagleBone Black: Fixed C++ debugging failing on embedded Android. + \li BeagleBone Black: embedded Linux did not include USB serial drivers. + \li Fixed JavaScript crash on ARM (QTBUG-39289). + \li Removed useless warnings about setMask when using Qt Widgets. + \endlist + + \section1 \B2Q 3.0.0 + + \list + \li Release date: May 22, 2014 + \endlist + + \section2 Changes + \b {New Features}: + \list + \li \B2Q stack was updated to use Qt 5.3 on embedded Android and Linux + \li \l {Qt Virtual Keyboard} was updated to version 1.0 + \li \l {Qt Data Visualization} demo was added + \li Qt WebEngine 0.9 support (including WebEngine demo) was added for + embedded Android and Linux. However, the Emulator target is + currently not supported + \li \l {Qt Quick Compiler} (Technology Preview) was added to the \B2Q stack + \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2013)} was added as a + reference device for embedded Android + \li \l{Preparing SABRE SD i.MX6Quad}{Freescale SABRE SD i.MX6Quad} was + added as a reference device for embedded Linux + \li WiFi networking support and configuration were implemented on + embedded Linux + \endlist + + \b {Improvements}: + \list + \li Emulator warnings were improved + \li Embedded Linux: Moved to use Yocto 1.6 (Daisy) + \li Debug symbols were moved to a separately installable package + \li Presentation of \B2Q demos in Qt Creator was improved + \endlist + + \b {Fixed Bugs}: + \list + \li Build scripts: Incorrect path was fixed + \endlist + +\section1 \B2Q 2.1.0 + + \list + \li Release date: Apr. 15, 2014 + \endlist + + \section2 Changes + \b {New Features}: + \list + \li \l {Qt Data Visualization} version 1.0 was added to the \B2Q stack + \li \l {Enginio Data Storage} version 1.0 was added to the \B2Q stack + \li \l {Qt Quick Enterprise Controls} was updated to version 1.1 + \li \l {Qt Serial Port} support was added to the \B2Q stack + \li Bluetooth on \B2QL: Support for bluez was added + \li Added support for building \B2QL for i.MX53 from sources + \endlist + + \b {Improvements}: + \list + \li Qt Creator plugin for \B2Q now supports incremental deployment, custom adb commands + \li Adb now easily usable over IP on all devices on \B2QL + \li Update new content to device without erasing it first on \B2QL + \li All images now contain generally used CA certificates + \li Toolchains updated to support Qt WebEngine + \li Documentation was added for QML types provided by the \l {WiFi Module} + \li Emulator: Debug logging functionality was added + \li Various documentation improvements + \li \SDK installer error handling was improved + \li 3rd party license information was updated + \li Launcher Settings application UI was improved + \endlist + + \b {Fixed Bugs}: + \list + \li \B2QL: OpenSSL Heartbleed bug was fixed + \li \B2QA: Qt debug symbols were missing + \li QEglFSCompositor::render() using incorrect vertices for full-screen quad, resulting in bad texture sampling + \li Use damaged rect instead of full texture upload for raster windows + \li Emulator: Crash when launching multiple instances + \li Emulator: State transitions were not working properly + \li \B2QA emulator: C++ debugging was fixed + \li Emulators: Qt Quick applications don't exit on Qt.quit() + \li Banding was visible on Raspberry Pi + \li Qt Creator: adb failed to connect + \li QtCreator: Different Virtual Machiness with the same OS were not handled properly + \li Qt Creator: Tabstop order in device wizard was incorrect + \li Qt 5 Everywhere demo: not all internet radio station were working + \endlist + + \b {Fixed Known Issues}: + \list + \li Embedded Android: Arabic Numbers Not Always Rendered Correctly + \endlist + + \section1 \B2Q 2.0.0 + + \list + \li Release date: Feb. 25, 2014 + \endlist + + \section2 Changes + \b {New Features}: + \list + \li \B2Q stack was updated to use Qt 5.2.1 on embedded Android and Linux + \li Building your own \B2Q embedded Linux stack was enabled + \li Emulator graphics performance and quality was improved (GL-streaming) + \li BeagleBone Black was added as a reference device + \li \l {Qt Virtual Keyboard} was integrated into \B2Q + \li \l {Qt Quick Enterprise Controls} was added to the \B2Q stack + \li \l {Qt Charts} was added to the \B2Q stack + \li \B2Q source code was made available via online installer + \li WiFi networking support/configuration were implemented on embedded Android + \li Ethernet connectivity was enabled on embedded Android + \endlist + + \b {Improvements}: + \list + \li Updated GDB for embedded Android toolchain + \li Enterprise demos (Charts, Enterprise Controls) were added + \li Embedded Linux: Moved to use Yocto 1.5 (Dora) + \li Demos available as examples in Qt Creator + \li Embedded Android emulator updated to Android 4.2.2 + \endlist + + \b {Fixed Bugs}: + \list + \li Embedded Android emulator: Missing Mesa headers + \li Embedded Linux emulator: Black screen in camera demo + \li Emulator tries to load host plugins + \li Sensors not working in emulators + \li Empty \c HOME environment variable in processes launched by appcontroller + \li Embedded Android emulator: C++ debugging fails + \li Qt add-ons not installed to host + \endlist + + \b {Fixed Known Issues}: + \list + \li Qt SQL: QML LocalStorage Fails to Connect to Database on Embedded Android + \li Qt XML Patterns: Module not Available on embedded Android + \li Qt Multimedia: Audio is Muted on Nexus 7 + \li Unnecessary Warnings Displayed by the Installer + \li Virtual Keyboard: Backspace Removes Two Characters + \endlist + + \section1 \B2Q 1.0.1 + + \list + \li Release date: Dec. 5, 2013 + \endlist + + \section2 Changes + \list + \li Emulator: Remote control widget version shown together with emulator version + \li Emulator: Mouse events are sent instead of touch events + \li Emulator: Raster window support added + \li Emulator: emulatorproxyd shows its version on startup + \li Emulator: Detect some network problems + \li Emulator: Fixed issues related to startup + \li Emulator: Updated source code license headers + \li Emulator: Show all VirtualBox errors + \li Emulator: Video playback support on embedded Linux + \endlist +*/ diff --git a/src/doc/src/qtee-custom-embedded-linux.qdoc b/src/doc/src/qtee-custom-embedded-linux.qdoc new file mode 100644 index 0000000..36484d2 --- /dev/null +++ b/src/doc/src/qtee-custom-embedded-linux.qdoc @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! + \page qtee-custom-embedded-linux-image.html + \title Building Your Own Embedded Linux Image + \previouspage qtee-customization.html + \nextpage qtee-changelog.html + + \B2QL is built using the tools and resources from the \l {Yocto Project}, + and is based on Yocto's reference distribution (\e Poky). You can + use the same tools to build custom \B2Q images, and have control over + which packages are included in the build and how the software stack + is configured. + + \section2 Note About Support Services for Yocto Tools + + By default, Digia will only provide customer support for the Yocto + recipes on the reference platforms, as delivered with \SDK, and + setting up the development environment for them. Receiving support + for any other configuration requires a separate service agreement + between a customer and Digia. + + \section1 Requirements + + You should be familiar with the Yocto tools and the concept of + \e {recipes}. For more information, see Yocto Project + \l{https://www.yoctoproject.org/documentation/current}{documentation}. + + To get started, you need the following: + + \list + \li Install the \B2Q \e source packages. You can + find these by running the \e MaintenanceTool application + located in the \SDK installation directory and selecting + \e {Package Manager}. The \e {Yocto meta layer} package + contains the additional recipes required to make the image + compatible with \B2Q. + \li Install the dependencies for the Yocto tools. In Ubuntu, + the following packages are required: + \badcode + sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm + \endcode + \endlist + + \section1 Setting Up Yocto Build Environment + + Run the setup script that initializes the Yocto environment: + + \badcode + cd + /Boot2Qt-3.x/sources/b2qt-yocto-meta/b2qt-init-build-env . + \endcode + + \section1 Building the Image and Toolchain + + After the Yocto environment is set up, you need to configure the + build environment for your target device. Using Raspberry Pi as + an example: + + \badcode + export TEMPLATECONF=meta-b2qt/conf + export MACHINE=raspberrypi + source poky/oe-init-build-env build-raspberrypi + \endcode + + The following table lists the \c MACHINE values for our reference platforms: + + \table + \header + \li Board + \li MACHINE value + \row + \li Raspberry Pi + \li raspberrypi + \row + \li BeagleBone Black + \li beaglebone + \row + \li Boundary Devices BD-SL-i.MX6 + \li nitrogen6x + \row + \li Freescale SABRE SD i.MX6Quad + \li imx6qsabresd + \row + \li Toradex Apalis iMX6 + \li apalis-imx6 + \row + \li Emulator + \li emulator + \endtable + + Yocto recipes for \B2QL have two main targets to build: The target image, + and the external toolchain that is used for building the Qt framework and + applications. + + \badcode + bitbake b2qt-embedded-image + bitbake meta-toolchain-b2qt-embedded-sdk + \endcode + + The target rootfs image is located in the \c /tmp/deploy/images//b2qt-embedded-image-.tar.gz, + and the new toolchain is in \c /tmp/deploy/sdk/b2qt-eglibc-x86_64-meta-toolchain-b2qt-embedded-sdk--toolchain-1.6.sh + + \note The generated target image does not yet include Qt libraries, + you need to build Qt and add it into the image yourself. + + \section1 Building Qt and Addons + + \e {Build scripts} source package contains scripts that can be used to + build Qt and all additional Qt addons that are part of \B2QL image. + To setup build environment for your target hardware, run the initialization + script. Using Raspberry Pi as an example: + + \badcode + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/init_build_env.sh /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/config.raspberrypi + \endcode + + \note You can use the same build directory for Qt and the Yocto image. + The toolchain and the target image are then used from the Yocto build directory. + + You can use following scripts to build different parts of the \B2Q stack. + + \badcode + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_qt.sh + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_extras.sh + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_image.sh + \endcode + + After \e {embedded-linux/build_image.sh} has finished, you can flash the device with + the updated image located in the build folder. + + \section1 Configuring Qt Creator + + After you have built the \B2Q stack, you must also set up Qt Creator in order to start + developing for your device. The following script does this for you. + + \badcode + /Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/setup_qtcreator.sh + \endcode + + This will set up a new kit in Qt Creator, using the toolchain and Qt from + your build directory. The new kit is visible under \b Tools > \b Options + > \b {Build & Run} > \b Kits. +*/ diff --git a/src/doc/src/qtee-customization.qdoc b/src/doc/src/qtee-customization.qdoc new file mode 100644 index 0000000..ec6e7c8 --- /dev/null +++ b/src/doc/src/qtee-customization.qdoc @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-customization.html + \title Customization + \previouspage qtee-building-and-running.html + \nextpage qtee-custom-embedded-linux-image.html + + \section1 Environment and Input + + By default, the basic environment variables and startup options of + \B2Q applications are set in the file \c + {/system/bin/appcontroller.conf} in embedded Android devices and + in \c{/etc/appcontroller.conf} in embedded Linux devices. + + You can customize this file if you target a hardware device that + has other input devices than the ones that the \B2Q stack is configured + for by default. + + On some devices, the root file system (where this file + resides) is mounted read-only at boot time. To allow modification, + remount it read-write by entering the following command: + \badcode + /Tools/b2qt/adb remount + \endcode + + In the \c{appcontroller.conf} file, the input devices are + specified by the lines similar to these: + \badcode + env=QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0 + \endcode + + Usually, you do not need to change this setting. USB input devices, such as + keyboards and mice, are automatically recognized. The mouse pointer is shown + automatically if a mouse is connected. + + However, hotplugging may not work, which means that the input + devices, such as a keyboard and mouse, have to be connected at boot + time. + + On some devices, for example the BD-SL-i.MX6, the touchscreen device is + specified explicitly with \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. This is + necessary because the automatic device discovery would fail to find the + touchscreen. + + \section1 Booting to a Custom Application + + After you have deployed your own application to the device, it will be + launched on boot, instead of the \B2Q demo launcher. To prevent this + behavior, remove or disable the \b {Make this application the default one} + step from the \b{Run Settings} for your project in the Qt Creator \b Projects + mode. + + To remove your application from the default startup, use the following + command: + \badcode + /Tools/b2qt/adb shell appcontroller --remove-default + \endcode + + \section1 Switching Between Portrait and Landscape Views + + Depending on device screen dimensions and application requirements, it might + be desirable + to change the default view orientation. The following example shows how to rotate your + application in QML. + + \qml + import QtQuick 2.2 + + Item { + id: root + width: 800 + height: 1280 + // Container element for rotating + Rectangle { + id: main + // Swap the width and height of the root item + width: root.height + height: root.width + anchors.centerIn: parent + // Rotate 90 degrees clockwise around transformOrigin + rotation: 90 + // The rotated content + Text { + text: qsTr("Hello World") + anchors.centerIn: parent + } + MouseArea { + anchors.fill: parent + onClicked: { + Qt.quit(); + } + } + } + } + \endqml + + \section1 Disabling Screen Composer on Embedded Android + + By default, the \B2Q stack uses Android's screen composer, \e + Surfaceflinger. It is required for Qt Multimedia functionality, + i.e. video playback and camera. If that functionality is not + required, Surfaceflinger may be disabled. This can in some + situations improve performance. + + \list 1 + \li Edit \c {/system/bin/appcontroller.conf} to set the value of + the environment variable \c QT_QPA_EGLFS_NO_SURFACEFLINGER to \c + 1 instead of \c 0. + \li Disable the startup of \c surfaceflinger at boot-up. Either + change \c /init.rc, or simply rename the \c + {/system/bin/surfaceflinger} executable. + \endlist + + \section1 Using Network Connection for ADB + + By default, \B2Q uses USB cable for communication between device and Qt Creator. + On \B2QL, you can change the device to use ethernet network connection for the + communication. To enable network connection, you need to modify file + \c /etc/default/adbd located on the devices, and change value of \c USE_ETHERNET + to \c 'yes'. This can also be done with \c adb, while the device is still + connected via USB. + + \badcode + /Tools/b2qt/adb shell sed -i -e 's/USE_ETHERNET=no/USE_ETHERNET=yes/' /etc/default/adbd + \endcode + + \note You need to restart the device for this change to take effect. + + \include b2qt-post-install-setup.qdocinc configuring network device +*/ diff --git a/src/doc/src/qtee-index.qdoc b/src/doc/src/qtee-index.qdoc new file mode 100644 index 0000000..c881296 --- /dev/null +++ b/src/doc/src/qtee-index.qdoc @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \contentspage{index.html}{Qt Enterprise Embedded} + \page index.html + \nextpage qtee-overview.html + \title Qt Enterprise Embedded + + \SDK provides a fully-integrated solution to get you started immediately + with software development on your embedded device with a tailored user + experience for embedded Linux and embedded Android. \SDK contains the tools + you need for fast, easy, and fully-integrated embedded device application + development. It comes with \B2Q, a light-weight UI stack for embedded + systems, and the Qt Creator integrated development environment (IDE) with + preconfigured build targets for hardware platforms, as well as an emulator + for testing the applications. + + \e{\b{IMPORTANT:} Make sure to follow the \l{Installation Guide} + closely!} + + \section1 Contents + + \list + \li \l{About Qt Enterprise Embedded} + \li \l{Installation Guide} + \li \l{Supported Platforms} + \li \l{Preparing Hardware} + \list + \li \l{Preparing Nexus 7 (2012/2013)}{Nexus 7 (2012/2013) (embedded Android)} + \li \l{Preparing BD-SL-i.MX6}{BD-SL-i.MX6 (embedded Android and Linux)} + \li \l{Preparing SABRE SD i.MX6Quad}{SABRE SD i.MX6Quad (embedded Linux)} + \li \l{Preparing Toradex Apalis iMX6}{Toradex Apalis iMX6 (embedded Linux)} + \li \l{Preparing BeagleBone Black}{BeagleBone Black (embedded Android and Linux)} + \li \l{Preparing BeagleBoard-xM}{BeagleBoard-xM (embedded Linux)} + \li \l{Preparing Raspberry Pi}{Raspberry Pi Model B (embedded Linux)} + \endlist + \li \l{Building and Running Embedded Applications} + \list + \li \l{Special Build & Run Options} + \endlist + \li \l{Customization} + \li \l{Building Your Own Embedded Linux Image} + \li \l{ChangeLog} + \li \l{Troubleshooting} + \li \l{License Information} + \endlist + + \section1 Reference Documentation + + \list + \li \l{Add-On QML Types} + \endlist +*/ + +/*! + \contentspage{index.html}{Qt Enterprise Embedded} + \page qtee-overview.html + \previouspage index.html + \nextpage qtee-installation-guide.html + + \title About Qt Enterprise Embedded + + \SDK has two main parts: + + \list + \li Development environment that is installed on a Linux development + desktop by using an online installer + \li \B2Q + \endlist + + \section1 About the Development Environment + + The development is done with the Qt Enterprise libraries and device + deployment can be done with one click directly from Qt Creator to a device + connected via USB. Alternatively, you can deploy the application locally + directly to the \B2Q Emulator that is running the full target software stack + as in the device. + + As with any Qt based application, the same application can be deployed to + desktop and mobile OS targets as well. + + \section1 About \B2Q + + \e{\b{\B2Q}} is a light-weight, Qt-optimized, full software stack for + embedded systems that is installed into the actual target device. This is + done by flashing the device's memory card or internal memory directly with a + pre-built image that comes with the development environment. + + \B2Q supports two different operating systems: + + \list + \li \b{\B2QA} where the software stack is based on the Android Kernel + (version 4.1 or higher) and selected middleware. It includes a lean + software stack where Qt/QML replaces the top Java graphical layer + and removes the Zygote process layer as well the Android home screen + enabling better and faster development where modern UIs are at the + forefront. + + \li \b{\B2QL} where the software stack is using the traditional embedded + Linux kernel built with the Yocto Poky reference system (Yocto 1.6 + \e Daisy release). The Embedded Linux variant is designed for great + customization possibilities. It contains only components required in + the embedded device, resulting in smaller image sizes while keeping + valuable development tools available. + \endlist + + Both versions have been tested and verified on a number of different + hardware configurations. \B2Q support is not limited to the devices used + as reference platforms, it can be made to run on a variety of hardware. + + \section1 About Qt + + \l{http://qt.digia.com/}{Qt} is a full development framework with tools + designed to streamline the creation of applications and user interfaces + for desktop, embedded, and mobile platforms. + + \list + \li \b{Qt Framework} - intuitive APIs for C++ + and CSS/JavaScript-like programming with + \b{Qt Quick} for rapid UI + creation + \li \b{Qt Creator IDE} - powerful cross-platform integrated development + environment, including UI designer tools and on-device debugging + \li \b{Tools and toolchains} - internationalization support, embedded + toolchains and more. + \endlist + + With Qt, you can reuse code efficiently to target multiple platforms + with one code base. The modular C++ class library and development tools + enable developers to create applications for one platform and easily + build and run to deploy also on other platforms. + + + \section1 \B2Q vs Qt for Android + + \image b2qt-vs-qt-for-android.png + + \e{\b{Qt for Android}} is a port of the Qt Framework to be used for application + development on the Android platform. Its purpose is to enable development + of applications that can run on Android devices. For developers writing + applications for the Android ecosystem, Qt for Android is the right choice. + + \b{\B2QA} tries to strip down the Android + stack to the bare minimum, relying only on basic Linux + features. The majority of the Android stack, such as + \e{Dalvik virtual machine} is not running in \B2Q, + resulting in faster startup times, lower memory consumption and + overall better performance. +*/ diff --git a/src/doc/src/qtee-install-guide.qdoc b/src/doc/src/qtee-install-guide.qdoc new file mode 100644 index 0000000..558bd61 --- /dev/null +++ b/src/doc/src/qtee-install-guide.qdoc @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-installation-guide.html + \title Installation Guide + \previouspage qtee-overview.html + \nextpage qtee-supported-platforms.html + + To successfully set up \SDK, you must closely follow the instructions in + this section and perform all the described tasks. + + In case of problems, see the \l{Troubleshooting} information and the + \l {Known Issues} in \SDK \l {product page}. + + \target Requirements for Development Host + \section1 Requirements for Development Host + + A 64-bit Linux system is required to install and use \SDK. Instructions + in this documentation assume Ubuntu Linux 64-bit 12.04 LTS or later. + Other Linux distributions may work, but have not been tested. C/C++ build + essentials must be installed. + + \target Installing 32-bit Support Libraries + \section1 1. Installing 32-bit Support Libraries + + Some of the build tools in \SDK are 32-bit programs, and on 64-bit + systems they require support libraries for running 32-bit code. To + install the required packages in recent versions of Ubuntu, use + the following command in a terminal: + + \badcode + sudo apt-get install g++-multilib zlib1g:i386 + \endcode + + For older Ubuntu versions such as 12.04, instead do: + + \badcode + sudo apt-get install g++-multilib ia32-libs + \endcode + + \target Installing VirtualBox + \section1 2. Installing VirtualBox + + The \B2Q emulator in \SDK relies on VirtualBox virtualization software. You can + download it from \l{https://www.virtualbox.org/wiki/Linux_Downloads} or + install it via distribution tools. + + If you have older Ubuntu versions such as 12.04 you have to install a newer + version of VirtualBox than your distribution does provide. + You have to add a foreign package source: + + \badcode + wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - + echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list + sudo apt-get update + \endcode + + Now install VirtualBox on your computer + \badcode + sudo apt-get install virtualbox-4.3 + \endcode + + To configure VirtualBox: + + \list 1 + \li Start the VirtualBox user interface. + \li Select \b{File > Preferences} > \b{Network} to open VirtualBox + network settings. + \li Create a new network named \e{vboxnet0} and edit its properties: + + \list 1 + \li Change the IPv4 address to \c{192.168.56.1} and the IPv4 network + mask to \c{255.255.255.0}. + \li In the \b{DCHP Server} tab, select the \b{Enable Server} check + box. + \li Change the server address to \c{192.168.56.1}. + \li Change both the lower and upper address bounds to + \c{192.168.56.101}. + \endlist + \endlist + + If a firewall is enabled on the development host, it needs to + allow TCP and UDP packets between your host and the virtual + machine. + + \section1 3. Installing \SDK + + \list 1 + + \li Download the binary \SDK installer, and make sure it is executable + by using one of the following methods: + + \list + \li Enter the \c{chmod +x } command. + \li Right-click the file, and select \b{Properties} > + \b{Permissions} > \b{Allow executing file as program}. + \endlist + + \li Run the installer and follow its instructions. + + \endlist + + \note Do not execute the installer as root user or with sudo. + + The installer will let you select a directory where \SDK will be + installed. In this documentation, the installation directory is referred + to as \b{\c{}}. The default installation directory is + \tt{~/Qt}. + + \target Installing Boot to Qt on Target Devices + \section1 4. Install \B2Q on Target Devices + + \e{If you target only the emulator, you can skip this step.} + + Before you can deploy and test your Qt application on hardware, you must + flash the target device with an image that contains the + \B2Q stack. The steps vary from device to device. Follow the instructions + specific to your device in \l {Preparing Hardware}. + + \section1 5. Setting up USB Access to Embedded Devices + + \e{If you target only the emulator, you can skip this step.} + + \include b2qt-post-install-setup.qdocinc setting up usb access + + \section1 6. Configuring a Device Kit in Qt Creator + + \include b2qt-post-install-setup.qdocinc configuring device kit android linux + + You are now ready to start developing for your device. + For more information, see \l{Building and Running an Example}. +*/ diff --git a/src/doc/src/qtee-licenses.qdoc b/src/doc/src/qtee-licenses.qdoc new file mode 100644 index 0000000..6728712 --- /dev/null +++ b/src/doc/src/qtee-licenses.qdoc @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-licenses.html + \title License Information + \previouspage qtee-troubleshooting.html + \nextpage qtee-qml-reference.html + + \section1 Licensing + + \SDK is licensed under the Qt Enterprise commercial license. For more information, + see \l {http://qt.digia.com/licensing}. Evaluation licenses are also available, + see \l {product page}{\SDK} on qt.digia.com. + + \section1 3rd Party Software Licenses + + The third-party licenses used in \SDK are listed in the file + \c {/Licenses/ThirdPartySoftware_Listing.txt}. + + \section1 Embedded Android Images + + The embedded Android platform is built from the \e {Android Open Source Project}, + source code available at \l {http://android.googlesource.com/}. The open + source licenses and notices are collected into the file + \c {/etc/NOTICE.html.gz} in the target images. + + \section1 Embedded Linux Images + + The embedded Linux platform is built using tools from the \l {Yocto Project}. + The open source licenses and notices are located in + \list + \li \c /usr/share/common-licenses/license.manifest + \li \c /usr/share/licenses/* + \endlist + + \section1 Android GNU C++ Run-time Licensing + + The Android platform does not provide a full implementation of the C++ run-time. Instead, + apps that depend on features such as STL, exceptions, or RTTI, must include an additional + native run-time library that provides the features they need. + + \B2QA uses the GNU libstdc++ library distributed as part of the \e {Android Open Source Project}. + This library is included in the images for \B2QA, and will be loaded by the application + on start-up to meet the run-time requirements of Qt. + + The GNU C++ run-time is licensed under the + \l{http://gcc.gnu.org/onlinedocs/libstdc++/manual/appendix_gpl.html}{GNU General Public License version 3} with + an exception which grants permission for run-time linking and usage of the library by an application which + would otherwise violate the terms of the main license. For more information about this exception, see + \l{http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html}{the official license page}. +*/ diff --git a/src/doc/src/qtee-qml-reference.qdoc b/src/doc/src/qtee-qml-reference.qdoc new file mode 100644 index 0000000..a1f4e4f --- /dev/null +++ b/src/doc/src/qtee-qml-reference.qdoc @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-qml-reference.html + \title Add-On QML Types + \previouspage qtee-licenses.html + + The following QML modules are included in the \B2Q stack and provide + additional QML types that are useful in an embedded application: + + \annotatedlist qtee-qmlmodules + + \section1 WiFi Module + + \annotatedlist wifi-qmltypes +*/ + diff --git a/src/doc/src/qtee-troubleshooting.qdoc b/src/doc/src/qtee-troubleshooting.qdoc new file mode 100644 index 0000000..0e730c6 --- /dev/null +++ b/src/doc/src/qtee-troubleshooting.qdoc @@ -0,0 +1,255 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \page qtee-troubleshooting.html + \title Troubleshooting + \previouspage qtee-changelog.html + \nextpage qtee-licenses.html + + \note An updated version of this information may be available in Digia customer portal, + see \l {Known Issues} in \SDK \l {product page}. + + \section1 General Issues + + \section2 I have problems deploying/launching the application in Qt Creator + + Check that the device is properly connected to the development host via USB + or Ethernet (depending on the device). + See \l{Connectivity Issues}. + + If using the emulator, see \l{Installing VirtualBox}. + + \section2 I have problems deploying/launching a Qt or Qt Quick example application + + Because of a technical peculiarity in \c{qmake}, it is not + possible to get correct deployment setup for any application that + is placed inside a Qt source code tree. + + The workaround is to copy the example sources to a location + outside the Qt source tree, and open this copy of the example + application instead. + + \section2 I have problems launching or running applications on hardware after updating the SDK + + Remember to repeat the process of updating also your device with the latest + version of \B2Q. See \l{Installing Boot to Qt on Target Devices}. + + \section2 Booting BD-SL-i.MX6 stops with \e {6x_bootscript not found} error + + Check the U-Boot version number. It should start with either \c{2012} or \c{2013}. + If it is \c{2009.xx}, an upgrade of the bootloader is required. For more + information, see: + + \list + \li \l http://boundarydevices.com/6q_bootscript/ + \li \l http://boundarydevices.com/switching-u-boot-versions-on-i-mx6/ + \endlist + + \target nexus-factory-reset + \section2 How do I restore my Nexus 7 to factory settings? + + Go to \l{https://developers.google.com/android/nexus/images} and + download the correct file for your device. Unpack it, and then enter the + following commands: + + \badcode + /Tools/b2qt/adb reboot bootloader + /Tools/b2qt/fastboot -w update .zip + \endcode + + \section2 How do I shut down the Nexus 7? + + If the \B2Q demo launcher is running, start the \b {Launcher + Settings} app, and select \b {Shut Down} to power off the device. + + Otherwise, make sure the Nexus 7 is connected to the development host, and run + the following command in a terminal: + \badcode + /Tools/b2qt/adb shell reboot -p + \endcode + + If the device is in the fastboot mode, use the volume button to display the + \b {Power off} option and press the power button to power off the device. + + Alternatively, press and hold the power button for 10 + seconds. This will force a reboot. + + \section2 How do I get HDMI output working properly on BeagleBone Black? + + Depending on the HDMI monitor, the cable, and the build variant of + the BeagleBone Black device, it may not be able to drive an HDMI display in a + stable way; the image may disappear or stutter. These issues are not caused by + the \B2Q stack. + + More details and possible solutions can be found + \l {http://www.elinux.org/Beagleboard:BeagleBoneBlack_HDMI}{here}. + + \section2 Trying to build for the emulator target fails with error message \e{make: i686-android-linux-g++: Command not found} + + You need to install support libraries in order to run 32-bit programs in a + 64-bit Linux operating system. + + See \l{Installing 32-bit Support Libraries}. + + \section2 Something crashed! + + The following command shows the system log: + \badcode + /Tools/b2qt/adb logcat + \endcode + + \note When terminating an application from Qt Creator, you may see the + message \e {Terminating application. Error running process: Process crashed}. + This is normal and does not indicate a problem in your code; a SIGTERM + signal is sent to the application, and Qt interprets it as a crash. + + \section2 Mouse or touch input does not work + + See \l{Customization}. + + \note Hotplugging does not currently work, and therefore, any input device + must be present at boot time to be recognized. + + \section2 Application stops with \e{EGLFS: OpenGL windows cannot be mixed with others.} + + OpenGL and Qt Quick 2 applications can only have one + fullscreen window existing at a time. Trying to create another + OpenGL window, or trying to mix an OpenGL window with a raster one + will display the above message and abort the application. + + \note For raster windows (software rendered content based on QWidget or + QPainter), there is no such limitation. + + \section2 I cannot edit the contents of appcontroller.conf on the device + + The file system where this file is located may be mounted as read-only. + + See \l{Customization}. + + \section2 C++11 features do not work on Android + + To enable C++11 features in the compiler, add \e{CONFIG += c++11} to the .pro file. + On Embedded Linux this will be enough because there the toolchain contains a more + recent version of gcc (4.8.x). On Embedded Android however the toolchain is based on + gcc 4.6. This offers limited support for C++11 and Qt's own C++11 support is disabled, + meaning that adding \e{c++11} to \e{CONFIG} will have no effect. There is still a + possibility however to manually enable some level of C++11 support just for the + application, by adding \e{QMAKE_CXXFLAGS += -std=c++11} to the .pro file. + + \section1 Connectivity Issues + \section2 I cannot connect to my hardware device via USB + + See \l{5. Setting up USB Access to Embedded Devices}. + + \section2 adb fails with "error: more than one device and emulator" + + You have to specify which Android device you want \c{adb} to talk + to, using adb's \c{-s } option. Use the following + command to find to see the serial number of the connected + devices: + + \badcode + /Tools/b2qt/adb devices + \endcode + + \section2 The emulator cannot connect to the Internet + + By default, the VirtualBox is configured to use a host-only network, so external + connections do not work in the emulator. + + You may be able to enable Internet connectivity with another + virtual network adapter in NAT mode by adapting + \l{http://askubuntu.com/questions/293816/in-virtualbox-how-do-i-set-up-host-only-virtual-machines-that-can-access-the-in}{these} + instructions. + + \section2 The emulator is stuck in \e{Waiting for display data} or fails to start properly + + Check the output of the following command: + + \badcode + /Tools/b2qt/adb devices + \endcode + + If the emulator (192.168.56.101) is not listed there, try connecting to it: + + \badcode + /Tools/b2qt/adb connect 192.168.56.101 + \endcode + + If the emulator is already listed, try disconnecting it: + \badcode + /Tools/b2qt/adb disconnect 192.168.56.101 + \endcode + + And then close the emulator and retry. + + \section2 What are the user and password to access my embedded Linux device? + + Embedded Linux devices can be accessed using user \c{root} and an empty password. + + \section2 No sound on Embedded Android devices + + When connecting a headphone or speakers while the device is running, the + audio may not be properly routed to the correct output. As a workaround, + connect the headphone or speakers before turning on the device. + + \section2 Qt WebEngine libraries cannot be found when targeting the emulator + + Qt WebEngine is not currently available for the emulators, neither eLinux + nor eAndroid. This is planned to be addressed in a later release. + + \section2 Widget-based web view is not available + + The Qt WebEngine APIs are available only for Qt Quick 2 based applications at the moment. + The QWidget-based equivalents, like QWebEngineView, will become supported in future releases. + For the time being, use the WebEngineView QML element. + + \section2 Qt Quick Compiler fails on the emulators + + The Qt Quick Compiler is not yet functional in the emulator environments, and projects + are likely fail to build or run with compilation enabled. Support for the emulators + will be added in a later release. + + \section2 QML debugging not functional when using Qt Quick Compiler + + QML debugging is not fully functional when the Qt Quick Compiler is enabled. Support + for this will be added in a later release. + + + \section2 Boundary Devices Android Jellybean i.MX6 image deploying issues + + On some hosts running the mksdcard.sh script results in the following failure messages: + + \badcode + Cannot find device with major:minor 8:20: No such device + cp: target ‘/media/BOOT/’ is not a directory + \endcode + + This means that flashing an sdcard has failed, even if the scripts seemingly runs to the end. + The issue can be worked around by adding "sleep" call before "udisks --mount" loop (search at + the end of the script): + + \badcode + sleep 2 + for n in 1 2 4 ; do + udisks --mount ${diskname}${prefix}${n} + done + \endcode +*/ diff --git a/src/doc/src/shared/b2qt-external-pages.qdoc b/src/doc/src/shared/b2qt-external-pages.qdoc new file mode 100644 index 0000000..d642fa2 --- /dev/null +++ b/src/doc/src/shared/b2qt-external-pages.qdoc @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise-Embedded/Supported-Modules-and-Known-Issues/ + \title Known Issues +*/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise-Embedded/ + \title product page +*/ + +/*! + \externalpage https://qtcloudservices.com/products/enginio-data-storage/ + \title Enginio Data Storage +*/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Advanced-Data-Visualization/ + \title Qt Data Visualization +*/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Qt-Quick-Enterprise-Controls/ + \title Qt Quick Enterprise Controls +*/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Qt-Virtual-Keyboard/ + \title Qt Virtual Keyboard +*/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Charts/ + \title Qt Charts +*/ + +/*! + \externalpage http://qt.digia.com/Product/Qt-Enterprise/Qt-Quick-Compiler/ + \title Qt Quick Compiler +*/ + +/*! + \externalpage https://www.yoctoproject.org/ + \title Yocto Project +*/ diff --git a/src/doc/src/shared/b2qt-post-install-setup.qdocinc b/src/doc/src/shared/b2qt-post-install-setup.qdocinc new file mode 100644 index 0000000..0bd96dd --- /dev/null +++ b/src/doc/src/shared/b2qt-post-install-setup.qdocinc @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! +//! [setting up usb access] + On Ubuntu Linux, the development user account must have access to plugged in + devices. To allow the development user access to the device via USB, create + a new \e{udev} rule: + + \list 1 + + \li Run the following command in a shell: + + \badcode + echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", TAG+="udev-acl", TAG+="uaccess"' | sudo tee -a /etc/udev/rules.d/70-boot2qt.rules + \endcode + + \li Connect the running device to the development host with a USB + cable. If the device is already connected, disconnect and reconnect the USB + cable after running the command above. + + \li On \B2QA, you can confirm that the connection is working by running + the following shell command: + + \code + /Tools/b2qt/adb devices + \endcode + + The output should be a list of connected Android devices, + identified with a serial number and a name. If your device is missing from + the list, or the serial number is \c{??????}, the connection is + not working properly. Check that the device is powered on, and disconnect + and reconnect the USB cable. + + The emulator may be listed as well. Its serial number is its IP and the port + number: \c{192.168.56.101:5555}. + \endlist + + The system log files \c{/var/log/udev} and \c{/var/log/syslog} may + provide relevant information in case of connection problems. +//! [setting up usb access] + +//! [configuring device kit] +//! [common config device kit] + After you have prepared the hardware, you must perform one final step + to set up the development tools in Qt Creator for your device. That is, + you must configure the correct device to be used for each build and run + \e{kit}. Connect your device to the development host via USB and launch + Qt Creator. In Qt Creator: + +//! [common config device kit] +//! [steps for device kit] + \list 1 + \li Select \b{Tools > Options > Build & Run > Kits}. + \li Select one of the predefined kits starting with \e{Boot to Qt...} + that matches the type of your device. + \li Select the correct device in the \b{Device} field. + \li Select \b{OK}. + \endlist +//! [steps for device kit] +//! [configuring device kit] + +//! [android steps for dev kit] + \list 1 + \li Select \b{Tools > Options > Build & Run > Kits}. + \li Select the kit with the correct Android version + (for example, \e {generic-4.2}). + \li Select the correct device in the \b{Device} field. + \li Select \b{OK}. + \endlist + + If you have more than one development device that use the same Android + version, clone the \e generic kit and rename it after the physical device: + + \list 1 + \li Select the generic Android kit and then \b Clone. + \li Select the correct device in the \b{Device} field. + \li Edit the name of the cloned kit and press \b OK. + \endlist +//! [android steps for dev kit] + +//! [configuring network device] + After you have prepared the hardware, you must set up the development tools + in Qt Creator for your device. Connect your device to the network via an + Ethernet cable and launch Qt Creator. In Qt Creator: + + \list 1 + \li Select \b{Tools > Options > Devices > Add}. + \li Select \b{Boot2Qt Device} > \b{Start Wizard}. + \li Enter the device name and network address. You can check the device + address in the \e{Launcher Settings} when the device is running the + \B2Q demo. + \li Select \b{Finish}. + \endlist + + You also have to configure the correct device to be used for each build and + run \e{kit}: + + \include b2qt-post-install-setup.qdocinc steps for device kit + +//! [configuring network device] + +//! [configuring device kit android] + \include b2qt-post-install-setup.qdocinc common config device kit + \include b2qt-post-install-setup.qdocinc android steps for dev kit +//! [configuring device kit android] + +//! [configuring device kit android linux] + \include b2qt-post-install-setup.qdocinc common config device kit + \list + \li \b{\B2QL} + \include b2qt-post-install-setup.qdocinc steps for device kit + \li \b{\B2QA} + \include b2qt-post-install-setup.qdocinc android steps for dev kit + \endlist +//! [configuring device kit android linux] +*/ diff --git a/src/doc/src/shared/detect-sd-card-device-name.qdocinc b/src/doc/src/shared/detect-sd-card-device-name.qdocinc new file mode 100644 index 0000000..b74947d --- /dev/null +++ b/src/doc/src/shared/detect-sd-card-device-name.qdocinc @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +/*! +//! [instructions] + Plug in the SD card or reader to the development host, + and use the following command to find out its device name: + + \badcode + lsblk -d + \endcode + + Removable devices such as SD cards have the value '1' in + the \e RM column. + + \warning Make sure to select the correct device, because selecting + the wrong one can result in a wiped hard drive. + + Typical device names for SD cards include \c {sdb} and + \c {mmcblk0}. The full device path is \c {/dev/} followed by + the name. +//! [instructions] + +//! [unmount] + \badcode + umount /dev/ + \endcode +//! [unmount] + +*/ -- cgit v1.2.3