{"id":1798,"date":"2022-07-20T18:14:49","date_gmt":"2022-07-20T17:14:49","guid":{"rendered":"https:\/\/pmortensen.eu\/world2\/?p=1798"},"modified":"2025-07-17T23:21:50","modified_gmt":"2025-07-17T22:21:50","slug":"enabling-both-usb-3-and-usb-2-ports-for-a-ga-970a-ds3p-motherboard","status":"publish","type":"post","link":"https:\/\/pmortensen.eu\/world2\/2022\/07\/20\/enabling-both-usb-3-and-usb-2-ports-for-a-ga-970a-ds3p-motherboard\/","title":{"rendered":"Enabling both USB 3 and USB 2 ports for the &#8216;Gigabyte&#8217; GA-970A-DS3P motherboard"},"content":{"rendered":"<p>The short version: With default <a href=\"https:\/\/en.wikipedia.org\/wiki\/BIOS\">BIOS<\/a> settings (which enable USB 3 ports) for the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gigabyte_Technology\">Gigabyte<\/a> <a href=\"https:\/\/www.gigabyte.com\/Motherboard\/GA-970A-DS3P-rev-2x\">GA-970A-DS3P<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Motherboard\">motherboard<\/a>, the USB&nbsp;2 ports do not work (at least in Linux), only the two external USB&nbsp;3 ports. In Linux, the GRUB configuration parameter &#8220;GRUB_CMDLINE_LINUX&#8221; must contain &#8220;iommu=soft&#8221; to get the USB&nbsp;2 ports and USB&nbsp;3 ports to work at the same time.<\/p>\n<p>This blog post is essentially the seminal 2013 forum post &#8220;<a href=\"https:\/\/ubuntuforums.org\/showthread.php?t=2188370\">GA-970A-DS3P revision 1 no USB&nbsp;3.0<\/a>&#8220;, but this provides one data point that the solution with &#8220;iommu=soft&#8221; actually works (and is required) for <strong><em>a particular BIOS version<\/em><\/strong> and works (and is required) for <strong><em>a particular version of a particular Linux distribution of vintage 2020<\/em><\/strong>. For instance, later versions of a Linux distribution, say <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ubuntu_%28operating_system%29\">Ubuntu<\/a> (or later updates to a particular version), may break the solution. And hopefully this blog post has clearer <!-- and shorter --> instructions with some additional checks to be confident in the solution.<\/p>\n<p>It also shows that even in 2022, with the mainstream <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ubuntu_version_history#Ubuntu_22.04_LTS_(Jammy_Jellyfish)\">Ubuntu&nbsp;22.04<\/a>, the Linux community has still not solved the problem. This is ridiculous.<\/p>\n<p>(Note: The motherboard is not to be confused with GA-970A-D3P (without &#8220;S&#8221;) which, for instance, has screen display output connectors (for <a href=\"https:\/\/en.wikipedia.org\/wiki\/HDMI\">HDMI<\/a>, etc.), but fewer USB ports)<\/p>\n<h2>Introduction<\/h2>\n<p>With default settings in the BIOS and in Linux, the USB&nbsp;2 ports on the GA-970A-DS3P motherboard <em>do not work out of the box<\/em>. With a USB hub on one of the USB&nbsp;3 ports, the system nominally works fine, but there are six direct USB ports that can not be used (e.g., for keyboards and mice). For instance, this prevents using the workaround of using a USB&nbsp;2 port instead of a USB&nbsp;3 port for <a href=\"https:\/\/pmortensen.eu\/world2\/2022\/06\/27\/blues-typing-out-fixed-texts-on-both-qmk-and-arduino-leonardo-based-macro-keyboards\/\">making macro keys on a QMK keyboard function properly<\/a>.<\/p>\n<h2>It has <em>nothing<\/em> to do with the BIOS version<\/h2>\n<p>The motherboard used to test this on already had the latest version (<em>FD<\/em>, released 2016-05-02).<\/p>\n<h2>It has <em>nothing<\/em> to do with hardware<\/h2>\n<p>E.g., broken hardware. Some Internet searches will return such suggestions. Changing the BIOS setting \u201cIOMMU\u201d in menu \u201cPeripherals\u201d to &#8220;Enabled&#8221; will enable the USB&nbsp;2 ports, and they work just fine (but the USB&nbsp;3 ports will not work then). Thus this problem has nothing to do with broken hardware.<\/p>\n<h2>Internet searches<\/h2>\n<p>It is not easy to come up with search terms that will not result in near 100% false positives, even using the very specific name of the motherboard (GA-970A-D3P). However, these search terms in combination turned out to be very effective:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nIOMMU enable USB 2 ports\r\n<\/pre>\n<p><!--\n\n\n<h2>Attempts to get it fixed<\/h2>\n\n\n\nIn XXXX, XXX.\n\n--><\/p>\n<h2>Linux version<\/h2>\n<p>Both distribution and kernel version.<\/p>\n<h3>Identifying the kernel version<\/h3>\n<p>In a terminal, on a Ubuntu\/<a href=\"https:\/\/en.wikipedia.org\/wiki\/Debian\">Debian<\/a> derived system: <\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\ncat \/proc\/version_signature\r\n<\/pre>\n<p>Alternatively, this may be more widely applicable, not just for Ubuntu:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nhostnamectl\r\n<\/pre>\n<p>It also outputs the name of Linux distribution and its version.<\/p>\n<h3>Identifying the distribution, incl. version<\/h3>\n<p>In a terminal, on a Ubuntu\/Debian derived system: <\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nlsb_release -a\r\n<\/pre>\n<p>On Fedora:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\ncat \/etc\/fedora-release\r\n<\/pre>\n<h3 id=\"Test_results_on_different_Linux_distributions\">Results<\/h3>\n<p>These systems were found to exhibit the problem and the fix described here worked:<\/p>\n<p><!-- https:\/\/linuxconfig.org\/ubuntu-22-04-kernel-version: \"Ubuntu 22.04 will be released with kernel version 5.15.\" --><\/p>\n<p><!-- https:\/\/kinsta.com\/knowledgebase\/check-ubuntu-version\/ : \"How To Check Your Ubuntu Version (Using the Command Line and GUI) \"  --><\/p>\n<p><!-- https:\/\/itsfoss.com\/find-which-kernel-version-is-running-in-ubuntu\/: \"3 Ways to Check Linux Kernel Version in Command Line\" --><\/p>\n<p><!-- https:\/\/linuxize.com\/post\/how-to-check-your-ubuntu-version\/: \"How to Check your Ubuntu Version\" --><\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Ubuntu_MATE#Releases\">Ubuntu&nbsp;MATE&nbsp;20.04<\/a> (Focal Fossa). Kernel version: 5.4.0-121.137-generic. Underlying distribution and version: Ubuntu 20.04.4 LTS. Released May 2020.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Ubuntu_version_history#Ubuntu_22.04_LTS_(Jammy_Jellyfish)\">Ubuntu&nbsp;22.04<\/a> (Jammy Jellyfish). Kernel version: 5.15.0-41-generic. Underlying distribution and version: Ubuntu 20.04.4 LTS. Released 2022-04-21.<\/li>\n<\/ul>\n<p>These systems were found to work without needing the fix described here. In other words, the USB 2 ports worked out of the box (and thus in effect in Linux):<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Fedora_Linux\">Fedora<\/a> 36 KDE Plasma. Released 2022-05-02. It is not known if it is due to it being newer or quite different from Ubuntu or Debian. Kernel version: 6.2.15 (originally 6.1.13)<\/li>\n<li>Fedora 41 <a href=\"https:\/\/fedoraproject.org\/spins\/\">Cinnamon &#8220;spin&#8221;<\/a>. Released 2024-11-29. Kernel version 6.12.11-200.fc41.x86_64 (originally 6.11.4-301.fc41.x86_64). <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cinnamon_(desktop_environment)\">Cinnamon<\/a> version: 6.2.9<\/li>\n<\/ul>\n<h2>The fix<\/h2>\n<p>This is essentially the mentioned forum post, but here are more direct instructions, e.g., to be confident that GRUB is actually used on a particular system.<\/p>\n<p>The fix is to add &#8220;iommu=soft&#8221;, though an explanation for <em>why<\/em> and <em>how<\/em> is lacking. The closest I have found is this 2016 bug report that has some internal details: <em><a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=1409098\">Enabling AMD IOMMU blocks function of Via VL805 USB 3.0 chipset<\/a><\/em><\/p>\n<p>However, GRUB is sort of hidden in contemporary Linux distributions. Often, nothing is shown during startup. The screen is simply blank until the Linux GUI environment comes up.<\/p>\n<h3>Updating the GRUB configuration<\/h3>\n<p>Use this procedure to change any of the GRUB configuration settings mentioned below. In a terminal, do:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nls -ls \/etc\/default\/grub\r\nsudo vi \/etc\/default\/grub\r\nsudo update-grub\r\n<\/pre>\n<p>The second line assumes proficiency in using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vi\">vi<\/a> or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vim_%28text_editor%29\">Vim<\/a> (including <a href=\"https:\/\/stackoverflow.com\/questions\/11828270\/\">quitting&nbsp;it<\/a>&#8230;). If not, use some other editor, like <a href=\"https:\/\/pmortensen.eu\/world2\/2020\/03\/29\/using-geany\/\">Geany<\/a>. But it must be run with administrator privileges (in order to make changes to file <em>\/etc\/default\/grub<\/em>), and this may change an application&#8217;s normal behaviour&#8230; (Because it is run as another user.)<\/p>\n<p>On Fedora, use this instead of &#8220;sudo update-grub&#8221;:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nsudo grub2-mkconfig -o \/boot\/efi\/EFI\/fedora\/grub.cfg\r\n<\/pre>\n<p>Or in later versions (e.g., <a href=\"https:\/\/fedoraproject.org\/wiki\/GRUB_2#Updating_the_GRUB_configuration_file\">in Fedora&nbsp;34<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Fedora_Linux_release_history#Fedora_34\">released 2021-04-27<\/a>) and later):<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nsudo grub2-mkconfig -o \/boot\/grub2\/grub.cfg\r\n<\/pre>\n<p>The first line is testing the existence of the GRUB configuration file. It should return something like:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\n4 -rw-r--r-- 1 root root 1228 Jul 13 18:51 \/etc\/default\/grub\r\n<\/pre>\n<p>If not, the result is:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nls: cannot access '\/etc\/default\/grub': No such file or directory\r\n<\/pre>\n<p><!-- The second line is starting <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vim_%28text_editor%29\">Vim<\/a>. This assumes proficiency in using Vim (including <a href=\"https:\/\/stackoverflow.com\/questions\/11828270\/\">quitting it<\/a>...). If not, use another text editor. Note that, in order to make changes to the file, the editor must be run with administrative privileges. --><\/p>\n<p>The last step (third line) is crucial; otherwise the GRUB behaviour does not change at all&#8230;<\/p>\n<h3>Prerequisites for the fix<\/h3>\n<p>Optional: Change the BIOS configuration to show a full splash screen (this will display more keyboard shortcuts). Press &#8216;Del&#8217; about once per second after the beep (it will not react until a few seconds after the beep and &#8216;Del&#8217; should not be pressed too late). In menu &#8220;BIOS Features&#8221;, change &#8220;Full Screen LOGO Show&#8221; to &#8220;Enabled&#8221;.  In menu &#8220;Save &#038; Exit&#8221; (right-most menu), choose &#8220;Save &#038; Exit Setup&#8221; and &#8220;Yes&#8221; (the default).<\/p>\n<p>The first question is if GRUB used or not on a particular system. Using the procedure from the previous section (including &#8220;sudo update-grub&#8221;!), uncomment (by removing the leading &#8220;#&#8221;) the line with &#8220;GRUB_INIT_TUNE&#8221;, so that the line reads:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nGRUB_INIT_TUNE=&quot;480 440 1&quot;\r\n<\/pre>\n<p>Or a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pac-Man\">Pac-Man<\/a> theme (<a href=\"https:\/\/www.reddit.com\/r\/linux4noobs\/comments\/x1ayw7\/grub_init_tune_play_tunes_from_pacman_star_trek\/\">credit<\/a>. <a href=\"http:\/\/wavapps.net\/GRUB.html\">Test it online<\/a>. <a href=\"https:\/\/askubuntu.com\/questions\/76309\/play-a-sound-before-or-after-grub-loads\/875855#875855\">Some more to choose from<\/a>. <a href=\"https:\/\/github.com\/VandalByte\/grub-tweaks\/blob\/main\/docs\/GRUB%20INIT-TUNE%20CHEATSHEET.md#-star-wars-imperial-death-march-source\">And even more<\/a>.):<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nGRUB_INIT_TUNE=&quot;2000 494 3 0 2 988 3 740 3 0 2 588 3 988 3 740 3 0 2 588 3 0 2 123 3 523 3 0 2 1047 3 784 3 0 2 659 3 1047 3 784 3 0 2 659 3 0 2 131 3 494 3 0 2 988 3 740 3 0 2 588 3 988 3 740 3 0 2 588 3 0 2 123 2 588 2 659 2 698 2 698 2 740 2 784 2 784 2 831 2 880 2 988 2&quot;\r\n<\/pre>\n<p>Restart the computer. There should be two beeps: One is when the BIOS is ready shortly after power on. I observed it 8-9 seconds after power on. The second beep came about 7 seconds after the first beep (indicating entering the GRUB part of the startup process).<\/p>\n<p>Note: Even if the hardware is capable of making the beep (and it works perfectly fine in LMDE and Ubuntu), it may not work for Fedora GRUB (on the exact same hardware). It isn&#8217;t clear what the reason is (for instance, it could be something decided at compile time for GRUB, or it could be the configuration, e.g., some GRUB modules that aren&#8217;t included (by default), like &#8216;play.mod&#8217;).<\/p>\n<p>Optional: Enable the GRUB startup menu. This is to be more confident that GRUB is actually used (allegedly, as an alternative, the Shift key can be held down while booting to make the menu show). Comment out (add a leading &#8220;#&#8221;) to the line with &#8220;GRUB_TIMEOUT_STYLE&#8221; in file &#8220;\/etc\/default\/grub&#8221;, so the line reads:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\n#GRUB_TIMEOUT_STYLE=hidden\r\n<\/pre>\n<p>Note: In later versions of GRUB, or at least in the default configuration file, this is not available. <!-- [We don't actually know...]: Possibly, use \"splash\" instead of \"quiet\" in GRUB_CMDLINE_LINUX_DEFAULT (see below). --><\/p>\n<p>Optional: Shorten the time the GRUB startup menu is shown (it is usually set to 10 seconds). This can be done by commenting (add a leading &#8220;#&#8221;) the line with &#8220;GRUB_TIMEOUT&#8221; in file &#8220;\/etc\/default\/grub&#8221; (this will use the default of 5 seconds) or change the &#8220;10&#8221; to a lower value. For the former, the line should read:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\n#GRUB_TIMEOUT=10\r\n<\/pre>\n<p>Optional: Change the GRUB menu entry that is chosen if the timeout period is reached. It is normally 0 for a simple setup, but for multi-boot systems it can be important (so the desired default operating system is started if nothing is chosen (times out)). Sample changing it to the <em>third<\/em> GRUB menu item:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nGRUB_DEFAULT=2\r\n<\/pre>\n<p>To use a sub menu, double quotes <strong><em>must<\/em><\/strong> be included (second menu, fifth sub menu item in this example):<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nGRUB_DEFAULT=&quot;1&gt;4&quot;\r\n<\/pre>\n<h3>The actual fix<\/h3>\n<p>To the string for &#8220;GRUB_CMDLINE_LINUX_DEFAULT&#8221; in file &#8220;\/etc\/default\/grub&#8221;, add &#8220;iommu=soft&#8221;. The line should read something like:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nGRUB_CMDLINE_LINUX_DEFAULT=&quot;splash iommu=soft&quot;\r\n<\/pre>\n<h3>Check<\/h3>\n<h3>Before a restart<\/h3>\n<p>Check the output of <em>sudo update-grub<\/em> (Ubuntu and Debian-derived). For instance, in a terminal:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nless \/boot\/grub\/grub.cfg\r\n<\/pre>\n<p>On some systems, &#8216;sudo&#8217; is required:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nsudo less \/boot\/grub\/grub.cfg\r\n<\/pre>\n<p>Look near &#8220;<em>menuentry &#8216;Ubuntu&#8217;<\/em>&#8221; (without the outer double quotes, but including the single quotes (note: as rendered on this page, it will not work if copy-pasted, due to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Quotation_marks_in_English#Smart_quotes\">smart quotes<\/a>; type it as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/ASCII#Printable_character_table\">ASCII<\/a> single quotes). Not indented).<\/p>\n<h3>After a restart<\/h3>\n<p><em>\/proc\/cmdline<\/em> should now contain <em>iommu=soft<\/em>. For example, in a terminal,<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\ncat \/proc\/cmdline\r\n<\/pre>\n<p>outputs something like (here, scroll right to see <em>iommu=soft<\/em>):<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nBOOT_IMAGE=\/boot\/vmlinuz-5.19.0-35-generic root=UUID=f43558c5-501a-4483-a223-a56b222f8004 ro splash iommu=soft vt.handoff=7\r\n<\/pre>\n<p>If not, one reason is if booting this Linux instance from another Linux instance&#8217;s GRUB menu. This Linux instance should be started directly from the BIOS. If it isn&#8217;t the default in the BIOS, then break into the BIOS (F2 a few seconds after the first beep) and select this Linux instance to start.<\/p>\n<h2>Blues<\/h2>\n<h3 id=\"2023_broken_Ubuntu_22.04\">Was it broken in later versions of Ubuntu 22.04?<\/h3>\n<p>A later system update of Ubuntu 22.04, <!-- from Linux kernel version 5.19.0-32 (or maybe it was slightly lower) --> to approximately Linux kernel version 5.19.0-32 (or later) seems to have broken the fix described here. One mitigation is to force Ubuntu 22.04 to <a href=\"https:\/\/www.youtube.com\/watch?v=CkyQhfhf048&#038;t=2m36s\">stay on the LTS kernel<\/a> (Linux version 5.15 series, for example, 5.15.0-67.74):<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nsudo apt install --install-recommends linux-generic\r\n<\/pre>\n<p>And change the default menu item setup in file <em>&#8220;\/etc\/default\/grub&#8221;<\/em> (GRUB will always select the kernel with the highest version number, not the one we are booted up as). For example, if the second menu, fifth sub menu item, happens to correspond to the 5.15 version, make it the default menu item by (the double quotes are crucial):<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nGRUB_DEFAULT=&quot;1&gt;4&quot;\r\n<\/pre>\n<p>This is the official way of doing it, but it is not very natural to have a (default) selection down in a sub menu that the user can&#8217;t see unless the user opens the sub menu (and the user only has 5 seconds to stop the GRUB countdown timer during boot).<\/p>\n<p>A more natural way would be to rename &#8220;<em>\/etc\/grub.d\/40_custom<\/em>&#8221; to &#8220;<em>\/etc\/grub.d\/00_custom<\/em>&#8221; (so it will contribute to the very first menu item by being first in the alphabetic order of the files) and copy the sub menu item into that file. But this then requires manual maintenance when the kernel is updated. Or perhaps this part could be automated with a script (updating file <em>&#8220;\/etc\/grub.d\/40_custom&#8221;<\/em>).<\/p>\n<p><!-- This doesn't work at all... GRUB will select the newest kernel, even when we are booted up as 5.15 (the LTS kernel)\n\n\n\n<ol>\n\t\n\n<li>Immediately reboot<\/li>\n\n\n\t\n\n<li>When the GRUB menu shows, choose <em>\"Advanced options for Ubuntu\"<\/em> (second menu item) &rarr; \"Ubuntu, with Linux 5.15.0-67-generic\" (or similar; it should contain \"5.15\"). It is probably the second to last menu item, in a menu probably containing six items).  (<a href=\"https:\/\/wiki.ubuntu.com\/Kernel\/LTSEnablementStack\">Source<\/a>).<\/li>\n\n\n\t\n\n<li>After startup of Ubuntu 22.04, run <em>sudo update-grub<\/em> (so 5.15 will be the new default). This will update GRUB to use the changed version of the Linux kernel (so this fix actually works); otherwise it will just start in the same version as before...<\/li>\n\n\n<\/ol>\n\n\n\n--><\/p>\n<h3>Some Linux variants may ignore the content of \/etc\/default\/grub<\/h3>\n<p>For instance, extra steps may be necessary for \/etc\/default\/grub and grub2-mkconfig to work. See for example <a href=\"https:\/\/www.golinuxcloud.com\/update-grub2-grubby-grub2-editenv-rhel-8\/#Update_GRUB2_using_grub2-editenv\">this blog post<\/a>. For example:<\/p>\n<p><em>&#8220;&#8230; \/etc\/default\/grub changes no longer being included when issuing grub2-mkconfig -o \/boot\/grub2\/grub.cfg. It seems that at least some options set there are now silently ignored. &#8230; The grub2-editenv utility is actually the recommended path to alter these variables.&#8221;<\/em><\/p>\n<h2>BIOS setting for enabling USB&nbsp;2 ports<\/h2>\n<p>It is possible to enable the USB&nbsp;2 ports by a BIOS setting alone, but then the USB&nbsp;3 ports don&#8217;t work (in Linux)&#8230;<\/p>\n<p>Enabling the setting &#8220;IOMMU&#8221; in menu &#8220;Peripherals&#8221; will enable them (though it is probably due to an incidental effect). <\/p>\n<p>But changing BIOS settings is not necessary if the above changes to GRUB have been made.<\/p>\n<h2>Conclusion<\/h2>\n<p>Even though this problem was identified in 2013 with a fairly mainstream and popular motherboard (presumably a particular popular  chipset), nine years later in 2022 the Linux community <em>still<\/em> has not fixed the problem, so that Linux would work out of the box without the requirement for the fix described here.<\/p>\n<p>This is very, very disappointing. They ought to make things work, instead of the minutia of how some window manager works slightly different than some other window manager.<\/p>\n<h3>Appendix A<\/h3>\n<p>Related to the GRUB configuration changes: Identify if a system is BIOS or UEFI (from <em><a href=\"https:\/\/fedoraproject.org\/wiki\/GRUB_2#Create_a_GRUB_2_configuration\">GRUB 2<\/a><\/em> &#8220;discover what firmware your machine uses&#8221;):<\/p>\n<p>    [ -d \/sys\/firmware\/efi ] &#038;&#038; echo UEFI || echo BIOS<\/p>\n<p>Note: Despite the confusing naming, this setting is dependent on content of the disks, not the actual BIOS. A system can have one disk using UEFI and another using BIOS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The short version: With default BIOS settings (which enable USB 3 ports) for the Gigabyte GA-970A-DS3P motherboard, the USB&nbsp;2 ports do not work (at least in Linux), only the two external USB&nbsp;3 ports. In Linux, the GRUB configuration parameter &#8220;GRUB_CMDLINE_LINUX&#8221; &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/pmortensen.eu\/world2\/2022\/07\/20\/enabling-both-usb-3-and-usb-2-ports-for-a-ga-970a-ds3p-motherboard\/\"> <span class=\"screen-reader-text\">Enabling both USB 3 and USB 2 ports for the &#8216;Gigabyte&#8217; GA-970A-DS3P motherboard<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[39,23,29],"tags":[],"_links":{"self":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts\/1798"}],"collection":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/comments?post=1798"}],"version-history":[{"count":205,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts\/1798\/revisions"}],"predecessor-version":[{"id":5958,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts\/1798\/revisions\/5958"}],"wp:attachment":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/media?parent=1798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/categories?post=1798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/tags?post=1798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}