PKGBUILDs/alarm/firmware-brcm43xx/start-brcm-patchram-plus
Jeffrey Clark 935b1d41f1 alarm/firmware-brcm43xx: Generate semi-random MAC address and make service conf optional
Prevents MAC conflicts when settings up multiple systems at the same time.
2014-05-25 13:15:13 -05:00

51 lines
1.1 KiB
Bash

#!/bin/sh
CACHE=/var/cache/brcm43xx-mac
MAC_OPTIONS=""
if [ -z "$MAC_ADDR" ]; then
if [ ! -f "$CACHE" ]; then
echo 43:29:B1$(od -txC -An -N3 /dev/random|tr \ : | tr '[:lower:]' '[:upper:]') >"$CACHE"
fi
MAC_ADDR=`cat "$CACHE"`
echo "Warning: Using self generated MAC address! MAC_ADDR should be defined in /etc/conf.d/brcm43xx."
else
[ -f "$CACHE" ] && rm "$CACHE"
fi
MAC_OPTIONS="--bd_addr $MAC_ADDR"
a=`cat /sys/class/mmc_host/mmc0/mmc0\:0001/mmc0\:0001\:1/device`
HCD=""
EXTRA=""
if [ "$a" = "0x4329" ] ; then
HCD="bcm4329.hcd"
fi
if [ "$a" = "0x4330" ] ; then
HCD="bcm4330.hcd"
EXTRA="--no2bytes --enable_lpm --tosleep=50000 "
fi
if [ -n "$HCD" ] ; then
echo "Found chip version $a."
/usr/bin/brcm_patchram_plus -d --patchram /usr/lib/firmware/brcm/$HCD --baudrate 3000000 --use_baudrate_for_download /dev/ttymxc3 --enable_hci $EXTRA $MAC_OPTIONS &
else
echo " No device Found."
exit 1
fi
for i in 1 2 3 4 5 ; do
b=`hciconfig | grep UART | cut -d: -f1`
if [ -n "$b" ] ; then
hciconfig $b up
break
else
sleep $i
fi
done
exit 0