特殊:Badtitle/NS100:DMA:修订间差异
小 New page: {{From|https://help.ubuntu.com/community/DMA}} {{Languages|php5}} === Introduction === If you experience jumpy DVD playback, slow CD ripping, or a general slow down when accessing optical... |
小无编辑摘要 |
||
(未显示2个用户的14个中间版本) | |||
第1行: | 第1行: | ||
{{From|https://help.ubuntu.com/community/DMA}} | {{From|https://help.ubuntu.com/community/DMA}} | ||
{{Languages| | {{Languages|UbuntuHelp:DMA}} | ||
=== Introduction === | === Introduction === | ||
If you experience jumpy DVD playback, slow CD ripping, or a general slow down when accessing optical drive(s) it may be because DMA is not enabled. DMA, or Direct Memory Access, lets hard drives and CD/DVD drives access the system memory. | If you experience jumpy DVD playback, slow CD ripping, or a general slow down when accessing optical drive(s) it may be because DMA is not enabled. DMA, or Direct Memory Access, lets hard drives and CD/DVD drives access the system memory. | ||
Ubuntu 6.06 (Dapper Drake) has DMA '''automatically''' enabled for drives that support it. | Ubuntu 6.06 (Dapper Drake) has DMA '''automatically''' enabled for drives that support it. | ||
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconDialog-Warning1.png '''Warning:''' Enabling DMA can be dangerous in some cases. Usually issues are directly related to faulty hardware, poorly written drivers, or using settings that are unsupported by your system. | |||
'''USING HDPARM INCORRECTLY CAN CAUSE MAJOR DATA CORRUPTION AND/OR LOSS. Most systems since 2002 support DMA.''' | |||
=== Finding your CD/DVD player === | |||
'''USING HDPARM INCORRECTLY CAN CAUSE MAJOR DATA CORRUPTION AND/OR LOSS. Most systems | With a disk in the drive, issue the command `mount | egrep 'udf|iso9660'` and you should see a line like | ||
<pre><nowiki> | |||
=== Enabling DMA === | /dev/scd0 on /media/cdrom0 type udf (ro,nosuid,nodev,utf8,user=you) | ||
</nowiki></pre> | |||
This shows the device and where it is mounted in the file system. In this case, the device is `/dev/scd0` which indicates you should skip down to the "ATAPI" section. | |||
If the device has a name like `/dev/hdc` you can continue reading the `hdparm` section. | |||
=== Enabling DMA with `hdparm` === | |||
To enable DMA, you need to use the <code><nowiki>hdparm</nowiki></code> command and the configuration file <code><nowiki>hdparm.conf</nowiki></code>. | To enable DMA, you need to use the <code><nowiki>hdparm</nowiki></code> command and the configuration file <code><nowiki>hdparm.conf</nowiki></code>. | ||
These instructions assume that you are trying to enable DMA on `hdc`, usually the CD-rom drive. | These instructions assume that you are trying to enable DMA on `hdc`, usually the CD-rom drive. | ||
<ol><li>See the what the settings are on `/dev/hdc`</li></ol> | |||
<pre><nowiki> | |||
sudo hdparm /dev/hdc | sudo hdparm /dev/hdc | ||
</nowiki></ | </nowiki></pre> | ||
<ol><li>If you get a line like <code><nowiki> using_dma = 1 (on)</nowiki></code>, DMA is already enabled. Skip to step 4 to see if it has been enabled at boot time. | |||
</li><li>Enable DMA on `/dev/hdc`</li></ol> | |||
<pre><nowiki> | |||
sudo hdparm -d1 /dev/hdc | sudo hdparm -d1 /dev/hdc | ||
</nowiki></ | </nowiki></pre> | ||
<ol><li>You have now enabled DMA for the drive. However, in order for the settings to be automatically applied at boot there you need to edit the <code><nowiki>/etc/hdparm.conf</nowiki></code> script. To do this use this command: <code><nowiki>gksudo gedit /etc/hdparm.conf</nowiki></code></li></ol> | |||
Add the following to the end of your hdparm.conf | Add the following to the end of your hdparm.conf | ||
第33行: | 第34行: | ||
dma = on | dma = on | ||
} | } | ||
</nowiki></ | </nowiki></pre> | ||
(another way of avoiding editing of the hdparm.conf file is to simply run <code><nowiki>sudo hdparm -d1 -k1 /dev/hdc</nowiki></code> to keep the DMA flag). | (another way of avoiding editing of the hdparm.conf file is to simply run <code><nowiki>sudo hdparm -d1 -k1 /dev/hdc</nowiki></code> to keep the DMA flag). | ||
=== ATAPI DVD drives === | |||
If you have an ATAPI DVD drive on a later (>=8.4) version of Ubuntu it is likely to be treated as a virtual SCSI device. DMA is generally turned on by default, but sometimes the generic ATA module doesn't work. If this is the case you see the following symptom when typing: | |||
<pre><nowiki> | |||
dmesg | grep ata | |||
</nowiki></pre> | |||
One of the lines will be: | |||
<pre><nowiki> | |||
ata2.00: simplex DMA is claimed by other device, disabling DMA | |||
</nowiki></pre> | |||
If this is the case type the following: | |||
<pre><nowiki> | |||
sudo gedit /etc/modprobe.d/aliases | |||
</nowiki></pre> | |||
And add the following lines to the bottom of the file: | |||
<pre><nowiki> | |||
alias ata_generic off | |||
alias pata_atiixp on | |||
</nowiki></pre> | |||
Reboot and DMA should work. You can verify this by typing: | |||
<pre><nowiki> | |||
dmesg | grep ata | |||
</nowiki></pre> | |||
Two of the lines will resemble this: | |||
<pre><nowiki> | |||
[ 23.937141] ata2.00: ATAPI: MATSHITAUJ-845D, D100, max UDMA/33 | |||
[ 24.108846] ata2.00: configured for UDMA/33 | |||
</nowiki></pre> | |||
=== Troubleshooting === | === Troubleshooting === | ||
If your drives are configured in [Cable Select] mode and while running `hdparm` commands you receive errors related to timeouts or drive not ready, try changing the drive to be a master or slave device depending on your system configuration. This does require opening the case and as far as I know most drives are set to Cable Select from the manufacturer. | If your drives are configured in [Cable Select] mode and while running `hdparm` commands you receive errors related to timeouts or drive not ready, try changing the drive to be a master or slave device depending on your system configuration. This does require opening the case and as far as I know most drives are set to Cable Select from the manufacturer. | ||
Sometimes step 3 above can fail with an "Operation Not Permitted" message. You can fix this by editing the file /etc/modules: | Sometimes step 3 above can fail with an "Operation Not Permitted" message. You can fix this by editing the file /etc/modules: | ||
For an Intel CPU put the lines | For an Intel CPU put the lines | ||
第46行: | 第70行: | ||
piix | piix | ||
ide-core | ide-core | ||
</nowiki></ | </nowiki></pre> | ||
above the line | above the line | ||
<code><nowiki>ide-cd</nowiki></code> | <code><nowiki>ide-cd</nowiki></code> | ||
For an AMD CPU put the line | For an AMD CPU put the line | ||
<code><nowiki>amd74xx</nowiki></code> | <code><nowiki>amd74xx</nowiki></code> | ||
above | above | ||
<code><nowiki>ide-cd</nowiki></code> | <code><nowiki>ide-cd</nowiki></code> | ||
For a VIA Chipset put | For a VIA Chipset put | ||
<code><nowiki>via82cxxx</nowiki></code> | <code><nowiki>via82cxxx</nowiki></code> | ||
above | above | ||
<code><nowiki>ide-cd</nowiki></code> | <code><nowiki>ide-cd</nowiki></code> | ||
Then reboot and try steps 3-4 again.... | Then reboot and try steps 3-4 again.... | ||
If the problem still persists, and you're using a SATA hard drive, then the SATA module has to be loaded first before the ide-cd. Add <code><nowiki>sata_sil </nowiki></code> to the beginning of your /etc/modules file then reboot. | |||
=== Further reading === | === Further reading === | ||
The hdparm has further options that may be more risky. They can be seen using the <code><nowiki>man hdparm</nowiki></code> command in the terminal. | The hdparm has further options that may be more risky. They can be seen using the <code><nowiki>man hdparm</nowiki></code> command in the terminal. | ||
For a detailed description of DMA visit the IEEE | For a detailed description of DMA visit the IEEE | ||
http://standards.ieee.org/reading/ieee/std_public/description/busarch/1212.1-1993_desc.html | http://standards.ieee.org/reading/ieee/std_public/description/busarch/1212.1-1993_desc.html | ||
IDE, EIDE and UDMA http://www.spcug.org/reviews/bl0108.htm | IDE, EIDE and UDMA http://www.spcug.org/reviews/bl0108.htm | ||
---- | ---- | ||
[[category:UbuntuHelp]] | [[category:UbuntuHelp]] |
2010年5月19日 (三) 22:05的最新版本
文章出处: |
{{#if: | {{{2}}} | https://help.ubuntu.com/community/DMA }} |
点击翻译: |
English {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/af | • {{#if: UbuntuHelp:DMA|Afrikaans| [[::DMA/af|Afrikaans]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ar | • {{#if: UbuntuHelp:DMA|العربية| [[::DMA/ar|العربية]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/az | • {{#if: UbuntuHelp:DMA|azərbaycanca| [[::DMA/az|azərbaycanca]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/bcc | • {{#if: UbuntuHelp:DMA|جهلسری بلوچی| [[::DMA/bcc|جهلسری بلوچی]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/bg | • {{#if: UbuntuHelp:DMA|български| [[::DMA/bg|български]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/br | • {{#if: UbuntuHelp:DMA|brezhoneg| [[::DMA/br|brezhoneg]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ca | • {{#if: UbuntuHelp:DMA|català| [[::DMA/ca|català]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/cs | • {{#if: UbuntuHelp:DMA|čeština| [[::DMA/cs|čeština]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/de | • {{#if: UbuntuHelp:DMA|Deutsch| [[::DMA/de|Deutsch]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/el | • {{#if: UbuntuHelp:DMA|Ελληνικά| [[::DMA/el|Ελληνικά]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/es | • {{#if: UbuntuHelp:DMA|español| [[::DMA/es|español]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/fa | • {{#if: UbuntuHelp:DMA|فارسی| [[::DMA/fa|فارسی]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/fi | • {{#if: UbuntuHelp:DMA|suomi| [[::DMA/fi|suomi]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/fr | • {{#if: UbuntuHelp:DMA|français| [[::DMA/fr|français]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/gu | • {{#if: UbuntuHelp:DMA|ગુજરાતી| [[::DMA/gu|ગુજરાતી]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/he | • {{#if: UbuntuHelp:DMA|עברית| [[::DMA/he|עברית]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/hu | • {{#if: UbuntuHelp:DMA|magyar| [[::DMA/hu|magyar]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/id | • {{#if: UbuntuHelp:DMA|Bahasa Indonesia| [[::DMA/id|Bahasa Indonesia]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/it | • {{#if: UbuntuHelp:DMA|italiano| [[::DMA/it|italiano]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ja | • {{#if: UbuntuHelp:DMA|日本語| [[::DMA/ja|日本語]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ko | • {{#if: UbuntuHelp:DMA|한국어| [[::DMA/ko|한국어]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ksh | • {{#if: UbuntuHelp:DMA|Ripoarisch| [[::DMA/ksh|Ripoarisch]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/mr | • {{#if: UbuntuHelp:DMA|मराठी| [[::DMA/mr|मराठी]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ms | • {{#if: UbuntuHelp:DMA|Bahasa Melayu| [[::DMA/ms|Bahasa Melayu]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/nl | • {{#if: UbuntuHelp:DMA|Nederlands| [[::DMA/nl|Nederlands]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/no | • {{#if: UbuntuHelp:DMA|norsk| [[::DMA/no|norsk]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/oc | • {{#if: UbuntuHelp:DMA|occitan| [[::DMA/oc|occitan]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/pl | • {{#if: UbuntuHelp:DMA|polski| [[::DMA/pl|polski]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/pt | • {{#if: UbuntuHelp:DMA|português| [[::DMA/pt|português]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ro | • {{#if: UbuntuHelp:DMA|română| [[::DMA/ro|română]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/ru | • {{#if: UbuntuHelp:DMA|русский| [[::DMA/ru|русский]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/si | • {{#if: UbuntuHelp:DMA|සිංහල| [[::DMA/si|සිංහල]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/sq | • {{#if: UbuntuHelp:DMA|shqip| [[::DMA/sq|shqip]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/sr | • {{#if: UbuntuHelp:DMA|српски / srpski| [[::DMA/sr|српски / srpski]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/sv | • {{#if: UbuntuHelp:DMA|svenska| [[::DMA/sv|svenska]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/th | • {{#if: UbuntuHelp:DMA|ไทย| [[::DMA/th|ไทย]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/tr | • {{#if: UbuntuHelp:DMA|Türkçe| [[::DMA/tr|Türkçe]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/vi | • {{#if: UbuntuHelp:DMA|Tiếng Việt| [[::DMA/vi|Tiếng Việt]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/yue | • {{#if: UbuntuHelp:DMA|粵語| [[::DMA/yue|粵語]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/zh | • {{#if: UbuntuHelp:DMA|中文| [[::DMA/zh|中文]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/zh-hans | • {{#if: UbuntuHelp:DMA|中文(简体)| [[::DMA/zh-hans|中文(简体)]]}}|}} {{#ifexist: {{#if: UbuntuHelp:DMA | UbuntuHelp:DMA | {{#if: | :}}DMA}}/zh-hant | • {{#if: UbuntuHelp:DMA|中文(繁體)| [[::DMA/zh-hant|中文(繁體)]]}}|}} |
{{#ifeq:UbuntuHelp:DMA|:DMA|请不要直接编辑翻译本页,本页将定期与来源同步。}} |
{{#ifexist: :DMA/zh | | {{#ifexist: DMA/zh | | {{#ifeq: {{#titleparts:DMA|1|-1|}} | zh | | }} }} }} {{#ifeq: {{#titleparts:DMA|1|-1|}} | zh | | }}
Introduction
If you experience jumpy DVD playback, slow CD ripping, or a general slow down when accessing optical drive(s) it may be because DMA is not enabled. DMA, or Direct Memory Access, lets hard drives and CD/DVD drives access the system memory. Ubuntu 6.06 (Dapper Drake) has DMA automatically enabled for drives that support it. Warning: Enabling DMA can be dangerous in some cases. Usually issues are directly related to faulty hardware, poorly written drivers, or using settings that are unsupported by your system. USING HDPARM INCORRECTLY CAN CAUSE MAJOR DATA CORRUPTION AND/OR LOSS. Most systems since 2002 support DMA.
Finding your CD/DVD player
With a disk in the drive, issue the command `mount | egrep 'udf|iso9660'` and you should see a line like
/dev/scd0 on /media/cdrom0 type udf (ro,nosuid,nodev,utf8,user=you)
This shows the device and where it is mounted in the file system. In this case, the device is `/dev/scd0` which indicates you should skip down to the "ATAPI" section. If the device has a name like `/dev/hdc` you can continue reading the `hdparm` section.
Enabling DMA with `hdparm`
To enable DMA, you need to use the hdparm
command and the configuration file hdparm.conf
.
These instructions assume that you are trying to enable DMA on `hdc`, usually the CD-rom drive.
- See the what the settings are on `/dev/hdc`
sudo hdparm /dev/hdc
- If you get a line like
using_dma = 1 (on)
, DMA is already enabled. Skip to step 4 to see if it has been enabled at boot time. - Enable DMA on `/dev/hdc`
sudo hdparm -d1 /dev/hdc
- You have now enabled DMA for the drive. However, in order for the settings to be automatically applied at boot there you need to edit the
/etc/hdparm.conf
script. To do this use this command:gksudo gedit /etc/hdparm.conf
Add the following to the end of your hdparm.conf
/dev/hdc { dma = on }
(another way of avoiding editing of the hdparm.conf file is to simply run sudo hdparm -d1 -k1 /dev/hdc
to keep the DMA flag).
ATAPI DVD drives
If you have an ATAPI DVD drive on a later (>=8.4) version of Ubuntu it is likely to be treated as a virtual SCSI device. DMA is generally turned on by default, but sometimes the generic ATA module doesn't work. If this is the case you see the following symptom when typing:
dmesg | grep ata
One of the lines will be:
ata2.00: simplex DMA is claimed by other device, disabling DMA
If this is the case type the following:
sudo gedit /etc/modprobe.d/aliases
And add the following lines to the bottom of the file:
alias ata_generic off alias pata_atiixp on
Reboot and DMA should work. You can verify this by typing:
dmesg | grep ata
Two of the lines will resemble this:
[ 23.937141] ata2.00: ATAPI: MATSHITAUJ-845D, D100, max UDMA/33 [ 24.108846] ata2.00: configured for UDMA/33
Troubleshooting
If your drives are configured in [Cable Select] mode and while running `hdparm` commands you receive errors related to timeouts or drive not ready, try changing the drive to be a master or slave device depending on your system configuration. This does require opening the case and as far as I know most drives are set to Cable Select from the manufacturer. Sometimes step 3 above can fail with an "Operation Not Permitted" message. You can fix this by editing the file /etc/modules: For an Intel CPU put the lines
piix ide-core
above the line
ide-cd
For an AMD CPU put the line
amd74xx
above
ide-cd
For a VIA Chipset put
via82cxxx
above
ide-cd
Then reboot and try steps 3-4 again....
If the problem still persists, and you're using a SATA hard drive, then the SATA module has to be loaded first before the ide-cd. Add sata_sil
to the beginning of your /etc/modules file then reboot.
Further reading
The hdparm has further options that may be more risky. They can be seen using the man hdparm
command in the terminal.
For a detailed description of DMA visit the IEEE
http://standards.ieee.org/reading/ieee/std_public/description/busarch/1212.1-1993_desc.html
IDE, EIDE and UDMA http://www.spcug.org/reviews/bl0108.htm