Merge tag 'dey-2.2-r1.4' into dey-2.2/master

Tweaked to maintain some recipes' revisions to AUTOREV instead of the
fixed SHA1s from the tag.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2017-05-04 13:58:33 +02:00
commit 3fa939fdc3
40 changed files with 634 additions and 402 deletions

View File

@ -67,11 +67,19 @@ Documentation is available online on the Digi documentation site:
* Release based on [Yocto 2.2 (Morty)](https://www.yoctoproject.org/downloads/core/morty22) including: * Release based on [Yocto 2.2 (Morty)](https://www.yoctoproject.org/downloads/core/morty22) including:
* New toolchain based on GCC-6.2.0 and GLIBC-2.24 * New toolchain based on GCC-6.2.0 and GLIBC-2.24
* Updated Qt 5.7 * Updated Qt 5.7
* Cellular support, including the new Quectel EC21 cellular modem * Updated ModemManager with validated support for:
* Digi's XBee Cellular LTE Cat 1 (USA/Verizon), with P/N XBC-V1-UT-001
* Telit's LE910 and HE910
* Huawei's ME909u
* Quectel's EC21
* Modified default networking settings:
* Defalt to dynamic IP addresses assignments
* Default station and softAP concurrent wireless mode
* TrustFence enabled * TrustFence enabled
* Remote manager * Remote manager
* Local and remote manager firmware update * Local and remote manager firmware update
* Package upgrades and security fixes * Package upgrades and security fixes
* U-boot support for 1GB DDR3 RAM on CC6UL
# Known Issues and Limitations # Known Issues and Limitations
@ -94,6 +102,15 @@ boot a signed U-Boot only.
control. To work around this issue, UART1 of these SOM versions has been control. To work around this issue, UART1 of these SOM versions has been
configured to operate at 115200 bps and without hardware flow control, configured to operate at 115200 bps and without hardware flow control,
reducing the maximum throughput of this interface. reducing the maximum throughput of this interface.
* When using wireless concurrent mode as the wireless interface is shared
between several different functionalities performance is reduced.
* When using wireless concurrent mode Digi recommends to keep the different
modes on the same frequency channels. For example, when configuring access
point mode on channel 36 on band A, the recommendation would be to connect
to the same channel both in station mode and WiFi direct so that the radio
performance is optimized
* When working as an access point, DFS capable channels in band A are not
currently supported.
## Digi ConnectCore 6 ## Digi ConnectCore 6

View File

@ -7,7 +7,8 @@ include conf/machine/include/ccimx6ul.inc
# U-Boot configurations # U-Boot configurations
# Last one is the default (the one the symlinks point at) # Last one is the default (the one the symlinks point at)
UBOOT_CONFIG ??= "ccimx6ulsbc" UBOOT_CONFIG ??= "ccimx6ulsbc1GB ccimx6ulsbc"
UBOOT_CONFIG[ccimx6ulsbc1GB] = "ccimx6ulsbc1GB_defconfig"
UBOOT_CONFIG[ccimx6ulsbc] = "ccimx6ulsbc_defconfig" UBOOT_CONFIG[ccimx6ulsbc] = "ccimx6ulsbc_defconfig"
KERNEL_DEVICETREE ?= " \ KERNEL_DEVICETREE ?= " \

View File

@ -7,7 +7,8 @@ include conf/machine/include/ccimx6ul.inc
# U-Boot configurations # U-Boot configurations
# Last one is the default (the one the symlinks point at) # Last one is the default (the one the symlinks point at)
UBOOT_CONFIG ??= "ccimx6ulstarter" UBOOT_CONFIG ??= "ccimx6ulstarter1GB ccimx6ulstarter"
UBOOT_CONFIG[ccimx6ulstarter1GB] = "ccimx6ulstarter1GB_defconfig"
UBOOT_CONFIG[ccimx6ulstarter] = "ccimx6ulstarter_defconfig" UBOOT_CONFIG[ccimx6ulstarter] = "ccimx6ulstarter_defconfig"
KERNEL_DEVICETREE ?= " \ KERNEL_DEVICETREE ?= " \

View File

@ -19,8 +19,6 @@ FW_QCA6564-WIFI = " \
file://otp30.bin \ file://otp30.bin \
file://qwlan30.bin \ file://qwlan30.bin \
file://utf30.bin \ file://utf30.bin \
file://wlan/cfg.dat \
file://wlan/qcom_cfg.ini \
" "
SRC_URI = " \ SRC_URI = " \
@ -41,7 +39,7 @@ do_install() {
${D}${base_libdir}/firmware/qca ${D}${base_libdir}/firmware/qca
# Wifi firmware # Wifi firmware
install -d ${D}${base_libdir}/firmware/wlan install -d ${D}${base_libdir}/firmware
install -m 0644 \ install -m 0644 \
bdwlan30_US.bin \ bdwlan30_US.bin \
bdwlan30_World.bin \ bdwlan30_World.bin \
@ -50,10 +48,6 @@ do_install() {
qwlan30.bin \ qwlan30.bin \
utf30.bin \ utf30.bin \
${D}${base_libdir}/firmware ${D}${base_libdir}/firmware
install -m 0644 \
wlan/cfg.dat \
wlan/qcom_cfg.ini \
${D}${base_libdir}/firmware/wlan
} }
# Do not create empty debug and development packages (PN-dbg PN-dev PN-staticdev) # Do not create empty debug and development packages (PN-dbg PN-dev PN-staticdev)

View File

@ -11,7 +11,7 @@ else
# #
# Set device tree filename depending on the hardware variant # Set device tree filename depending on the hardware variant
# #
if test "${module_variant}" = "0x02"; then if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then
setenv fdt_file zImage-imx6ul-ccimx6ulsbc-wb.dtb setenv fdt_file zImage-imx6ul-ccimx6ulsbc-wb.dtb
elif test "${module_variant}" = "0x03"; then elif test "${module_variant}" = "0x03"; then
setenv fdt_file zImage-imx6ul-ccimx6ulsbc.dtb setenv fdt_file zImage-imx6ul-ccimx6ulsbc.dtb

View File

@ -19,8 +19,36 @@ if test $? -eq 1; then
exit; exit;
fi fi
# Determine U-Boot file to program basing on module variant
if test -n "${module_variant}"; then
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx;
elif test "${module_variant}" = "0x04"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc1GB.imx;
fi
fi
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
# u-boot when the checked value is empty.
if test -n "${INSTALL_UBOOT_FILENAME}"; then
true;
else
echo "";
echo "[ERROR] Cannot determine U-Boot file for this module!";
echo "";
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6UL variant:";
echo " - For a SOM with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc1GB.imx";
echo " - For a SOM with 256MB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx";
echo "";
echo "2. Run the install script again.";
echo "";
echo "Aborted";
echo "";
exit;
fi;
setenv INSTALL_MMCDEV 0 setenv INSTALL_MMCDEV 0
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx
setenv INSTALL_LINUX_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.boot.ubifs setenv INSTALL_LINUX_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.boot.ubifs
setenv INSTALL_RECOVERY_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.recovery.ubifs setenv INSTALL_RECOVERY_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.recovery.ubifs
setenv INSTALL_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.ubifs setenv INSTALL_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.ubifs

View File

@ -11,7 +11,7 @@ else
# #
# Set device tree filename depending on the hardware variant # Set device tree filename depending on the hardware variant
# #
if test "${module_variant}" = "0x02"; then if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then
setenv fdt_file zImage-imx6ul-ccimx6ulstarter-wb.dtb setenv fdt_file zImage-imx6ul-ccimx6ulstarter-wb.dtb
elif test "${module_variant}" = "0x03"; then elif test "${module_variant}" = "0x03"; then
setenv fdt_file zImage-imx6ul-ccimx6ulstarter.dtb setenv fdt_file zImage-imx6ul-ccimx6ulstarter.dtb

View File

@ -19,8 +19,36 @@ if test $? -eq 1; then
exit; exit;
fi fi
# Determine U-Boot file to program basing on module variant
if test -n "${module_variant}"; then
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx;
elif test "${module_variant}" = "0x04"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter1GB.imx;
fi
fi
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
# u-boot when the checked value is empty.
if test -n "${INSTALL_UBOOT_FILENAME}"; then
true;
else
echo "";
echo "[ERROR] Cannot determine U-Boot file for this module!";
echo "";
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6UL variant:";
echo " - For a SOM with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter1GB.imx";
echo " - For a SOM with 256MB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx";
echo "";
echo "2. Run the install script again.";
echo "";
echo "Aborted";
echo "";
exit;
fi;
setenv INSTALL_MMCDEV 0 setenv INSTALL_MMCDEV 0
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx
setenv INSTALL_LINUX_FILENAME core-image-base-ccimx6ulstarter.boot.ubifs setenv INSTALL_LINUX_FILENAME core-image-base-ccimx6ulstarter.boot.ubifs
setenv INSTALL_RECOVERY_FILENAME core-image-base-ccimx6ulstarter.recovery.ubifs setenv INSTALL_RECOVERY_FILENAME core-image-base-ccimx6ulstarter.recovery.ubifs
setenv INSTALL_ROOTFS_FILENAME core-image-base-ccimx6ulstarter.ubifs setenv INSTALL_ROOTFS_FILENAME core-image-base-ccimx6ulstarter.ubifs

View File

@ -1,4 +1,4 @@
# Copyright (C) 2016 Digi International. # Copyright (C) 2016, 2017 Digi International.
SUMMARY = "MCA firmware management tool" SUMMARY = "MCA firmware management tool"
SECTION = "console/tools" SECTION = "console/tools"
@ -7,11 +7,13 @@ LICENSE = "CLOSED"
PKGNAME = "mca_tool" PKGNAME = "mca_tool"
SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz" SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz"
SRC_URI[md5sum] = "d54692090bf0820e6116364822f6433f" SRC_URI[md5sum] = "20992b6b30904ee4d75d196c957077e0"
SRC_URI[sha256sum] = "e8267e66ba496a1e77b2dec70d6555bdeb8e06b267e776c86b9d4b01e9d13eb5" SRC_URI[sha256sum] = "49458475dd5df11f0c4f4593ffc930fbcdaa457120f73ab18587d711eb9036f6"
S = "${WORKDIR}/${PKGNAME}-${PV}" S = "${WORKDIR}/${PKGNAME}-${PV}"
inherit bin_package inherit bin_package
INSANE_SKIP_${PN} = "already-stripped"
COMPATIBLE_MACHINE = "(ccimx6ul)" COMPATIBLE_MACHINE = "(ccimx6ul)"

View File

@ -42,11 +42,16 @@ do_install_append() {
install -m 0755 ${WORKDIR}/qualcomm-pre-up ${D}${sysconfdir}/network/if-pre-up.d/qualcomm install -m 0755 ${WORKDIR}/qualcomm-pre-up ${D}${sysconfdir}/network/if-pre-up.d/qualcomm
install -d ${D}${sysconfdir}/modprobe.d install -d ${D}${sysconfdir}/modprobe.d
install -m 0644 ${WORKDIR}/modprobe-qualcomm.conf ${D}${sysconfdir}/modprobe.d/qualcomm.conf install -m 0644 ${WORKDIR}/modprobe-qualcomm.conf ${D}${sysconfdir}/modprobe.d/qualcomm.conf
install -d ${D}${base_libdir}/firmware/wlan/
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_cfg.dat ${D}${base_libdir}/firmware/wlan/cfg.dat
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini
} }
FILES_${PN} += " \ FILES_${PN} += " \
${sysconfdir}/network/if-pre-up.d/qualcomm \ ${sysconfdir}/network/if-pre-up.d/qualcomm \
${sysconfdir}/modprobe.d/qualcomm.conf \ ${sysconfdir}/modprobe.d/qualcomm.conf \
${base_libdir}/firmware/wlan/cfg.dat \
${base_libdir}/firmware/wlan/qcom_cfg.ini \
" "
COMPATIBLE_MACHINE = "(ccimx6ul)" COMPATIBLE_MACHINE = "(ccimx6ul)"

