diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6qpsbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6/bluetooth-init similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6qpsbc/bluetooth-init rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6/bluetooth-init diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/bluetooth-init_atheros similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/bluetooth-init rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/bluetooth-init_atheros diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/main.conf_atheros similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/main.conf rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/main.conf_atheros diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend index 114a8f963..4cdee0959 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend @@ -29,6 +29,11 @@ QCA65XX_COMMON_PATCHES = " \ SRC_URI_append_ccimx6ul = " ${QCA65XX_COMMON_PATCHES}" SRC_URI_append_ccimx6 = " ${QCA65XX_COMMON_PATCHES}" +SRC_URI_append_ccimx6sbc = " \ + file://bluetooth-init_atheros \ + file://main.conf_atheros \ +" + inherit update-rc.d PACKAGECONFIG_append = " experimental" @@ -47,10 +52,34 @@ do_install_append() { fi } +do_install_append_ccimx6sbc() { + install -m 0755 ${WORKDIR}/bluetooth-init_atheros ${D}${sysconfdir}/bluetooth-init_atheros + install -m 0644 ${WORKDIR}/main.conf_atheros ${D}${sysconfdir}/bluetooth/ + sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \ + ${D}${sysconfdir}/bluetooth/main.conf_atheros +} + +pkg_postinst_ontarget_${PN}_ccimx6sbc() { + # Only execute the script on wireless ccimx6 platforms + if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then + for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do + if [[ "$id" == "sdio:c00v0271d0301" ]] ; then + mv /etc/bluetooth-init_atheros /etc/bluetooth-init + mv /etc/bluetooth/main.conf_atheros /etc/bluetooth/main.conf + break + elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then + rm /etc/bluetooth-init_atheros + rm /etc/bluetooth/main.conf_atheros + break + fi + done + fi +} + PACKAGES =+ "${PN}-init" -FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf" -FILES_${PN}-init = " ${sysconfdir}/bluetooth-init \ +FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf*" +FILES_${PN}-init = " ${sysconfdir}/bluetooth-init* \ ${sysconfdir}/init.d/bluetooth-init \ ${systemd_unitdir}/system/bluetooth-init.service \ " diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.55.bbappend b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.55.bbappend index f94752b63..b6cd5411b 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.55.bbappend +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.55.bbappend @@ -24,6 +24,11 @@ SRC_URI_append_ccimx6 = " ${QCA65XX_COMMON_PATCHES}" SRC_URI_append_ccimx8x = " ${QCA65XX_COMMON_PATCHES}" SRC_URI_append_ccimx8m = " ${QCA65XX_COMMON_PATCHES}" +SRC_URI_append_ccimx6sbc = " \ + file://bluetooth-init_atheros \ + file://main.conf_atheros \ +" + inherit update-rc.d do_install_append() { @@ -47,14 +52,38 @@ do_install_append() { sed -i -e '/#include/{s,src/shared/,,g}' ${D}${includedir}/bluetooth-internal/att.h } +do_install_append_ccimx6sbc() { + install -m 0755 ${WORKDIR}/bluetooth-init_atheros ${D}${sysconfdir}/bluetooth-init_atheros + install -m 0644 ${WORKDIR}/main.conf_atheros ${D}${sysconfdir}/bluetooth/ + sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \ + ${D}${sysconfdir}/bluetooth/main.conf_atheros +} + +pkg_postinst_ontarget_${PN}_ccimx6sbc() { + # Only execute the script on wireless ccimx6 platforms + if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then + for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do + if [[ "$id" == "sdio:c00v0271d0301" ]] ; then + mv /etc/bluetooth-init_atheros /etc/bluetooth-init + mv /etc/bluetooth/main.conf_atheros /etc/bluetooth/main.conf + break + elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then + rm /etc/bluetooth-init_atheros + rm /etc/bluetooth/main.conf_atheros + break + fi + done + fi +} + PACKAGES =+ "${PN}-init" PACKAGECONFIG_append = " health-profiles \ mesh \ btpclient \ " -FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf" -FILES_${PN}-init = " ${sysconfdir}/bluetooth-init \ +FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf*" +FILES_${PN}-init = " ${sysconfdir}/bluetooth-init* \ ${sysconfdir}/init.d/bluetooth-init \ ${systemd_unitdir}/system/bluetooth-init.service \ " diff --git a/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6sbc/wpa_supplicant_p2p.conf b/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6sbc/wpa_supplicant_p2p.conf_atheros similarity index 100% rename from meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6sbc/wpa_supplicant_p2p.conf rename to meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6sbc/wpa_supplicant_p2p.conf_atheros diff --git a/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend b/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend index 91594a3d5..d11f5531d 100644 --- a/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2020 Digi International. +# Copyright (C) 2013-2021 Digi International. FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" @@ -11,6 +11,8 @@ SRC_URI += " \ file://wpa_supplicant_p2p.conf \ " +SRC_URI_append_ccimx6sbc = " file://wpa_supplicant_p2p.conf_atheros" + do_install_append() { install -m 600 ${WORKDIR}/wpa_supplicant_p2p.conf ${D}${sysconfdir}/wpa_supplicant_p2p.conf sed -i -e "s,##WLAN_P2P_DEVICE_NAME##,${WLAN_P2P_DEVICE_NAME},g" \ @@ -18,8 +20,19 @@ do_install_append() { } do_install_append_ccimx6sbc() { - # Customize supplicant file - cat <>${D}${sysconfdir}/wpa_supplicant.conf + # Install atheros variant of the p2p .conf file + install -m 600 ${WORKDIR}/wpa_supplicant_p2p.conf_atheros ${D}${sysconfdir}/wpa_supplicant_p2p.conf_atheros + sed -i -e "s,##WLAN_P2P_DEVICE_NAME##,${WLAN_P2P_DEVICE_NAME},g" \ + ${D}${sysconfdir}/wpa_supplicant_p2p.conf_atheros +} + +pkg_postinst_ontarget_${PN}_ccimx6sbc() { + # Only execute the script on wireless ccimx6 platforms + if [ -e "/proc/device-tree/wireless/mac-address" ]; then + for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do + if [[ "$id" == "sdio:c00v0271d0301" ]] ; then + # Customize supplicant file + cat <>/etc/wpa_supplicant.conf # -- SoftAP mode # ap_scan=2 @@ -34,6 +47,14 @@ do_install_append_ccimx6sbc() { # } EOF + mv /etc/wpa_supplicant_p2p.conf_atheros /etc/wpa_supplicant_p2p.conf + break + elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then + rm /etc/wpa_supplicant_p2p.conf_atheros + break + fi + done + fi } PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby index 89d57d3c4..897402db1 100755 --- a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby @@ -3,7 +3,7 @@ # # standby # -# Copyright (C) 2009-2019 by Digi International Inc. +# Copyright (C) 2009-2021 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -40,7 +40,8 @@ suspend_interfaces() { for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}" done - grep -qs '^ath6kl_sdio' /proc/modules && rmmod ath6kl_sdio ath6kl_core + [ -e /sys/module/ath6kl_sdio ] && rmmod ath6kl_sdio ath6kl_core && wlan_device_id="301" + [ -e /sys/module/wlan ] && rmmod wlan && wlan_device_id="50A" fi # Suspend bluetooth interface @@ -55,7 +56,7 @@ resume_interfaces() { # Resume wireless interfaces if [ -d "/proc/device-tree/wireless" ]; then # Trigger wireless module loading event, and wait until the interface exists - udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301" + udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0${wlan_device_id}" timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null # Bring up the interfaces that were bring down on suspend diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions index 9c8d5d1f0..0cc258048 100644 --- a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions @@ -3,7 +3,7 @@ # # standby-actions # -# Copyright (C) 2019 by Digi International Inc. +# Copyright (C) 2019-2021 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -27,7 +27,8 @@ if [ "${1}" == "pre" ]; then done echo ${RESUME_IFACES} > /tmp/suspend_wlan_ifaces - grep -qs '^ath6kl_sdio' /proc/modules && rmmod ath6kl_sdio ath6kl_core + [ -e /sys/module/ath6kl_sdio ] && rmmod ath6kl_sdio ath6kl_core && echo "301" > /tmp/suspend_wlan_device_id + [ -e /sys/module/wlan ] && rmmod wlan && echo "50A" > /tmp/suspend_wlan_device_id fi # Suspend bluetooth interface @@ -40,7 +41,8 @@ elif [ "${1}" == "post" ]; then # Resume wireless interfaces if [ -d "/proc/device-tree/wireless" ]; then # Trigger wireless module loading event, and wait until the interface exists - udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301" + udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0$(cat /tmp/suspend_wlan_device_id)" + rm -rf /tmp/suspend_wlan_driver timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null # Bring up the interfaces that were brought down on suspend diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/ccimx6sbc/interfaces.br0.example b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/ccimx6sbc/interfaces.br0.atheros.example similarity index 100% rename from meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/ccimx6sbc/interfaces.br0.example rename to meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/ccimx6sbc/interfaces.br0.atheros.example diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend index 9ca62c4d4..22dbe697e 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2020 Digi International Inc. +# Copyright (C) 2013-2021 Digi International Inc. FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:" @@ -22,10 +22,15 @@ SRC_URI_append = " \ ${@oe.utils.conditional('HAS_WIFI_VIRTWLANS', 'true', '${WIFI_VIRTWLANS_FILES}', '', d)} \ " +SRC_URI_append_ccimx6sbc = " file://interfaces.br0.atheros.example" + SYSTEMD_SERVICE_${PN} = "ifupdown.service" WPA_DRIVER ?= "nl80211" +IS_CCIMX6 ?= "0" +IS_CCIMX6_ccimx6sbc = "1" + do_install_append() { # Install 'ifupdown' scripts install -m 0755 ${WORKDIR}/p2plink ${D}${sysconfdir}/network/if-up.d/ @@ -63,7 +68,15 @@ do_install_append() { install_wlan1 fi - cat ${WORKDIR}/interfaces.br0.example >> ${D}${sysconfdir}/network/interfaces + # On ccimx6, install the two possible br0 fragments in the filesystem + # so we can decide which one to use during runtime depending on the + # wireless MAC used on the SOM. + if [ "${IS_CCIMX6}" = "1" ]; then + install -m 0644 ${WORKDIR}/interfaces.br0.example ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/interfaces.br0.atheros.example ${D}${sysconfdir} + else + cat ${WORKDIR}/interfaces.br0.example >> ${D}${sysconfdir}/network/interfaces + fi } install_virtwlans() { @@ -76,24 +89,34 @@ WLAN1_POST_UP_ACTION = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'syst WLAN1_PRE_DOWN_ACTION = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemctl stop hostapd@wlan1.service', '/etc/init.d/hostapd stop', d)}" install_wlan1() { + TARGET_WLAN1_FILE="${D}${sysconfdir}/network/interfaces" + if [ -n "${HAVE_WIFI}" ]; then - cat ${WORKDIR}/interfaces.wlan1.${WLAN1_MODE} >> ${D}${sysconfdir}/network/interfaces - [ -n "${WLAN1_AUTO}" ] && sed -i -e 's/^#auto wlan1/auto wlan1/g' ${D}${sysconfdir}/network/interfaces + # On the ccimx6, install the wlan1 fragment in the filesystem + # so we can decide if we want to incorporate it or not + # depending on the wireless MAC used on the SOM. + if [ "${IS_CCIMX6}" = "1" ]; then + TARGET_WLAN1_FILE="${D}${sysconfdir}/interfaces.wlan1.example" + install -m 0644 ${WORKDIR}/interfaces.wlan1.${WLAN1_MODE} ${TARGET_WLAN1_FILE} + else + cat ${WORKDIR}/interfaces.wlan1.${WLAN1_MODE} >> ${TARGET_WLAN1_FILE} + fi + [ -n "${WLAN1_AUTO}" ] && sed -i -e 's/^#auto wlan1/auto wlan1/g' ${TARGET_WLAN1_FILE} fi # Remove config entries if corresponding variable is not defined - [ -z "${WLAN1_STATIC_DNS}" ] && sed -i -e "/##WLAN1_STATIC_DNS##/d" ${D}${sysconfdir}/network/interfaces - [ -z "${WLAN1_STATIC_GATEWAY}" ] && sed -i -e "/##WLAN1_STATIC_GATEWAY##/d" ${D}${sysconfdir}/network/interfaces - [ -z "${WLAN1_STATIC_IP}" ] && sed -i -e "/##WLAN1_STATIC_IP##/d" ${D}${sysconfdir}/network/interfaces - [ -z "${WLAN1_STATIC_NETMASK}" ] && sed -i -e "/##WLAN1_STATIC_NETMASK##/d" ${D}${sysconfdir}/network/interfaces + [ -z "${WLAN1_STATIC_DNS}" ] && sed -i -e "/##WLAN1_STATIC_DNS##/d" ${TARGET_WLAN1_FILE} + [ -z "${WLAN1_STATIC_GATEWAY}" ] && sed -i -e "/##WLAN1_STATIC_GATEWAY##/d" ${TARGET_WLAN1_FILE} + [ -z "${WLAN1_STATIC_IP}" ] && sed -i -e "/##WLAN1_STATIC_IP##/d" ${TARGET_WLAN1_FILE} + [ -z "${WLAN1_STATIC_NETMASK}" ] && sed -i -e "/##WLAN1_STATIC_NETMASK##/d" ${TARGET_WLAN1_FILE} # Replace interface parameters - sed -i -e "s,##WLAN1_STATIC_IP##,${WLAN1_STATIC_IP},g" ${D}${sysconfdir}/network/interfaces - sed -i -e "s,##WLAN1_STATIC_NETMASK##,${WLAN1_STATIC_NETMASK},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_POST_UP_ACTION##,${WLAN1_POST_UP_ACTION},g" ${D}${sysconfdir}/network/interfaces - sed -i -e "s,##WLAN1_PRE_DOWN_ACTION##,${WLAN1_PRE_DOWN_ACTION},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN1_STATIC_IP##,${WLAN1_STATIC_IP},g" ${TARGET_WLAN1_FILE} + sed -i -e "s,##WLAN1_STATIC_NETMASK##,${WLAN1_STATIC_NETMASK},g" ${TARGET_WLAN1_FILE} + sed -i -e "s,##WLAN1_STATIC_GATEWAY##,${WLAN1_STATIC_GATEWAY},g" ${TARGET_WLAN1_FILE} + sed -i -e "s,##WLAN1_STATIC_DNS##,${WLAN1_STATIC_DNS},g" ${TARGET_WLAN1_FILE} + sed -i -e "s,##WLAN1_POST_UP_ACTION##,${WLAN1_POST_UP_ACTION},g" ${TARGET_WLAN1_FILE} + sed -i -e "s,##WLAN1_PRE_DOWN_ACTION##,${WLAN1_PRE_DOWN_ACTION},g" ${TARGET_WLAN1_FILE} } # Disable wireless interfaces on first boot for non-wireless variants @@ -107,5 +130,24 @@ pkg_postinst_ontarget_${PN}() { update-rc.d ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS} fi + COMPAT="/proc/device-tree/compatible" + WIFI_MAC="/proc/device-tree/wireless/mac-address" + + # Only execute the script on wireless ccimx6 platforms + if [ -e ${WIFI_MAC} -a $(grep fsl,imx6dl ${COMPAT} || grep fsl,imx6q ${COMPAT} | grep -v fsl,imx6qp) ]; then + for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do + if [[ "$id" == "sdio:c00v0271d0301" ]] ; then + cat /etc/interfaces.br0.atheros.example >> /etc/network/interfaces + rm /etc/network/if-pre-up.d/virtwlans /etc/network/if-post-down.d/virtwlans + break + elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then + cat /etc/interfaces.wlan1.example >> /etc/network/interfaces + cat /etc/interfaces.br0.example >> /etc/network/interfaces + break + fi + done + rm /etc/interfaces.*.example + fi + exit 0 }