Guida verificata con Ubuntu: 20.04 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Se la riproduzione di un DVD non è scorrevole, potrebbe essere a causa del DMA non attivato. DMA, o «Direct Memory Access», permette ai dischi rigidi e ai lettori di CD/DVD di accedere direttamente alla memoria di sistema, senza caricare la CPU.
La maggior parte dei sistemi prodotti dal 1994 ha il supporto al DMA, mentre è pressoché certa la sua presenza (o sua evoluzione quale l'UDMA) dal 1997.
Abilitare il DMA può essere pericoloso in alcuni casi. I problemi più comuni sono collegati ad hardware con problemi, errori nei driver o uso di impostazioni non supportate dal proprio sistema.
Preparazione
Identificare periferica
Di seguito viene illustrato l'utilizzo di due strumenti:
lsscsi: strumento semplice per identificare il dispositivo di masterizzazione.
Installare il pacchetto lsscsi.
Per identificare il nome del dispositivo digitare nel terminale il comando:
lsscsi | grep -i dvd
hdparm: per utilizzare il programma seguire i seguenti passaggi:
installare il pacchetto hdparm.
Controllare le impostazioni di /dev/srX:
sudo hdparm /dev/srX
sostituendo dev/srX con il dispositivo ottenuto per identificare la periferica.
Se è presente una riga come questa:
using_dma = 1 (on)
significa che il DMA è già attivato. Passare direttamente al punto 8 per vedere se viene abilitato all'avvio del sistema.Se è invece presente una riga come questa:
SG_IO: bad/missing sense data, sb[]
significa che il dispositivo non viene letto correttamente. Passare direttamente al punto 7 per attivare tramite modifica del file.
Fare attenzione poiché il programma hdparm se usato in modo scorretto può arrecare gravi danni al dispositivo su cui è usato.
Prestare molta attenzione nell'indicare il dispositivo corretto. Ad esempio, nei casi più comuni, indicare /dev/sda nel comando può compromettere l'integrità del disco rigido cagionando l'inavviabilità del proprio sistema e l'accesso ai propri file personali.
Abilitare il DMA
Abilitare il DMA per /dev/srX:
sudo hdparm -d1 /dev/srX
- Ora è stato abilitato il DMA.
Per avere queste impostazioni abilitate automaticamente all'avvio del sistema, è necessario modificare il file /etc/hdparm.conf.
A tale scopo aprire con un editor di testo e con i privilegi di amministrazione il file /etc/hdparm.conf, modificare i parametri nelle seguenti righe:#/dev/cdroms/cdrom0 { # dma = on # interrupt_unmask = on # io32_support = 0 #
nel modo seguente:
/dev/sr0 { dma = on interrupt_unmask = on io32_support = }
salvare, quindi riavviare il sistema.
Comandi avanzati
È possibile ottenere specifiche informazioni sui tre principali parametri del masterizzatore:
Opzione |
Output |
-d |
DMA del dispositivo in esame |
-c |
supporto IO del dispositivo in esame, 16 o 32 bit è la velocità di trasmissione dei dati (consultare questa pagina) |
-m |
multcount, (Ide Block Mode) trasmissione di settori multipli per I/O a 0, 8, 16 o 32 bit |
Il comando:
sudo hdparm -d /dev/srX
darà come output:
/dev/srX: using_dma = 1 (on)
Il comando:
sudo hdparm -c /dev/srX
darà come output:
/dev/srX: IO_support = 1 (32-bit)
Il comando:
sudo hdparm -m /dev/srX
darà come output:
/dev/srX: multcount = 0 (off)
Test sul masterizzatore
Il comando hdparm consente, attraverso l'uso dell'opzione -tT, l'esecuzione di un test completo sui masterizzatori.
Ad esempio:
sudo hdparm -tT /dev/srX
il cui risultato è un output di questo tipo:
/dev/srX: Timing cached reads: 276 MB in 2.01 seconds = 136.99 MB/sec Timing buffered disk reads: 20 MB in 3.14 seconds = 6.37 MB/sec
Modifica della configurazione
L'esecuzione dei test mostrerà che Ubuntu ha già configurato al meglio il proprio hardware. Tuttavia può essere utile la verifica dei valori e la loro eventuale correzione.
Alcune opzioni utili per la modifica della configurazione da utilizzare con hdparm:
Opzione |
Risultato |
-c0 |
disabilita la funzione |
-c1 |
abilita la modalità a 32bit |
-c2 |
abilita la modalità a 16bit |
-c3 |
abilita la modalità a 32bit con una funzione di sincronismo richiesta da molti chipset |
È quindi possibile modificare le impostazioni del masterizzatore con questo comando:
sudo hdparm -d1 -c1 -m8 /dev/srX
Con il comando precedente è stato indicato di abilitare DMA (-d1), abilitare il supporto 32-bit del masterizzatore (-c1) e impostare l'«Ide Block Mode» su 8-bit (-m8). È possibile impostare l'«Ide Block Mode» su 16-bit (-m16) o 32-bit (-m32).
L'output del comando sarà:
/dev/srX: setting 32-bit IO_support flag to 1 setting multcount to 8 setting using_dma to 1 (on) multcount = 8 (on) IO_support = 1 (32-bit) using_dma = 1 (on)
Problemi noti
Se i propri dispositivi sono configurati in modalità Cable Select ed eseguendo il comando hdparm si ricevono degli errori relativi a dei timeout o periferica non pronta, provare a cambiare la periferica in master o slave, a seconda della configurazione del sistema (far riferimento al manuale del dispositivo o della propria scheda madre).
A volte il passo 2 può fallire con un messaggio tipo operation not permitted/operazione non permessa. Per risolvere questo problema, è necessario modificare il file /etc/modules.
Aprire con un editor di testo e con i privilegi di amministrazione il file /etc/modules.
Nel caso si possieda un CPU Intel, inserire:
piix ide-core
sopra la riga:
ide-cd
Nel caso si possieda una CPU AMD, inserire:
amd74xx
sopra la riga:
ide-cd
Nel caso si utilizzi un chipset VIA, inserire:
via82cxxx
sopra la riga:
ide-cd
salvare e riavviare il sistema, quindi ripetere i passi 3 e 4 della procedura precedente.