View File

@ -0,0 +1,38 @@
From: Mike Engel <Mike.Engel@digi.com>
Date: Tue, 11 Apr 2017 11:13:23 +0200
Subject: [PATCH] gpu: Get GPU reserved memory from DT.
This commit adds support to specify the GPU reserved memory in
the DT.
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
https://jira.digi.com/browse/DEL-3868
---
.../linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c
index dc7c976..fd2dbd3 100644
--- a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c
+++ b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c
@@ -444,7 +444,7 @@ gckPLATFORM_AdjustParam(
Args->registerMemSizeVG = res->end - res->start + 1;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "contiguous_mem");
if (res)
{
@@ -453,8 +453,6 @@ gckPLATFORM_AdjustParam(
if( Args->contiguousSize == ~0U )
Args->contiguousSize = res->end - res->start + 1;
}
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
- Args->contiguousBase = 0;
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
prop = of_get_property(dn, "contiguousbase", NULL);
if(prop)

View File

@ -1,8 +1,9 @@
# Copyright (C) 2015 Digi International # Copyright (C) 2015-2017 Digi International
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += " \ SRC_URI += " \
file://0001-mxc-gpu-use-recommended-values-for-minimum-GPU-frequ.patch \ file://0001-mxc-gpu-use-recommended-values-for-minimum-GPU-frequ.patch \
file://0002-Use-busfreq-imx6.h-up-to-3.15-kernel.patch \ file://0002-Use-busfreq-imx6.h-up-to-3.15-kernel.patch \
file://0003-gpu-Get-GPU-reserved-memory-from-DT.patch \
" "

View File

@ -42,7 +42,6 @@ CONFIG_ARM_IMX6Q_CPUFREQ=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
CONFIG_VFP=y CONFIG_VFP=y
CONFIG_NEON=y CONFIG_NEON=y
CONFIG_BINFMT_MISC=m
CONFIG_PM_DEBUG=y CONFIG_PM_DEBUG=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
@ -141,8 +140,6 @@ CONFIG_USB_NET_CDC_MBIM=y
# CONFIG_USB_NET_ZAURUS is not set # CONFIG_USB_NET_ZAURUS is not set
CONFIG_USB_NET_QMI_WWAN=y CONFIG_USB_NET_QMI_WWAN=y
CONFIG_USB_SIERRA_NET=y CONFIG_USB_SIERRA_NET=y
CONFIG_ATH_CARDS=m
CONFIG_ATH_DEBUG=y
CONFIG_HOSTAP=y CONFIG_HOSTAP=y
CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE=y
CONFIG_HOSTAP_FIRMWARE_NVRAM=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y
@ -157,7 +154,7 @@ CONFIG_TOUCHSCREEN_FUSION_7_10=y
CONFIG_TOUCHSCREEN_IMX6UL_TSC=y CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
CONFIG_INPUT_MISC=y CONFIG_INPUT_MISC=y
CONFIG_INPUT_MCA_CC6UL_PWRKEY=y CONFIG_INPUT_MCA_CC6UL_PWRKEY=y
CONFIG_SERIO_SERPORT=m # CONFIG_SERIO_SERPORT is not set
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_DEVKMEM is not set # CONFIG_DEVKMEM is not set
CONFIG_SERIAL_IMX=y CONFIG_SERIAL_IMX=y
@ -167,8 +164,6 @@ CONFIG_FSL_OTP=y
CONFIG_I2C_CHARDEV=y CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_HELPER_AUTO is not set # CONFIG_I2C_HELPER_AUTO is not set
CONFIG_I2C_ALGOBIT=y CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m
CONFIG_I2C_IMX=y CONFIG_I2C_IMX=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_GPIO=y CONFIG_SPI_GPIO=y
@ -249,7 +244,6 @@ CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_QUALCOMM=y CONFIG_USB_SERIAL_QUALCOMM=y
CONFIG_USB_SERIAL_SIERRAWIRELESS=y CONFIG_USB_SERIAL_SIERRAWIRELESS=y
CONFIG_USB_SERIAL_OPTION=y CONFIG_USB_SERIAL_OPTION=y
@ -257,25 +251,9 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
CONFIG_NOP_USB_XCEIV=y CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_MXS_PHY=y CONFIG_USB_MXS_PHY=y
CONFIG_USB_GADGET=y CONFIG_USB_GADGET=y
CONFIG_USB_CONFIGFS=m
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_CONFIGFS_OBEX=y
CONFIG_USB_CONFIGFS_NCM=y
CONFIG_USB_CONFIGFS_ECM=y
CONFIG_USB_CONFIGFS_ECM_SUBSET=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_LB_SS=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_ZERO=m
CONFIG_USB_ETH=m CONFIG_USB_ETH=m
CONFIG_USB_G_NCM=m
CONFIG_USB_GADGETFS=m
CONFIG_USB_MASS_STORAGE=m CONFIG_USB_MASS_STORAGE=m
CONFIG_USB_G_SERIAL=m CONFIG_USB_G_SERIAL=m
CONFIG_USB_CDC_COMPOSITE=m
CONFIG_MMC=y CONFIG_MMC=y
CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_PLTFM=y
@ -326,7 +304,6 @@ CONFIG_NLS_DEFAULT="cp437"
CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_UTF8=y CONFIG_NLS_UTF8=y
CONFIG_DEBUG_FS=y CONFIG_DEBUG_FS=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
@ -335,7 +312,6 @@ CONFIG_MAGIC_SYSRQ=y
# CONFIG_FTRACE is not set # CONFIG_FTRACE is not set
CONFIG_CRYPTO_USER=y CONFIG_CRYPTO_USER=y
CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_CTS=y
@ -361,9 +337,6 @@ CONFIG_CRYPTO_DEV_FSL_CAAM=y
CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
CONFIG_CRC_T10DIF=y CONFIG_CRC_T10DIF=y
CONFIG_CRC_ITU_T=m
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_FONTS=y CONFIG_FONTS=y
CONFIG_FONT_8x8=y CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y CONFIG_FONT_8x16=y

View File

@ -22,8 +22,8 @@ generate_installer_zip () {
# Get list of files to pack # Get list of files to pack
INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr" INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr"
for ext in ${FSTYPES_WHITELIST}; do for ext in ${FSTYPES_WHITELIST}; do
if readlink -e "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then if readlink -e "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" INSTALLER_FILELIST="${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}"
fi fi
done done
for ubconf in ${UBOOT_CONFIG}; do for ubconf in ${UBOOT_CONFIG}; do
@ -33,19 +33,20 @@ generate_installer_zip () {
done done
# Create README file # Create README file
cat >README.txt <<_EOF_ cat >${IMGDEPLOYDIR}/README.txt <<_EOF_
Digi Embedded Yocto kit installer Digi Embedded Yocto kit installer
--------------------------------- ---------------------------------
_EOF_ _EOF_
md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g" >> README.txt md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g;s,${IMGDEPLOYDIR}/,,g" >> ${IMGDEPLOYDIR}/README.txt
# Pack the files # Pack the files and remove the temporary readme file
zip -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} README.txt zip -j ${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/README.txt
rm -f ${IMGDEPLOYDIR}/README.txt
# Create the symlink # Create the symlink
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip" ]; then if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip" ]; then
ln -sf ${IMAGE_NAME}.installer.zip ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.installer.zip ln -sf ${IMAGE_NAME}.installer.zip ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.installer.zip
fi fi
} }

