Udało mi się zrobić wifi tak jak JA chcę:
Wywalamy connmana z sekwencji startowej i instalujemy lint-wifi (to GUI do ustawiania połączeń):
rm /etc/rc5.d/S05connman opkg install http://projects.openmoko.org/frs/download.php/912/lint-wifi2_0.1-1_armv4t.opk
#!/bin/sh
DHCP_PID=/var/run/udhcpc.eth0.pid
WPAS_PID=/var/run/wpa_supplicant.eth0.pid
export PATH=/usr/sbin:/sbin:/usr/bin:/bin:"$PATH"
up_wifi() {
echo Powering up wifi
echo s3c2440-sdi > /sys/bus/platform/drivers/s3c2440-sdi/bind
wmiconfig -i eth0 --wlan enable
ifconfig eth0 up
}
start_wpa() {
echo Starting wpa_supplicant
wpa_supplicant -ieth0 -Dwext -c/etc/wpa_supplicant/wpa_supplicant.conf -B -P $WPAS_PID
}
wait_wpa() {
echo Wating till wpa_supplicant connects
wpa_cli -g/var/run/wpa_supplicant/eth0 -ieth0 ping | grep PONG || return 1
while ! wpa_cli -g/var/run/wpa_supplicant/eth0 -ieth0 status | grep wpa_state=COMPLETED; do
sleep 5
done
return 0
}
start_dhcp() {
echo Starting udhcpc
udhcpc -i eth0 -p $DHCP_PID
}
renew_dhcp() {
echo Renewing DHCP lease
kill -USR1 `cat $DHCP_PID` || start_dhcp
}
stop_dhcp() {
echo Stopping udhcpc
kill `cat $DHCP_PID`
}
stop_wpa() {
echo Stopping wpa_supplicant
kill `cat $WPAS_PID`
}
kill_wpa() {
echo Killing wpa_supplicant
killall wpa_supplicant
}
kill_dhcp() {
echo Killing udhcpc
kill udcpc
}
if [ "$1" = "start" ]; then
up_wifi
start_wpa
wait_wpa && start_dhcp
elif [ "$1" = "stop" ]; then
stop_dhcp
stop_wpa
elif [ "$1" = "kill" ]; then
kill_dhcp
kill_wpa
elif [ "$1" = "reload" ]; then
wait_wpa && renew_dhcp
elif [ "$1" = "restart" ]; then
stop_dhcp
stop_wpa
up_wifi
start_wpa
start_dhcp
elif [ "$1" = "force-restart" ]; then
kill_dhcp
kill_wpa
up_wifi
start_wpa
start_dhcp
fi
Żeby wszystko świetnie chodziło, upewnijcie się, że macie takie linie na początku pliku /etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1
Jeśli nie macie tam zapamiętanych żadnych sieci, to możecie wrzucić dokładnie ten plik jako /etc/wpa_supplicant/wpa_supplicant.conf. Najważniejsza jest linia update_config=1, bo to ona sprawia, że ustawienia wpisane do lint-wifi będą się zapisywać.
echo "#!/bin/sh" > /etc/resume.d/05quake-wifi echo "sleep 1" >> /etc/resume.d/05quake-wifi echo "/etc/init.d/quake-wifi restart" >> /etc/resume.d/05quake-wifi chmod 0755 /etc/resume.d/05quake-wifi
echo '*/10 * * * * root /etc/init.d/quake-wifi reload' >> /etc/crontab
*/5 * * * * /sbin/logrotate /etc/logrotate.conf
Brakuje oczywiście pola użytkownika, powinno być:
*/5 * * * * root /sbin/logrotate /etc/logrotate.conf
Nie wiem, czy to mogłoby zepsuć uruchamianie co 10 minut mojego skryptu, ale warto crontaba poprawić tak czy inaczej
.