Entra

View Full Version : Problema sospensione con chiavetta dvb-t usb


xwang
04-09-2010, 10:59
Ciao a tutti!
Ho un notebook che vorrei usare come centro multimediale.
Per registrare la tv digitale uso una chiavetta usb Dikom DK300 e ho notato che mettendo in sospensione su ram il pc quando la chiavetta è inserita, all'atto della riaccensione, il sistema si blocca e sono costretto a usare il tasto di accensione per riavviare (non funzionano neanche le combinazioni alt+Sys+REISUB).
Ho provato allora ad aggiungere due script in /etc/acpi/suspend.d e /etc/acpi/resume.d) per rimuovere il modulo em28xx e collegati prima della sospensione e ricaricarlo al resume, ma nonostante i moduli facciano quanto previsto (verificato con logger), il pc continua a impiantarsi al riavvio. E' possibile disattivare la periferica completamente o, quatomeno avere un log per cercare di capire cosa genere il crash?
Grazie,
Xwang

xwang
09-09-2010, 22:15
Ciao a tutti!
Ho un notebook che vorrei usare come centro multimediale.
Per registrare la tv digitale uso una chiavetta usb Dikom DK300 e ho notato che mettendo in sospensione su ram il pc quando la chiavetta è inserita, all'atto della riaccensione, il sistema si blocca e sono costretto a usare il tasto di accensione per riavviare (non funzionano neanche le combinazioni alt+Sys+REISUB).
Ho provato allora ad aggiungere due script in /etc/acpi/suspend.d e /etc/acpi/resume.d) per rimuovere il modulo em28xx e collegati prima della sospensione e ricaricarlo al resume, ma nonostante i moduli facciano quanto previsto (verificato con logger), il pc continua a impiantarsi al riavvio. E' possibile disattivare la periferica completamente o, quatomeno avere un log per cercare di capire cosa genere il crash?
Grazie,
Xwang

E' possibile disalimentare la porta usb tramite uno script i modo da simulare la disconnessione fisica prima della sospensione (e successiva riconnessione della chiavetta dopo il resume)?
Xwang

kernelex
09-09-2010, 22:26
se sei sicuro che il modulo venga drasticamente "scaricato" all'atto del suspend, proverei a inserire un sleep 30 && modprobe modulo in uno script che ricarica il modulo nel momento del resume.
in qualche modo si deve forzare il sistema a caricare il modulo quando vuoi tu.
l'intento è quello di caricare il modulo a pc avviato completamente.
un pò come se stessi infilando la DK300 a caldo a pc già avviato.

Gimli[2BV!2B]
09-09-2010, 22:42
Il file che ti dovrebbe tornare utile è level contenuto inls -la /sys/bus/usb/devices/usb[[:digit:]]/power

Per sapere quale USB è associata alla tua scheda o controlli in dmesg o in lsusb

Per finire, esempio di comando che dovrebbe metterla a nanna èecho suspend > /sys/bus/usb/devices/usb1/power/level

Fonte: Power Management for USB (http://www.mjmwired.net/kernel/Documentation/usb/power-management.txt)

P.S. potrebbe risultare impossibile controllare manualmente l'alimentazione degli hub USB della scheda madre, mentre dovrebbe funzionare bene con hub aggiuntivi.

xwang
10-09-2010, 19:37
;33047946']Il file che ti dovrebbe tornare utile è level contenuto inls -la /sys/bus/usb/devices/usb[[:digit:]]/power

Per sapere quale USB è associata alla tua scheda o controlli in dmesg o in lsusb

Per finire, esempio di comando che dovrebbe metterla a nanna èecho suspend > /sys/bus/usb/devices/usb1/power/level

Fonte: Power Management for USB (http://www.mjmwired.net/kernel/Documentation/usb/power-management.txt)

P.S. potrebbe risultare impossibile controllare manualmente l'alimentazione degli hub USB della scheda madre, mentre dovrebbe funzionare bene con hub aggiuntivi.

Grazie, verificherò nel weekend.
Se volessi disalimentare anche un hdd esterno da 2.5 pollici, dovrei fare prima l'umount, vero?
Xwang

xwang
10-09-2010, 22:45
se sei sicuro che il modulo venga drasticamente "scaricato" all'atto del suspend, proverei a inserire un sleep 30 && modprobe modulo in uno script che ricarica il modulo nel momento del resume.
in qualche modo si deve forzare il sistema a caricare il modulo quando vuoi tu.
l'intento è quello di caricare il modulo a pc avviato completamente.
un pò come se stessi infilando la DK300 a caldo a pc già avviato.

Ho provato, ma continua a crashare al resume.

;33047946']Il file che ti dovrebbe tornare utile è level contenuto inls -la /sys/bus/usb/devices/usb[[:digit:]]/power

Per sapere quale USB è associata alla tua scheda o controlli in dmesg o in lsusb

Per finire, esempio di comando che dovrebbe metterla a nanna èecho suspend > /sys/bus/usb/devices/usb1/power/level

Fonte: Power Management for USB (http://www.mjmwired.net/kernel/Documentation/usb/power-management.txt)

P.S. potrebbe risultare impossibile controllare manualmente l'alimentazione degli hub USB della scheda madre, mentre dovrebbe funzionare bene con hub aggiuntivi.

Ho provato, ma non sembra disalimentare la porta anzi, a dirla tutta, sembra non faccia proprio nulla tanto è che in suspend attaccando la dikom è stata addirittura riconosciuta e il relativo modulo è stato montato.
Boh!
Grazie comunque per l'aiuto.
Xwang

Gimli[2BV!2B]
10-09-2010, 23:12
Niente da fare? Come ti ho accennato ho letto che spesso non funziona con le USB montate sulla scheda madre, mentre dovrebbe funzionare in presenza di un hub USB perché quegli scatolotti hanno una minima gestione della corrente che li attraversa.

Per il disco esterno non so dirti al volo. Non uso quasi mai la sospensione e non uso quasi mai il mio vecchio disco esterno; non ricordo che le due cose si siano mai combinate...

xwang
14-09-2010, 20:31
Ho capito perchè non funzionava.
Avevo messo gli script per rimuovere e per ricaricare il modulo rispettivamente in /etc/acpi/suspend.d e /etc/acpi/resume.d pensando che venissero chiamati da suspend.
Oggi ho invece scoperto che suspend legge gli script presenti in /etc/pm/sleep.d e così ho modificato un file già presente in modo da chiamare lo script presente in /etc/acpi/suspend.d in fase di suspend e quello in /etc/acpi/resume.d in fase di resume e adesso funziona a meraviglia.
Grazie per l'aiuto!
Xwang

xwang
16-09-2010, 20:45
A chi servisse la stessa cosa ecco il file (/etc/pm/sleep.d/80_em28xx_handling) che ho usato (in verità è molto semplice):


#!/bin/sh

# Action script ensure that em28xx device is unloaded
# before a suspend/hibernate
#
# Copyright: Copyright (c) 2010 Andrea Amorosi
# License: GPL-2
#

# pm-action(8) - <action> <suspend method>
#
# On suspend|hibernate, disconnect any em28xx device,
# reconnect it on resume.


case "${1}" in
suspend|hibernate)
modprobe -r em28xx_dvb em28xx_alsa
;;
resume|thaw)
modprobe em28xx
;;
esac



Xwang