View File

@ -51,5 +51,6 @@ FILES_${PN}-init = "${sysconfdir}/init.d/bluetooth-init"
INITSCRIPT_PACKAGES += "${PN}-init" INITSCRIPT_PACKAGES += "${PN}-init"
INITSCRIPT_NAME_${PN}-init = "bluetooth-init" INITSCRIPT_NAME_${PN}-init = "bluetooth-init"
INITSCRIPT_PARAMS_${PN}-init = "start 19 2 3 4 5 . stop 21 0 1 6 ."
PACKAGE_ARCH = "${MACHINE_ARCH}" PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@ -4,7 +4,7 @@ interface=wlan1
driver=nl80211 driver=nl80211
# WPA2-AES encryption # WPA2-AES encryption
ssid=ap-wpa2aes_a ssid=ap-wlan1-wpa2aes_a
auth_algs=1 auth_algs=1
wpa=2 wpa=2
wpa_key_mgmt=WPA-PSK wpa_key_mgmt=WPA-PSK

View File

@ -4,7 +4,7 @@ interface=wlan0
driver=nl80211 driver=nl80211
# WPA2-AES encryption # WPA2-AES encryption
ssid=ap-wpa2aes_a ssid=ap-wlan0-wpa2aes_a
auth_algs=1 auth_algs=1
wpa=2 wpa=2
wpa_key_mgmt=WPA-PSK wpa_key_mgmt=WPA-PSK

View File

@ -0,0 +1,59 @@
#!/bin/sh
DAEMON=/usr/sbin/hostapd
NAME=hostapd
DESC="HOSTAP Daemon"
PIDFILE="/var/run/hostapd.${IFACE}.pid"
ARGS="/etc/hostapd_${IFACE}.conf"
test -f $DAEMON || exit 0
set -e
# source function library
. /etc/init.d/functions
delay_stop() {
count=0
while [ $count -lt 9 ] ; do
if pidof $DAEMON >/dev/null; then
sleep 1
else
return 0
fi
count=`expr $count + 1`
done
echo "Failed to stop $DESC."
return 1
}
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon -S -x $DAEMON -m -p ${PIDFILE} -b -- $ARGS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon -K --oknodo -x $DAEMON -p ${PIDFILE}
echo "$NAME."
;;
restart)
$0 stop
delay_stop && $0 start
;;
reload)
echo -n "Reloading $DESC: "
killall -HUP $(basename ${DAEMON})
echo "$NAME."
;;
status)
status $DAEMON
exit $?
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
;;
esac
exit 0

View File

@ -2,11 +2,19 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += "file://hostapd.conf" SRC_URI_append = " file://hostapd_wlan0.conf"
SRC_URI_append_ccimx6ul = " file://hostapd_wlan1.conf"
do_install_append() { do_install_append() {
# Overwrite the default hostapd.conf with our custom file # Remove the default hostapd.conf
install -m 0644 ${WORKDIR}/hostapd.conf ${D}${sysconfdir} rm -f ${WORKDIR}/hostapd.conf
# Install custom hostapd_IFACE.conf file
install -m 0644 ${WORKDIR}/hostapd_wlan0.conf ${D}${sysconfdir}
}
do_install_append_ccimx6ul() {
# Install custom hostapd_IFACE.conf file
install -m 0644 ${WORKDIR}/hostapd_wlan1.conf ${D}${sysconfdir}
} }
# Do not autostart hostapd daemon, it will conflict with wpa-supplicant. # Do not autostart hostapd daemon, it will conflict with wpa-supplicant.

View File

@ -0,0 +1,82 @@
From 8333cf300f6010243117aae6da4b823d9d7f30b2 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 20 Oct 2016 04:42:26 +0000
Subject: [PATCH] Detect clang
Check for clang compiler since we need to disable
unused-function warning for clang, at same time
pass werror when checking for compiler options if
werror is enabled so spurious options do not get
enabled. Only the ones that are supported by given
compiler are accepted.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
---
m4/compiler-warnings.m4 | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/m4/compiler-warnings.m4 b/m4/compiler-warnings.m4
index 5ba490c884dc..92022746487f 100644
--- a/m4/compiler-warnings.m4
+++ b/m4/compiler-warnings.m4
@@ -2,10 +2,30 @@ AC_DEFUN([LIBQMI_COMPILER_WARNINGS],
[AC_ARG_ENABLE(more-warnings,
AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
set_more_warnings="$enableval",set_more_warnings=error)
+
+# Clang throws a lot of warnings when it does not understand a flag. Disable
+# this warning for now so other warnings are visible.
+AC_MSG_CHECKING([if compiling with clang])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
+#ifndef __clang__
+ not clang
+#endif
+ ]])],
+ [CLANG=yes],
+ [CLANG=no]
+)
+AC_MSG_RESULT([$CLANG])
+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
+CFLAGS="$CFLAGS $CLANG_FLAGS"
+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
+
AC_MSG_CHECKING(for more warnings)
if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
AC_MSG_RESULT(yes)
CFLAGS="-Wall -std=gnu89 $CFLAGS"
+ if test "x$set_more_warnings" = xerror; then
+ WERROR="-Werror"
+ fi
for option in -Wmissing-declarations -Wmissing-prototypes \
-Wdeclaration-after-statement -Wstrict-prototypes \
@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
-Wmissing-include-dirs -Waggregate-return \
-Wformat-security -Wtype-limits; do
SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $option"
+ CFLAGS="$CFLAGS $option $WERROR"
AC_MSG_CHECKING([whether gcc understands $option])
AC_TRY_COMPILE([], [],
has_option=yes,
has_option=no,)
if test $has_option = no; then
CFLAGS="$SAVE_CFLAGS"
+ else
+ CFLAGS="$SAVE_CFLAGS $option"
fi
AC_MSG_RESULT($has_option)
unset has_option
unset SAVE_CFLAGS
done
+ CFLAGS="$CFLAGS $WERROR"
unset option
- if test "x$set_more_warnings" = xerror; then
- CFLAGS="$CFLAGS -Werror"
- fi
+ unset WERROR
else
AC_MSG_RESULT(no)
fi

