{"id":108,"date":"2013-11-06T19:21:50","date_gmt":"2013-11-06T19:21:50","guid":{"rendered":"http:\/\/drsfenner.org\/blog\/?p=108"},"modified":"2013-11-06T19:24:00","modified_gmt":"2013-11-06T19:24:00","slug":"more-gentoo","status":"publish","type":"post","link":"https:\/\/drsfenner.org\/blog\/2013\/11\/more-gentoo\/","title":{"rendered":"Gentoo (continued &#8230;)"},"content":{"rendered":"<p>So, I finally decided to try to track down the microphone issues. \u00a0As always, this involved descending into the rabbit hole for a little while. \u00a0My first goal was to get a (slightly) newer kernel. \u00a0I was running gentoo-sources-3.10.7 from a genkernel and I wanted to run gentoo-sources-3.11.6 with a manual configuration. \u00a0Some of my hardware (on my\u00a0MSI Z77A-GD65 LGA 1155 Intel Z77 motherboard)\u00a0is listed <a style=\"line-height: 1.714285714; font-size: 1rem;\" href=\"http:\/\/drsfenner.org\/blog\/?p=86\">in my sound wrangling write-up<\/a>. \u00a0I also mentioned my irritation at mapping between kernel configuration options (aka, navigating menuconfig), CONFIG_FOO (as listed in .config), and kernel module names (for example, from lspci -k). \u00a0Using my hardware, I&#8217;ll show a somewhat workable way to get from hardware to a menuconfig option.<\/p>\n<h3>Spelunking Hardware to Kernel Config Menu Options<\/h3>\n<pre># lspci \r\n00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2\/3rd Gen Core processor DRAM Controller (rev 09)\r\n00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2\/3rd Gen Core processor PCI Express Root Port (rev 09)\r\n00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2\/3rd Gen Core processor Graphics Controller (rev 09)\r\n00:14.0 USB controller: Intel Corporation 7 Series\/C210 Series Chipset Family USB xHCI Host Controller (rev 04)\r\n00:16.0 Communication controller: Intel Corporation 7 Series\/C210 Series Chipset Family MEI Controller #1 (rev 04)\r\n00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 04)\r\n00:1a.0 USB controller: Intel Corporation 7 Series\/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)\r\n00:1b.0 Audio device: Intel Corporation 7 Series\/C210 Series Chipset Family High Definition Audio Controller (rev 04)\r\n00:1c.0 PCI bridge: Intel Corporation 7 Series\/C210 Series Chipset Family PCI Express Root Port 1 (rev c4)\r\n00:1c.6 PCI bridge: Intel Corporation 7 Series\/C210 Series Chipset Family PCI Express Root Port 7 (rev c4)\r\n00:1c.7 PCI bridge: Intel Corporation 7 Series\/C210 Series Chipset Family PCI Express Root Port 8 (rev c4)\r\n00:1d.0 USB controller: Intel Corporation 7 Series\/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)\r\n00:1f.0 ISA bridge: Intel Corporation Z77 Express Chipset LPC Controller (rev 04)\r\n00:1f.2 SATA controller: Intel Corporation 7 Series\/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)\r\n00:1f.3 SMBus: Intel Corporation 7 Series\/C210 Series Chipset Family SMBus Controller (rev 04)\r\n01:00.0 VGA compatible controller: NVIDIA Corporation GF114 [GeForce GTX 560 Ti] (rev a1)\r\n01:00.1 Audio device: NVIDIA Corporation GF114 HDMI Audio Controller (rev a1)\r\n03:00.0 IDE interface: ASMedia Technology Inc. ASM1061 SATA IDE Controller (rev 01)\r\n04:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller (rev 01)<\/pre>\n<p>You can also get the kernel modules used by the hardware with\u00a0<em>lspci -k<\/em>. \u00a0For brevity, I&#8217;ll just grab the modules:<\/p>\n<pre># lspci -k | grep use | awk '{ print $5; }' | sort | uniq\r\nahci\r\ne1000e\r\nehci-pci\r\ni915\r\nnvidia\r\npcieport\r\nsnd_hda_intel\r\nxhci_hcd<\/pre>\n<p>Not so awful. \u00a0Now, as I was cruising the web looking for some info, I stumbled across the following helpful command-line to tie &#8220;most&#8221; module names back to CONFIG_ lines (I lost it, but <a href=\"http:\/\/unix.stackexchange.com\/questions\/38023\/binding-lsmod-module-name-with-kernel-configuration-menu-entry\">I found the URL in my browsing history<\/a>): \u00a0grep -R &#8211;include=Makefile &#8216;\\bNAME\\.o\\b&#8217;<em>. \u00a0<\/em>For example:<\/p>\n<p>&nbsp;<\/p>\n<pre># grep -R --include=Makefile '\\be1000e\\.o\\b'\r\ndrivers\/net\/ethernet\/intel\/e1000e\/Makefile:obj-$(CONFIG_E1000E) += e1000e.o<\/pre>\n<p>This one isn&#8217;t too surprising. \u00a0We see that e1000e.o is tied to CONFIG_E1000E. \u00a0In turn, we can jump into menuconfig (or xconfig) and search for CONFIG_E1000E (in menuconfig, type a forward-slash &#8220;\/&#8221;; in xconfig, go to the find option). \u00a0In either case, we get a most useful piece of information:<\/p>\n<pre>Prompt: Intel(R) PRO\/1000 PCI-Express Gigabit Ethernet support\r\nLocation:\r\n-&gt; Device Drivers\r\n-&gt; Network device support (NETDEVICES [=y])\r\n-&gt; Ethernet driver support (ETHERNET [=y])\r\n-&gt; Intel devices (NET_VENDOR_INTEL [=y])<\/pre>\n<p>Now, the only issue is navigating to that spot and enabling the feature as a module or as a built-in. \u00a0Not too shabby. \u00a0Hopefully, I won&#8217;t forget in six or twelve months when I think about building a kernel again.<\/p>\n<p>Two other useful sources of information (note, I plugged in my once-in-a-while USB devices):<\/p>\n<pre># lsusb\r\nBus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub\r\nBus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub\r\nBus 003 Device 002: ID 046d:08ad Logitech, Inc. QuickCam Communicate STX\r\nBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\r\nBus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\r\nBus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\r\nBus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub\r\nBus 001 Device 003: ID 046d:c506 Logitech, Inc. MX700 Cordless Mouse Receiver\r\nBus 002 Device 005: ID 04a9:220e Canon, Inc. CanoScan N1240U\/LiDE 30\r\nBus 002 Device 006: ID 091e:2459 Garmin International GPSmap 62\/78 series<\/pre>\n<pre># aplay -l\r\n**** List of PLAYBACK Hardware Devices ****\r\ncard 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog]\r\n Subdevices: 1\/1\r\n Subdevice #0: subdevice #0\r\ncard 0: PCH [HDA Intel PCH], device 1: ALC898 Digital [ALC898 Digital]\r\n Subdevices: 1\/1\r\n Subdevice #0: subdevice #0<\/pre>\n<p>The camera uses gspca_zc3xx . \u00a0Which you can track, using the steps above, to this menu option:<\/p>\n<pre>Multimedia support --&gt;\r\n [*] Cameras\/video grabbers support \r\n [*] Media USB Adapter\r\n --&gt; [M] GSPCA based webcams\r\n --&gt; [M] ZC3XX USB Camera Driver<\/pre>\n<p>I started with a <a href=\"http:\/\/kernel-seeds.org\/seeds\/64_bit\/gentoo\/3.11.6-gentoo-x86_64-08.config\">kernel seeds 3.6.11 kernel<\/a>\u00a0as my base build, and I added a few things. \u00a0And removed a few things. \u00a0I made a diff, which I need to figure out how to conveniently host and attach to this post. \u00a0&lt;&lt;link to diff&gt;&gt;<\/p>\n<h3>NVIDIA Wrangling<\/h3>\n<p>So, that got me a running kernel. \u00a0Next, I realized the reason I hadn&#8217;t gone to a 3.6.11 kernel sooner. \u00a0NVIDIA&#8217;s official drivers (which I need for a dedicated GPU computing card) do not support &gt;=3.6.11 kernels right now. \u00a0So, I needed to grab a patch for the nvidia drivers. \u00a0Fortunately, <a href=\"https:\/\/devtalk.nvidia.com\/default\/topic\/628864\">one was available<\/a>. \u00a0Grab the tar file that is attached to that link and you can get suitable patches for several versions of the nvidia kernel drivers. \u00a0I was expecting to have to (1) hack a nvidia-drivers ebuild and (2) futz with a \/usr\/local\/portage type solution &#8230; but, low and behold, all I had to do was copy the patch to (I only wanted to patch one specific version of the drivers; I&#8217;m using 325.15):<\/p>\n<pre>\/etc\/portage\/patches\/x11-drivers\/nvidia-drivers-325.15\/get_num_physpages_325-331.patch<\/pre>\n<p>and emerge -avq nvidia-drivers. \u00a0Poof. \u00a0Almost easy. \u00a0I made some use of emerge @module-rebuild and emerge @x11-module-rebuild and had a working X11 very shortly thereafter.<\/p>\n<h3>Last but not least &#8230;.<\/h3>\n<p>If your memory is good, you might recall that the whole reason I undertook this project was to get my microphone working. \u00a0Who knows if the kernel upgrade helped, but with some tweaking I got it working tolerably in Skype. \u00a0This was pure, stubborn, knob fiddling. \u00a0Here are the final fiddles. \u00a0The first image is from kmix (you can do the same in alsamixer, this was easier for my screen grab). \u00a0I&#8217;m not sure if I mixed-and-matched with Capture 2 before. \u00a0Also, I tried different combinations of Rear Mic Boost to eliminate a good bit of static in my system, but with other fixes, this flat moderate level seemed to do fine. \u00a0One oddity: \u00a0kmix doesn&#8217;t show the correct PCM setting (which you can see in alsamixer). \u00a0Yes, there is <em>a<\/em> PCM channel you can select under Setting-&gt;Configure Channels. \u00a0But it isn&#8217;t\u00a0<em>the right<\/em> PCM channel. \u00a0Odd.<\/p>\n<p><a href=\"http:\/\/drsfenner.org\/blog\/?attachment_id=112\" rel=\"attachment wp-att-112\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-112\" alt=\"kmix-settings\" src=\"http:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/kmix-settings.jpeg\" width=\"672\" height=\"377\" srcset=\"https:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/kmix-settings.jpeg 672w, https:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/kmix-settings-300x168.jpeg 300w, https:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/kmix-settings-624x350.jpeg 624w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><\/a><\/p>\n<p>The second image is from Skype. \u00a0I don&#8217;t think I had noticed an Analog option before. \u00a0What&#8217;s more, it had to be the &#8220;Alt Analog&#8221;. \u00a0I don&#8217;t know if I tried it or if it was available due to driver differences in the kernel.<\/p>\n<p><a href=\"http:\/\/drsfenner.org\/blog\/?attachment_id=113\" rel=\"attachment wp-att-113\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-113\" alt=\"skype-settings\" src=\"http:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/skype-settings.jpeg\" width=\"824\" height=\"490\" srcset=\"https:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/skype-settings.jpeg 824w, https:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/skype-settings-300x178.jpeg 300w, https:\/\/drsfenner.org\/blog\/wp-content\/uploads\/2013\/11\/skype-settings-624x371.jpeg 624w\" sizes=\"auto, (max-width: 824px) 100vw, 824px\" \/><\/a>After all that, my Skype Test Call finally worked. \u00a0Yay. \u00a0A practical, if not exciting, denouement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, I finally decided to try to track down the microphone issues. \u00a0As always, this involved descending into the rabbit hole for a little while. \u00a0My first goal was to get a (slightly) newer kernel. \u00a0I was running gentoo-sources-3.10.7 from a genkernel and I wanted to run gentoo-sources-3.11.6 with a manual configuration. \u00a0Some of my [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,6],"tags":[],"class_list":["post-108","post","type-post","status-publish","format-standard","hentry","category-gentoo","category-mrdr"],"_links":{"self":[{"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/posts\/108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":7,"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":116,"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/posts\/108\/revisions\/116"}],"wp:attachment":[{"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/drsfenner.org\/blog\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}