diff --git a/recipes-bsp/mac-address-set/files/mac-address-set.service b/recipes-bsp/mac-address-set/files/mac-address-set.service new file mode 100644 index 0000000..533ae1d --- /dev/null +++ b/recipes-bsp/mac-address-set/files/mac-address-set.service @@ -0,0 +1,11 @@ +[Unit] +After=tibluetooth.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/mac-address-set + +[Install] +WantedBy=multi-user.target + + diff --git a/recipes-bsp/mac-address-set/files/mac-address-set.sh b/recipes-bsp/mac-address-set/files/mac-address-set.sh new file mode 100755 index 0000000..ba2feee --- /dev/null +++ b/recipes-bsp/mac-address-set/files/mac-address-set.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +eth_mac=$(ip addr show eth0 | awk '$1 == "link/ether" {gsub(/\/.*$/, "", $2); print $2}') +wlan_mac=$(echo $eth_mac | sed -r "s/^(.{9})50(.{6})/\160\2/") +bt_addr=$(echo $eth_mac | sed -r "s/^(.{9})50(.{6})/\170\2/") + + +# Set WLAN address +ifconfig wlan0 | grep UP > /dev/null +up=$? +if [[ $up == 0 ]]; then + ifconfig wlan0 down +fi +ip link set wlan0 address $wlan_mac + +if [[ $up == 0 ]]; then + ifconfig wlan0 up +fi + + +# Set BT address +bt_addr_rev=$(echo $bt_addr | sed -r "s/^(.{2}):(.{2}):(.{2}):(.{2}):(.{2}):(.{2})/\6:\5:\4:\3:\2:\1/") +bdaddr $bt_addr_rev +hciconfig hci0 reset +systemctl restart bluetooth diff --git a/recipes-bsp/mac-address-set/mac-address-set.bb b/recipes-bsp/mac-address-set/mac-address-set.bb new file mode 100644 index 0000000..66327be --- /dev/null +++ b/recipes-bsp/mac-address-set/mac-address-set.bb @@ -0,0 +1,35 @@ +SUMMARY = "Set mac addresses of Wifi and bluetooth chips" +DESCRIPTION = "Small scripts that set the mac addresses based on ethernet mac" +AUTHOR = "Alexandre Bard" + +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" +PR = "r2" + +inherit systemd + +SRC_URI = " \ + file://mac-address-set.service \ + file://mac-address-set.sh \ + " + +S = "${WORKDIR}" + +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +SYSTEMD_SERVICE_${PN} = "mac-address-set.service" +SYSTEMD_AUTO_ENABLE ?= "enable" + +FILES_${PN}_append = " \ + /lib \ + /usr \ + " + +do_install () { + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 mac-address-set.service ${D}${systemd_unitdir}/system/ + + install -d ${D}/usr/bin + install -m 0755 mac-address-set.sh ${D}/usr/bin/mac-address-set +} + diff --git a/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf b/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf new file mode 100644 index 0000000..0763348 --- /dev/null +++ b/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf @@ -0,0 +1,2 @@ +[device] +wifi.scan-rand-mac-address=no diff --git a/recipes-connectivity/networkmanager/networkmanager_%.bbappend b/recipes-connectivity/networkmanager/networkmanager_%.bbappend index 7f2ce40..1ba156c 100644 --- a/recipes-connectivity/networkmanager/networkmanager_%.bbappend +++ b/recipes-connectivity/networkmanager/networkmanager_%.bbappend @@ -1,12 +1,16 @@ PACKAGECONFIG_append = " modemmanager bluez5" FILESEXTRAPATHS_append := "${THISDIR}/${PN}" -SRC_URI_append = " file://system-connections.tar.gz" +SRC_URI_append = "\ + file://system-connections.tar.gz \ + file://NetworkManager.conf \ + " do_install_append() { rm -rf ${D}/run ${D}${localstatedir}/run mkdir -p ${D}${sysconfdir}/NetworkManager/system-connections install -m 0600 ${WORKDIR}/system-connections/* ${D}${sysconfdir}/NetworkManager/system-connections/ + install -m 0644 ${WORKDIR}/NetworkManager.conf ${D}${sysconfdir}/NetworkManager/ }