View File

@ -1,74 +0,0 @@
From: Mike Engel <Mike.Engel@digi.com>
Date: Wed, 15 Mar 2017 18:20:25 +0100
Subject: [PATCH] meta-digi-dey: Added libqmi patch to DMS version miss match.
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
---
.../src/libqmi-glib/qmi-device.c | 32 +++++++++++++++++-----
1 file changed, 25 insertions(+), 7 deletions(-)
diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c
index 5cee156..ef636f0 100644
--- a/src/libqmi-glib/qmi-device.c
+++ b/src/libqmi-glib/qmi-device.c
@@ -485,8 +485,10 @@ check_message_supported (QmiDevice *self,
GError **error)
{
const QmiMessageCtlGetVersionInfoOutputServiceListService *info;
- guint major = 0;
- guint minor = 0;
+ guint message_major = 0;
+ guint message_minor = 0;
+ guint device_major = 0;
+ guint device_minor = 0;
/* If we didn't check supported services, just assume it is supported */
if (!self->priv->supported_services)
@@ -498,7 +500,7 @@ check_message_supported (QmiDevice *self,
/* If we cannot get in which version this message was introduced, we'll just
* assume it's supported */
- if (!qmi_message_get_version_introduced (message, &major, &minor))
+ if (!qmi_message_get_version_introduced (message, &message_major, &message_minor))
return TRUE;
/* Get version info. It MUST exist because we allowed creating a client
@@ -506,18 +508,34 @@ check_message_supported (QmiDevice *self,
info = find_service_version_info (self, qmi_message_get_service (message));
g_assert (info != NULL);
g_assert (info->service == qmi_message_get_service (message));
+ device_major = info->major_version;
+ device_minor = info->minor_version;
+
+ /* Some device firmware versions (Quectel EC21) lie about their supported
+ * DMS version, so assume a reasonable DMS version if the WDS version is
+ * high enough */
+ if (info->service == QMI_SERVICE_DMS && device_major == 1 && device_minor == 0) {
+ const QmiMessageCtlGetVersionInfoOutputServiceListService *wds;
+
+ wds = find_service_version_info (self, QMI_SERVICE_WDS);
+ g_assert (wds != NULL);
+ if (wds->major_version >= 1 && wds->minor_version >= 9) {
+ device_major = 1;
+ device_minor = 3;
+ }
+ }
/* If the version of the message is greater than the version of the service,
* report unsupported */
- if (major > info->major_version ||
- (major == info->major_version &&
- minor > info->minor_version)) {
+ if (message_major > device_major ||
+ (message_major == device_major &&
+ message_minor > device_minor)) {
g_set_error (error,
QMI_CORE_ERROR,
QMI_CORE_ERROR_UNSUPPORTED,
"QMI service '%s' version '%u.%u' required, got version '%u.%u'",
qmi_service_get_string (qmi_message_get_service (message)),
- major, minor,
+ message_major, message_minor,
info->major_version,
info->minor_version);
return FALSE;

View File

@ -1,8 +0,0 @@
# Copyright (C) 2017 Digi International Inc.
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += " \
file://0001-meta-digi-dey-Added-libqmi-patch-to-DMS-version-miss-match.patch \
"

View File

@ -0,0 +1,20 @@
SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems \
and devices which speak the Qualcomm MSM Interface (QMI) protocol"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = " \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
"
DEPENDS = "glib-2.0 libgudev libmbim"
inherit autotools pkgconfig bash-completion
SRC_URI = " \
http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
file://0001-Detect-clang.patch \
"
SRC_URI[md5sum] = "25bae4e383ad77f491ad49b49e04fdcf"
SRC_URI[sha256sum] = "a0a42c55935e75a630208e2f70840bd4407f56fe1c5258f5b0f6c0aaedf88cec"

View File

@ -0,0 +1,25 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Thu, 6 Apr 2017 11:17:46 +0200
Subject: [PATCH] configure.ac: add foreign automake option
Needed to build the repository directly in Yocto, so the missing
autotools files are generated.
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index c8a35d1b1a3f..24ed761d8e42 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ dnl-----------------------------------------------------------------------------
dnl autoconf, automake, libtool initialization
dnl
AC_INIT([ModemManager],[mm_version],[modemmanager-devel@lists.freedesktop.org],[ModemManager])
-AM_INIT_AUTOMAKE([1.11.2 subdir-objects tar-ustar no-dist-gzip dist-xz -Wno-portability])
+AM_INIT_AUTOMAKE([1.11.2 foreign subdir-objects tar-ustar no-dist-gzip dist-xz -Wno-portability])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_MAINTAINER_MODE([enable])

View File

@ -1,144 +0,0 @@
From: Aleksander Morgado <aleksander@aleksander.es>
Date: Wed, 15 Mar 2017 00:03:35 +0100
Subject: [PATCH] telit: lock/unlock CSIM operations by default
Wrap the AT+CSIM=XX commands between lock (CSIM=1) and
unlock (CSIM=0) operations.
This seems to avoid the TTY lockup seen in several different Telit
modules.
https://bugs.freedesktop.org/show_bug.cgi?id=100205
Reported-by: Penalva, Salvador <Salvador.Penalva@digi.com>
(cherry picked from commit 9384817a14c8706909f619e773a76edd65a0fdef)
---
plugins/telit/mm-broadband-modem-telit.c | 69 +++++++++++++++++++++++++++++++-
1 file changed, 68 insertions(+), 1 deletion(-)
diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
index 8baf2cf..264dd58 100644
--- a/plugins/telit/mm-broadband-modem-telit.c
+++ b/plugins/telit/mm-broadband-modem-telit.c
@@ -278,8 +278,17 @@ modem_load_supported_bands (MMIfaceModem *self,
}
/*****************************************************************************/
-/* Load unlock retries (Modem interface) */
+/* Load unlock retries (Modem interface)
+ *
+ * NOTE: the logic must make sure that LOAD_UNLOCK_RETRIES_STEP_UNLOCK is always
+ * run if LOAD_UNLOCK_RETRIES_STEP_LOCK has been run. Currently, the logic just
+ * runs all intermediate steps ignoring errors (i.e. not completing the
+ * operation if something fails), so the LOAD_UNLOCK_RETRIES_STEP_UNLOCK is
+ * always run.
+ */
+#define CSIM_LOCK_STR "+CSIM=1"
+#define CSIM_UNLOCK_STR "+CSIM=0"
#define CSIM_QUERY_PIN_RETRIES_STR "+CSIM=10,0020000100"
#define CSIM_QUERY_PUK_RETRIES_STR "+CSIM=10,002C000100"
#define CSIM_QUERY_PIN2_RETRIES_STR "+CSIM=10,0020008100"
@@ -288,10 +297,12 @@ modem_load_supported_bands (MMIfaceModem *self,
typedef enum {
LOAD_UNLOCK_RETRIES_STEP_FIRST,
+ LOAD_UNLOCK_RETRIES_STEP_LOCK,
LOAD_UNLOCK_RETRIES_STEP_PIN,
LOAD_UNLOCK_RETRIES_STEP_PUK,
LOAD_UNLOCK_RETRIES_STEP_PIN2,
LOAD_UNLOCK_RETRIES_STEP_PUK2,
+ LOAD_UNLOCK_RETRIES_STEP_UNLOCK,
LOAD_UNLOCK_RETRIES_STEP_LAST
} LoadUnlockRetriesStep;
@@ -328,6 +339,25 @@ modem_load_unlock_retries_finish (MMIfaceModem *self,
}
static void
+csim_unlock_ready (MMBaseModem *self,
+ GAsyncResult *res,
+ LoadUnlockRetriesContext *ctx)
+{
+ const gchar *response;
+ GError *error = NULL;
+
+ /* Ignore errors */
+ response = mm_base_modem_at_command_finish (self, res, &error);
+ if (!response) {
+ mm_warn ("Couldn't unlock SIM card: %s", error->message);
+ g_error_free (error);
+ }
+
+ ctx->step++;
+ load_unlock_retries_step (ctx);
+}
+
+static void
csim_query_ready (MMBaseModem *self,
GAsyncResult *res,
LoadUnlockRetriesContext *ctx)
@@ -370,6 +400,7 @@ csim_query_ready (MMBaseModem *self,
mm_unlock_retries_set (ctx->retries, MM_MODEM_LOCK_SIM_PUK2, unlock_retries);
break;
default:
+ g_assert_not_reached ();
break;
}
@@ -379,12 +410,40 @@ next_step:
}
static void
+csim_lock_ready (MMBaseModem *self,
+ GAsyncResult *res,
+ LoadUnlockRetriesContext *ctx)
+{
+ const gchar *response;
+ GError *error = NULL;
+
+ response = mm_base_modem_at_command_finish (self, res, &error);
+ if (!response) {
+ g_prefix_error (&error, "Couldn't lock SIM card: ");
+ g_simple_async_result_take_error (ctx->result, error);
+ load_unlock_retries_context_complete_and_free (ctx);
+ return;
+ }
+
+ ctx->step++;
+ load_unlock_retries_step (ctx);
+}
+
+static void
load_unlock_retries_step (LoadUnlockRetriesContext *ctx)
{
switch (ctx->step) {
case LOAD_UNLOCK_RETRIES_STEP_FIRST:
/* Fall back on next step */
ctx->step++;
+ case LOAD_UNLOCK_RETRIES_STEP_LOCK:
+ mm_base_modem_at_command (MM_BASE_MODEM (ctx->self),
+ CSIM_LOCK_STR,
+ CSIM_QUERY_TIMEOUT,
+ FALSE,
+ (GAsyncReadyCallback) csim_lock_ready,
+ ctx);
+ break;
case LOAD_UNLOCK_RETRIES_STEP_PIN:
mm_base_modem_at_command (MM_BASE_MODEM (ctx->self),
CSIM_QUERY_PIN_RETRIES_STR,
@@ -417,6 +476,14 @@ load_unlock_retries_step (LoadUnlockRetriesContext *ctx)
(GAsyncReadyCallback) csim_query_ready,
ctx);
break;
+ case LOAD_UNLOCK_RETRIES_STEP_UNLOCK:
+ mm_base_modem_at_command (MM_BASE_MODEM (ctx->self),
+ CSIM_UNLOCK_STR,
+ CSIM_QUERY_TIMEOUT,
+ FALSE,
+ (GAsyncReadyCallback) csim_unlock_ready,
+ ctx);
+ break;
case LOAD_UNLOCK_RETRIES_STEP_LAST:
if (ctx->succeded_requests == 0) {
g_simple_async_result_set_error (ctx->result,

View File

@ -0,0 +1,33 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Wed, 19 Apr 2017 14:13:56 +0200
Subject: [PATCH] port-serial: add B230400 and B921600 missing baudrates
So MM can use them when opening a specific serial port.
Upstream-Status: Pending
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
src/mm-port-serial.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
index 04ab17fe1675..b6359d28acd3 100644
--- a/src/mm-port-serial.c
+++ b/src/mm-port-serial.c
@@ -260,9 +260,15 @@ parse_baudrate (guint baudrate_num,
case 115200:
speed = B115200;
break;
+ case 230400:
+ speed = B230400;
+ break;
case 460800:
speed = B460800;
break;
+ case 921600:
+ speed = B921600;
+ break;
default:
return FALSE;
}

View File

@ -0,0 +1,12 @@
ACTION!="add|change|move", GOTO="mm_digi_xbee_cellular_modem_end"
# By default, ModemManager expects a default baudrate of 57600bps. Different
# baudrates may be used by setting the ID_MM_TTY_BAUDRATE udev tag.
# ConnectCore 6 SBC
DEVPATH=="/devices/soc0/soc.0/2100000.aips-bus/21f4000.serial/tty/ttymxc4", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
# ConnectCore 6UL SBC Pro
DEVPATH=="/devices/platform/soc/2100000.aips-bus/21e8000.serial/tty/ttymxc1", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
LABEL="mm_digi_xbee_cellular_modem_end"

View File

@ -7,8 +7,15 @@ POLLING_WAIT=5
[ -z "${IF_APN}" ] && exit 0 [ -z "${IF_APN}" ] && exit 0
background_connect() { background_connect() {
# The XBee Cellular needs more time to settle down before MM is able
# to detect it. As the XBee is connected to a 'ttymxc' serial port,
# we check those ports to conditionally delay the launch of MM.
if echo "${IF_PORT}" | grep -qs ttymxc; then
sleep 25
fi
# Ensure ModemManager is running # Ensure ModemManager is running
killall -0 ModemManager 2>/dev/null || ModemManager --log-file=/dev/null & killall -0 ModemManager 2>/dev/null || ModemManager --log-file=/var/log/modemmanager.log &
# Wait for modem detection # Wait for modem detection
while [ "${RETRIES}" -gt "0" ]; do while [ "${RETRIES}" -gt "0" ]; do

View File

@ -4,7 +4,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += " \ SRC_URI += " \
file://cellularifupdown \ file://cellularifupdown \
file://0001-telit-lock-unlock-CSIM-operations-by-default.patch \ file://78-mm-digi-xbee-cellular.rules \
" "
# 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So # 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So
@ -17,4 +17,8 @@ do_install_append() {
install -d ${D}${sysconfdir}/network/if-pre-up.d/ ${D}${sysconfdir}/network/if-post-down.d/ install -d ${D}${sysconfdir}/network/if-pre-up.d/ ${D}${sysconfdir}/network/if-post-down.d/
install -m 0755 ${WORKDIR}/cellularifupdown ${D}${sysconfdir}/network/if-pre-up.d/ install -m 0755 ${WORKDIR}/cellularifupdown ${D}${sysconfdir}/network/if-pre-up.d/
ln -sf ../if-pre-up.d/cellularifupdown ${D}${sysconfdir}/network/if-post-down.d/cellularifupdown ln -sf ../if-pre-up.d/cellularifupdown ${D}${sysconfdir}/network/if-post-down.d/cellularifupdown
# Install udev rules for XBee cellular
install -d ${D}${nonarch_base_libdir}/udev/rules.d
install -m 0644 ${WORKDIR}/78-mm-digi-xbee-cellular.rules ${D}${nonarch_base_libdir}/udev/rules.d/
} }

View File

@ -0,0 +1,45 @@
SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile \
broadband (2G/3G/4G) devices and connections"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
LICENSE = "GPL-2.0 & LGPL-2.1"
LIC_FILES_CHKSUM = " \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
"
DEPENDS = "dbus-glib glib-2.0 intltool-native libgudev"
PV = "1.7.0+git${SRCPV}"
SRC_URI = " \
git://anongit.freedesktop.org/git/ModemManager/ModemManager.git;protocol=https \
file://0001-configure.ac-add-foreign-automake-option.patch \
file://0003-port-serial-add-B230400-and-B921600-missing-baudrate.patch \
"
SRCREV = "d09bc8baaa9fe93a72bb715530b1403a7a81c891"
S = "${WORKDIR}/git"
PACKAGECONFIG ??= "mbim qmi polkit \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
"
PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,"
PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit"
PACKAGECONFIG[mbim] = "--with-mbim,--enable-mbim=no,libmbim"
PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
inherit autotools bash-completion gettext gobject-introspection gtk-doc pkgconfig systemd vala
FILES_${PN} += " \
${datadir}/icons \
${datadir}/polkit-1 \
${datadir}/dbus-1 \
${libdir}/ModemManager \
${systemd_unitdir}/system \
"
FILES_${PN}-dev += "${libdir}/ModemManager/*.la"
FILES_${PN}-staticdev += "${libdir}/ModemManager/*.a"
FILES_${PN}-dbg += "${libdir}/ModemManager/.debug"
SYSTEMD_SERVICE_${PN} = "ModemManager.service"

View File

@ -21,6 +21,7 @@ lockfile="/var/lock/${scriptname}.lock"
lockfd="9" lockfd="9"
BT_INIT="/etc/init.d/bluetooth-init" BT_INIT="/etc/init.d/bluetooth-init"
BT_DAEMON="/etc/init.d/bluetooth"
usage() { usage() {
printf "\nSuspend system to RAM memory\n" printf "\nSuspend system to RAM memory\n"
@ -37,6 +38,7 @@ suspend_interfaces() {
# Suspend bluetooth interface # Suspend bluetooth interface
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1" hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
${BT_DAEMON} stop >/dev/null
${BT_INIT} stop >/dev/null ${BT_INIT} stop >/dev/null
} }
@ -47,7 +49,10 @@ resume_interfaces() {
fi fi
# Resume bluetooth interface # Resume bluetooth interface
[ -n "${up_bt_on_resume}" ] && ${BT_INIT} start >/dev/null if [ -n "${up_bt_on_resume}" ]; then
${BT_INIT} start >/dev/null
${BT_DAEMON} start >/dev/null
fi
} }
enter_critical_section() { enter_critical_section() {

View File

@ -21,6 +21,7 @@ lockfile="/var/lock/${scriptname}.lock"
lockfd="9" lockfd="9"
BT_INIT="/etc/init.d/bluetooth-init" BT_INIT="/etc/init.d/bluetooth-init"
BT_DAEMON="/etc/init.d/bluetooth"
usage() { usage() {
printf "\nSuspend system to RAM memory\n" printf "\nSuspend system to RAM memory\n"
@ -40,6 +41,7 @@ suspend_interfaces() {
# Suspend bluetooth interface # Suspend bluetooth interface
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1" hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
${BT_DAEMON} stop >/dev/null
${BT_INIT} stop >/dev/null ${BT_INIT} stop >/dev/null
} }
@ -50,7 +52,10 @@ resume_interfaces() {
fi fi
# Resume bluetooth interface # Resume bluetooth interface
[ -n "${up_bt_on_resume}" ] && ${BT_INIT} start >/dev/null if [ -n "${up_bt_on_resume}" ]; then
${BT_INIT} start >/dev/null
${BT_DAEMON} start >/dev/null
fi
} }
enter_critical_section() { enter_critical_section() {

View File

@ -1,4 +1,4 @@
# Copyright (C) 2013 Digi International. # Copyright (C) 2013-2017 Digi International Inc.
FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:" FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:"
@ -82,7 +82,6 @@ do_install_append() {
if [ -n "${CELLULAR_PORT}" ]; then if [ -n "${CELLULAR_PORT}" ]; then
sed -i -e 's/^\([[:blank:]]*\)port/\1port ${CELLULAR_PORT}/g' ${D}${sysconfdir}/network/interfaces sed -i -e 's/^\([[:blank:]]*\)port/\1port ${CELLULAR_PORT}/g' ${D}${sysconfdir}/network/interfaces
sed -i -e 's,dhcp,manual,g' ${D}${sysconfdir}/network/interfaces
else else
sed -i -e '/^[[:blank:]]*port/d' ${D}${sysconfdir}/network/interfaces sed -i -e '/^[[:blank:]]*port/d' ${D}${sysconfdir}/network/interfaces
fi fi
@ -139,3 +138,21 @@ do_install_append_ccimx6ul() {
sed -i -e "s,##WLAN1_STATIC_GATEWAY##,${WLAN1_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces sed -i -e "s,##WLAN1_STATIC_GATEWAY##,${WLAN1_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces
sed -i -e "s,##WLAN1_STATIC_DNS##,${WLAN1_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces sed -i -e "s,##WLAN1_STATIC_DNS##,${WLAN1_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces
} }
# Disable wireless interfaces on first boot for non-wireless variants
pkg_postinst_${PN}() {
if [ -n "$D" ]; then
exit 1
fi
if [ ! -d "/proc/device-tree/wireless" ]; then
sed -i -e '/^auto wlan/{s,^,#,g};/^auto p2p/{s,^,#,g}' /etc/network/interfaces
fi
# Create the symlinks in the different runlevels
if type update-rc.d >/dev/null 2>/dev/null; then
update-rc.d ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS}
fi
exit 0
}

View File

@ -38,7 +38,7 @@ REBOOT_TIME=10
# @param ${1} - Text to print. # @param ${1} - Text to print.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
log() { log() {
echo "[RECOVERY] ${1}" echo "[RECOVERY] ${1}" 1>&2
} }
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -254,21 +254,56 @@ format_emmc_block() {
# #
# Get absolute path of update package searching in local media # Get absolute path of update package searching in local media
# #
# @param ${1} - SWU package name # @param ${1} - SWU package
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
swu_package_path() { swu_package_path() {
for i in ${UPDATE_MOUNT_DIR} $(echo ${USB_MOUNT_DIR}/*); do # Check whether the package is local and get the absolute path.
echo $i | grep -qs "${USB_MOUNT_DIR}/\*" && continue if echo "${1}" | grep -qs '^file://'; then
if [ -f "${i}/${1}" ]; then local pkg_name="$(basename ${1})"
swu_abspath="${i}/${1}"
break
fi
done
if [ -n "${swu_abspath}" ]; then for i in ${UPDATE_MOUNT_DIR} $(echo ${USB_MOUNT_DIR}/*); do
echo "${swu_abspath}" echo $i | grep -qs "${USB_MOUNT_DIR}/\*" && continue
if [ -f "${i}/${pkg_name}" ]; then
swu_abspath="${i}/${pkg_name}"
break
fi
done
if [ -n "${swu_abspath}" ]; then
echo "${swu_abspath}"
else
quit_with_error "Unable to find update package '${pkg_name}'"
fi
else else
quit_with_error "Unable to find update package '${1}'" echo "${1}"
fi
}
#------------------------------------------------------------------------------
# Function - check_swu_package
#
# Check if the update package is a valid one and get its absolute path
#
# @param ${1} - SWU package
#------------------------------------------------------------------------------
check_swu_package() {
log "Checking update package '$(basename ${1})'"
if [ -z "${1}" ]; then
quit_with_error "Firmware update package not specified"
fi
update_package="$(swu_package_path ${1})"
# Check software update package.
if [ -f "${PUBLIC_KEY}" ]; then
swupdate -c -i "${update_package}" -k "${PUBLIC_KEY}"
else
swupdate -c -i "${update_package}"
fi
if [ "$?" != "0" ]; then
quit_with_error "Invalid update package '$(basename ${1})'"
fi fi
} }
@ -395,11 +430,17 @@ for arg in ${COMMAND}; do
esac esac
done done
# Sanity checks.
if [ -n "${update_package_bool}" ]; then
check_swu_package "${update_package}"
fi
# Check if encryption key command is configured. # Check if encryption key command is configured.
if [ -n "${encryption_key_bool}" ]; then if [ -n "${encryption_key_bool}" ]; then
log "Trustfence encryption key setup requested (new key: ${encryption_key:-random})" log "Trustfence encryption key setup requested (new key: ${encryption_key:-random})"
psplash_message "Configuring new encryption key..." psplash_message "Configuring new encryption key..."
psplash_progress "0" psplash_progress "0"
trustfence-tool "--newkey${encryption_key:+=${encryption_key}}" trustfence-tool "--newkey${encryption_key:+=${encryption_key}}"
if [ "$?" = "0" ]; then if [ "$?" = "0" ]; then
psplash_progress "10" psplash_progress "10"
@ -425,35 +466,27 @@ if [ -n "${update_package_bool}" ]; then
log "Firmware update requested" log "Firmware update requested"
psplash_message "Updating firmware..." psplash_message "Updating firmware..."
psplash_progress "0" psplash_progress "0"
if [ -z "${update_package}" ]; then
quit_with_error "Firmware update package not specified" # Format the UBI volume before updating.
if [ "$(is_nand)" = "yes" ]; then
psplash_message "Formatting rootfs partition..."
format_ubi_volume rootfs
psplash_progress "0"
fi
log "Update package location: ${update_package}"
# Execute the progress binary.
progress -wp &
# Execute the software update.
if [ -f "${PUBLIC_KEY}" ]; then
swupdate -f "${SW_CONFIG}" -i "${update_package}" -k "${PUBLIC_KEY}"
else else
# Format the UBI volume before updating. swupdate -f "${SW_CONFIG}" -i "${update_package}"
if [ "$(is_nand)" = "yes" ]; then fi
psplash_message "Formatting rootfs partition..." if [ "$?" = "0" ]; then
format_ubi_volume rootfs log "Firmware update process succeed!"
psplash_progress "0" else
fi quit_with_error "Error executing the firmware update"
# Check whether the package is local and get the absolute path
if echo "${update_package}" | grep -qs '^file://'; then
update_package="$(swu_package_path $(basename ${update_package}))"
fi
log "Update package location: ${update_package}"
# Execute the progress binary.
progress -wp &
# Execute the software update.
if [ -f "${PUBLIC_KEY}" ]; then
swupdate -f "${SW_CONFIG}" -i "${update_package}" -k "${PUBLIC_KEY}"
else
swupdate -f "${SW_CONFIG}" -i "${update_package}"
fi
if [ "$?" = "0" ]; then
log "Firmware update process succeed!"
else
quit_with_error "Error executing the firmware update"
fi
fi fi
fi fi

View File

@ -14,6 +14,6 @@ do_install() {
install -m 0755 hdp-test.py ${D}${bindir} install -m 0755 hdp-test.py ${D}${bindir}
} }
RDEPENDS_${PN} = "python python-argparse python-crypt python-dbus python-pygobject" RDEPENDS_${PN} = "python3 python3-argparse python3-crypt python3-dbus python3-pygobject"
COMPATIBLE_MACHINE = "(ccardimx28|ccimx6$|ccimx6ul)" COMPATIBLE_MACHINE = "(ccardimx28|ccimx6$|ccimx6ul)"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
@ -9,12 +9,13 @@
import sys import sys
import os import os
import glib from gi.repository import GLib
import dbus import dbus
import socket import socket
import dbus.service import dbus.service
import gobject from gi.repository import GObject
from dbus.mainloop.glib import DBusGMainLoop from dbus.mainloop.glib import DBusGMainLoop
from dbus.exceptions import DBusException
import argparse import argparse
# from hdp_utils import * # from hdp_utils import *
@ -31,18 +32,8 @@ class MessageType:
Release_Confirmation, Data, Unknown) = range(0, 6) Release_Confirmation, Data, Unknown) = range(0, 6)
class HdpMessage: class HdpMessage:
def s2b(self, msg):
if msg is None:
return None
return [ord(x) for x in msg]
def b2s(self, msg):
if msg is None:
return None
return "".join([chr(int(x)) for x in msg])
def getAssociationResponse(self, invokeId): def getAssociationResponse(self, invokeId):
return self.b2s(( return bytes((
0xe3, 0x00, #APDU CHOICE Type(AareApdu) 0xe3, 0x00, #APDU CHOICE Type(AareApdu)
0x00, 0x2c, #CHOICE.length = 44 0x00, 0x2c, #CHOICE.length = 44
0x00, 0x00, #result=accept (known config) 0x00, 0x00, #result=accept (known config)
@ -62,7 +53,7 @@ class HdpMessage:
)) ))
def getConfigurationResp(self, invokeId): def getConfigurationResp(self, invokeId):
return self.b2s(( return bytes((
0xe7, 0x00, #APDU CHOICE Type(PrstApdu) 0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
0x00, 0x16, #CHOICE.length = 22 0x00, 0x16, #CHOICE.length = 22
0x00, 0x14, #OCTET STRING.length = 20 0x00, 0x14, #OCTET STRING.length = 20
@ -78,24 +69,24 @@ class HdpMessage:
)) ))
def getReleaseRequest(self, invokeId): def getReleaseRequest(self, invokeId):
return self.b2s((0xe4, 0x00, 0x00, 0x02, 0x00, 0x00)) return bytes((0xe4, 0x00, 0x00, 0x02, 0x00, 0x00))
def getReleaseResponse(self, invokeId): def getReleaseResponse(self, invokeId):
return self.b2s((0xe5, 0x00, 0x00, 0x02, 0x00, 0x00)) return bytes((0xe5, 0x00, 0x00, 0x02, 0x00, 0x00))
def getDataResponse(self, invokeId): def getDataResponse(self, invokeId):
return self.b2s(( return bytes((
0xe7, 0x00, #APDU CHOICE Type(PrstApdu) 0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
0x00, 0x12, #CHOICE.length = 18 0x00, 0x12, #CHOICE.length = 18
0x00, 0x10, #OCTET STRING.length = 16 0x00, 0x10, #OCTET STRING.length = 16
invokeId[0], invokeId[1], #invoke-id (mirrored from invocation) invokeId[0], invokeId[1], #invoke-id (mirrored from invocation)
0x02, 0x01, #CHOICE(Remote Operation Response | Confirmed Event Report) 0x02, 0x01, #CHOICE(Remote Operation Response | Confirmed Event Report)
0x00, 0x0a, #CHOICE.length = 10 0x00, 0x0a, #CHOICE.length = 10
0x00, 0x00, #obj-handle = 0 (MDS object) 0x00, 0x00, #obj-handle = 0 (MDS object)
0x00, 0x00, 0x00, 0x00, #currentTime = 0 0x00, 0x00, 0x00, 0x00, #currentTime = 0
0x0d, 0x1d, #event-type = MDC_NOTI_SCAN_REPORT_FIXED 0x0d, 0x1d, #event-type = MDC_NOTI_SCAN_REPORT_FIXED
0x00, 0x00, #event-reply-info.length = 0 0x00, 0x00, #event-reply-info.length = 0
)) ))
def parse(self, string_msg): def parse(self, string_msg):
# #
@ -113,28 +104,27 @@ class HdpMessage:
invokeId = (0, 0) invokeId = (0, 0)
sp02 = 0 sp02 = 0
pulse = 0 pulse = 0
msg = self.s2b(string_msg)
if debugOn: if debugOn:
print "IEEE opcode received: %x, length = %d" % (int(msg[0]), len(msg)) print("IEEE opcode received: %x, length = %d" % (int(string_msg[0]), len(string_msg)))
for i in range(len(msg)): for i in range(len(string_msg)):
if ((i & 15) == 0): if ((i & 15) == 0):
print print
print '%2.2X' % int(msg[i]), print('%2.2X' % int(string_msg[i]),)
print print
if int(msg[0]) == 0xe2: if int(string_msg[0]) == 0xe2:
msg_type = MessageType.Association msg_type = MessageType.Association
elif int(msg[0]) == 0xe7: elif int(string_msg[0]) == 0xe7:
invokeId = int(msg[6]), int(msg[7]) invokeId = int(string_msg[6]), int(string_msg[7])
if int(msg[18]) == 0x0d and int(msg[19]) == 0x1c: if int(string_msg[18]) == 0x0d and int(string_msg[19]) == 0x1c:
msg_type = MessageType.Configuration msg_type = MessageType.Configuration
else: else:
msg_type = MessageType.Data msg_type = MessageType.Data
sp02 = int(msg[35]) sp02 = int(string_msg[35])
pulse = int(msg[49]) pulse = int(string_msg[49])
elif int(msg[0]) == 0xe4: elif int(string_msg[0]) == 0xe4:
msg_type = MessageType.Release_Request msg_type = MessageType.Release_Request
elif int(msg[0]) == 0xe5: elif int(string_msg[0]) == 0xe5:
msg_type = MessageType.Release_Confirmation msg_type = MessageType.Release_Confirmation
else: else:
msg_type = MessageType.Unknown msg_type = MessageType.Unknown
@ -152,7 +142,7 @@ def receive_data(sk, evt):
data = None data = None
disconnecting = False disconnecting = False
hdp = HdpMessage() hdp = HdpMessage()
if evt & glib.IO_IN: if evt & GLib.IO_IN:
try: try:
data = sk.recv(1024) data = sk.recv(1024)
except IOError: except IOError:
@ -163,44 +153,44 @@ def receive_data(sk, evt):
invokeId = result[1] invokeId = result[1]
if msgType == MessageType.Association: if msgType == MessageType.Association:
if debugOn: if debugOn:
print "Oximeter has associated" print("Oximeter has associated")
sk.send(hdp.getAssociationResponse(invokeId)) sk.send(hdp.getAssociationResponse(invokeId))
elif msgType == MessageType.Configuration: elif msgType == MessageType.Configuration:
if debugOn: if debugOn:
print "Received configuration data" print("Received configuration data")
sk.send(hdp.getConfigurationResponse(invokeId)) sk.send(hdp.getConfigurationResponse(invokeId))
elif msgType == MessageType.Release_Request: elif msgType == MessageType.Release_Request:
if debugOn: if debugOn:
print "Received release request" print("Received release request")
sk.send(hdp.getReleaseResponse(invokeId)) sk.send(hdp.getReleaseResponse(invokeId))
disconnecting = True disconnecting = True
elif msgType == MessageType.Release_Confirmation: elif msgType == MessageType.Release_Confirmation:
if debugOn: if debugOn:
print "Received release confirmation" print("Received release confirmation")
disconnecting = True disconnecting = True
elif msgType == MessageType.Data: elif msgType == MessageType.Data:
sk.send(hdp.getDataResponse(invokeId)) sk.send(hdp.getDataResponse(invokeId))
sp02 = result[2] sp02 = result[2]
pulse = result[3] pulse = result[3]
if debugOn: if debugOn:
print "Received data from oximeter" print("Received data from oximeter")
print "SpO2 Level: %d, Beats/second: %d" % \ print("SpO2 Level: %d, Beats/second: %d" % \
(result[2], result[3]) (result[2], result[3]))
if debugOn: if debugOn:
print "Sending disconnect" print("Sending disconnect")
sk.send(hdp.getReleaseRequest(invokeId)) sk.send(hdp.getReleaseRequest(invokeId))
else: else:
print "Received unknown message, disconnecting" print("Received unknown message, disconnecting")
sk.send(hdp.getReleaseRequest(invokeId)) sk.send(hdp.getReleaseRequest(invokeId))
disconnecting = True disconnecting = True
if disconnecting or evt != glib.IO_IN or not data: if disconnecting or evt != GLib.IO_IN or not data:
try: try:
sk.shutdown(2) sk.shutdown(2)
except IOError: except IOError:
pass pass
sk.close() sk.close()
print "Disconnected from oximeter" print("Disconnected from oximeter")
return False return False
else: else:
return True return True
@ -223,9 +213,9 @@ class SignalHandler(object):
dbus_interface=HEALTH_DEVICE_INTERFACE) dbus_interface=HEALTH_DEVICE_INTERFACE)
def ChannelConnected(self, channel, interface, device): def ChannelConnected(self, channel, interface, device):
print "%s has connected" % device print("%s has connected" % device)
if debugOn: if debugOn:
print "Channel: %s" % channel print("Channel: %s" % channel)
# #
# The oximeter has connected to us. Let's get # The oximeter has connected to us. Let's get
# a socket for the connection. # a socket for the connection.
@ -241,14 +231,14 @@ class SignalHandler(object):
# Now set up our receiver function to be called # Now set up our receiver function to be called
# when interesting events are detected on that # when interesting events are detected on that
# socket # socket
watch_bitmap = glib.IO_IN | glib.IO_ERR| glib.IO_HUP | glib.IO_NVAL watch_bitmap = GLib.IO_IN | GLib.IO_ERR| GLib.IO_HUP | GLib.IO_NVAL
glib.io_add_watch(sk, watch_bitmap, receive_data) GLib.io_add_watch(sk, watch_bitmap, receive_data)
except DBusException: except DBusException:
print "Error communicating with Oximeter." print("Error communicating with Oximeter.")
print "Please make sure the Oximeter has fresh batteries." print("Please make sure the Oximeter has fresh batteries.")
def ChannelDeleted(self, channel, interface, device): def ChannelDeleted(self, channel, interface, device):
print "Device %s channel %s deleted" % (device, channel) print("Device %s channel %s deleted" % (device, channel))
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("-d", "--debug", help="supply debug output", parser.add_argument("-d", "--debug", help="supply debug output",
@ -257,7 +247,7 @@ args = parser.parse_args()
debugOn = args.debug debugOn = args.debug
DBusGMainLoop(set_as_default=True) DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop() loop = GObject.MainLoop()
bus = dbus.SystemBus() bus = dbus.SystemBus()
signal_handler = SignalHandler() signal_handler = SignalHandler()
@ -275,16 +265,16 @@ config = dbus.Dictionary({"Role": "Sink", "DataType": dbus.types.UInt16(0x1004),
manager = dbus.Interface(bus.get_object(BUS_NAME, PATH), manager = dbus.Interface(bus.get_object(BUS_NAME, PATH),
HEALTH_MANAGER_INTERFACE) HEALTH_MANAGER_INTERFACE)
app = manager.CreateApplication(config) app = manager.CreateApplication(config)
print "HDP application created, waiting for connection from" print("HDP application created, waiting for connection from")
print "a pulse oximeter. Press control-c to terminate." print("a pulse oximeter. Press control-c to terminate.")
try: try:
loop = glib.MainLoop() loop = GLib.MainLoop()
loop.run() loop.run()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
finally: finally:
manager.DestroyApplication(app) manager.DestroyApplication(app)
print print
print "Application stopped" print("Application stopped")
print print

View File

@ -90,7 +90,7 @@ make_report(){
echo "- -" echo "- -"
echo "--------------------------------------" echo "--------------------------------------"
echo "" echo ""
for f in $(find /var/log/ -name *.log); do for f in $(find /var/log/ -name "*.log"); do
echo "${f} FILE"; echo "${f} FILE";
echo "---------------------------------------"; echo "---------------------------------------";
cat ${f}; cat ${f};
@ -196,8 +196,15 @@ make_report(){
else else
echo "[NOT FOUND] /etc/wpa_supplicant.conf" echo "[NOT FOUND] /etc/wpa_supplicant.conf"
fi fi
echo "" echo ""
if [ -f "/etc/wpa_supplicant_p2p.conf" ]; then
echo "wpa_supplicant_p2p.conf:"
cat "/etc/wpa_supplicant_p2p.conf"
else
echo "[NOT FOUND] /etc/wpa_supplicant_p2p.conf"
fi
echo ""
hostapd -v 2>&1 hostapd -v 2>&1
echo "" echo ""
if [ -f "/etc/hostapd.conf" ]; then if [ -f "/etc/hostapd.conf" ]; then
@ -206,6 +213,20 @@ make_report(){
else else
echo "[NOT FOUND] hostapd.conf" echo "[NOT FOUND] hostapd.conf"
fi fi
echo ""
if [ -f "/etc/hostapd_wlan0.conf" ]; then
echo "hostapd_wlan0.conf:"
cat "/etc/hostapd_wlan0.conf"
else
echo "[NOT FOUND] /etc/hostapd_wlan0.conf"
fi
echo ""
if [ -f "/etc/hostapd_wlan1.conf" ]; then
echo "hostapd_wlan1.conf:"
cat "/etc/hostapd_wlan1.conf"
else
echo "[NOT FOUND] /etc/hostapd_wlan1.conf"
fi
printf "\n\n" printf "\n\n"
echo "--------------------------------------" echo "--------------------------------------"

View File

@ -9,6 +9,8 @@ SRC_URI_append_ccimx6sbc = " \
file://dey-audio-sgtl5000.conf \ file://dey-audio-sgtl5000.conf \
" "
EXTRA_OECONF_append_ccimx6sbc = " --disable-memfd"
do_install_append_ccimx6sbc() { do_install_append_ccimx6sbc() {
install -d ${D}${sysconfdir}/udev/scripts install -d ${D}${sysconfdir}/udev/scripts
install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts