Navigation

Zwiecha telefonu przy restarcie gsmd i wyłączaniu

W najnowszym kernelu pojawił się ciężki problem z dostępem do portu modemu GSM powodujący zawieszanie się całego telefonu. Każdy kto dodał sobie poprawkę restartującą gsmd, aby działał dialer zaraz przed startem Xsów ma zwiechę. Oto zgłoszony bug #788.
Przyczyną jest kod który urządzenie ttySAC0 traktuje jako zwykłą konsole i próbując pisać do niej wysyła na modem śmieci. To z kolei powoduje, że modem głupieje i zawiesza system. Pojawiły się dwa rozwiązania. Jedno trudniejsze, bo wymaga podłączania konsoli Neo przez usb podczas bootowania (wówczas możemy parametr bootowania console=ttySAC0,115200) lub zmianę skryptu przeładowującego demon gsmd. Oba rozwiązania to obejście, a nie poprawka.
Preferuję drugie rozwiązanie. Przede wszystkim przywracamy kontrolę nad telefonem. Jeśli kto ma poprawkę w /etc/matchbox/session, to należy pod koniec bootowania telefonu zalogować się i ekspresowo wyedytować plik i usunąć linie restartujące modem. Mi się udało za 4 razem :D Teraz można aplikować "obejście". W skrypcie
/etc/init.d/gsmd
zmieniamy

case "$1" in
start)
stty -F /dev/ttySAC0 -crtscts
[ -n "$GSM_POW" ] && ( echo "0" >$GSM_POW; sleep 1 )
[ -n "$GSM_POW" ] && ( echo "1" >$GSM_POW; sleep 1 )

oraz

stop)
echo -n "Stopping GSM daemon: "
start-stop-daemon -K -x /usr/sbin/gsmd
stty -F /dev/ttySAC0 -crtscts
[ -n "$GSM_POW" ] && echo "0" >$GSM_POW

echo "gsmd."

Od teraz nie wiesza się.
Należy jeszcze pamiętać o przywróceniu do /etc/matchbox/session linijek restartujących demona gsm
/etc/init.d/gsmd stop
/etc/init.d/gsmd start

Od tej pory działa wszystko i pyta nawet o PIN :D
Udało mi się właśnie zadzwonić na drugą komórkę :)