我买了一台联想 Y500 并安装了3.5.0-27-generic #46-Ubuntu SMP Mon Mar 25 19:58:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
。问题:LAN 睡眠后无法工作。只有 WiFi。而且WiFi 无法正常工作。我已经在使用 alx 驱动程序,如何才能启动并运行 LAN 接口?
lspci -nnk | grep -iEA3 "(wireless|network|wifi)"
03:00.0 Network controller [0280]: Intel Corporation Centrino Wireless-N 2230 [8086:0888] (rev c4)
Subsystem: Intel Corporation Centrino Wireless-N 2230 BGN [8086:4262]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
04:00.0 System peripheral [0880]: JMicron Technology Corp. SD/MMC Host Controller [197b:2392] (rev 30)
Subsystem: Lenovo Device [17aa:3977]
Kernel driver in use: sdhci-pci
仅当我重新启动笔记本电脑并插入局域网电缆时以太网控制器才可用:
02:00.0 Ethernet controller: Atheros Communications Inc. AR8161 Gigabit Ethernet (rev 10)
答案1
这个问题实际上是问题 165192,所以我只重复一下答案:
Atheros AR8161 是一款新型蓝牙/以太网控制器,尚无主线内核支持。因此,为了构建驱动程序,您必须执行以下操作:
sudo apt-get install build-essential linux-headers-generic linux-headers-`uname -r`
wget -O- http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2012-07-03-pc.tar.bz2 | tar -xj
cd compat-wireless-2012-07-03-pc
./scripts/driver-select alx
make
sudo make install
现在,其他问题的答案是您必须在系统启动时加载它,但我们应该能够通过将其作为规则添加到 modprobe 来自动执行此操作。(仅供参考,我仍然在运行 12.04,但我认为在最近的版本中 modprobe 方面没有任何变化 - 如果我错了,请纠正我)
echo "alx" | sudo tee /etc/modprobe.d/alx.conf
您并没有专门问这个问题,但是出于好奇(因为我总有一天会买一台新的 Y500——联想在发货日期上真的让我很纠结),我也找到了解决您的无线问题的答案:
echo "options iwlwifi 11n_disable=1" | sudo tee /etc/modprobe.d/iwlwifi.conf
sudo modprobe -rfv iwlwifi
sudo modprobe -v iwlwifi
这将禁用当前会话的无线 N 模式(显然它在 Linux 中存在一些问题,抱歉,目前还没有更好的答案),并为 modprobe 添加另一条规则,以使其在将来重启时保持这种状态。
顺便说一句,我发现很多人在使用 Centrino Wireless-N 2230 时遇到了问题。我刚刚在英特尔论坛发现很多 Windows 用户实际上都遇到了同样的问题。根据英特尔代表和帖子上链接的文档,如果您的路由器设置为使用 WEP 或基于 TKIP 的 WPA,则卡会降至 b/g 模式 @ 54Mbps。出于某种原因,802.11n 草案规范禁止使用 TKIP 或 WEP 的客户端超过 54Mbps。因此,为了从卡中获得最佳速度,您需要确保您的接入点设置为使用 WPA AES(如果可以,则不要使用 AES+TKIP)。现在,这条信息是否会对我们 Linux 用户有所帮助,我不太确定。但是,学习一些东西并没有坏处 ;)
答案2
经过更深入的研究,我发现较新版本的 Ubuntu 附带的 alx 驱动程序仍然无法解决 AR8161 的问题。因此,为了解决这个问题,您有几个选择:您可以从源代码构建或启用“建议的”存储库。
启用建议的存储库
打开“软件和更新”应用程序(假设您正在运行 13.04 Raring)。转到更新选项卡并选中“预发布更新(Raring 建议)”复选框。单击“关闭”,您将看到一个“软件更新程序”窗口,以便您可以开始安装新软件。
这种方法的缺点是,你得到的是全部软件。如果您只想要 compat-wireless 软件包,则应选择 PPA 路线。也不能保证此方法对您有用。
从源代码构建
- 打开终端
sudo apt-get install build-essential linux-headers-$(uname -r)
mkdir compat-drivers
cd compat-drivers
wget http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.8.3/compat-drivers-3.8.3-2-snpu.tar.bz2
tar -xjvvf compat-drivers-3.8.3-2-snpu.tar.bz2
cd compat-drivers-3.8.3-2-snpu
./scripts/driver-select alx
make
-- 可能不需要,因为下面的 DKMS 应该执行此步骤
这至少应该可以让您开始比赛了。但是,下次安装新内核时,必须重建模块。因此,为了做到这一点,我们将使用 DKMS 注册模块,以便每次我们获得内核更新时都会重建它。
sudo cp -R compat-drivers-3.8.3-2-snpu /usr/src
cd /usr/src/compat-drivers-3.8.3-2-snpu
编辑:我确信这是一种更简单的方法,但我解决这个问题的方法是制作一个包装器脚本来调用 make 函数,以避免我之前的 dkms.conf 构建失败。因此,要做到这一点,我们必须首先创建脚本文件。
nano make.sh
在此文件中,输入以下内容:#!/bin/sh . scripts/driver-select alx make
sudo nano dkms.conf
在此文件中,放置以下内容:PACKAGE_NAME="compat-drivers" PACKAGE_VERSION="3.8.3-2-snpu" MAKE[0]="cd ${dmks_tree}/compat-drivers/3.8.3-2-snpu/build; sh make.sh" BUILT_MODULE_NAME[0]="alx" BUILT_MODULE_LOCATION[0]="drivers/net/ethernet/atheros/alx" DEST_MODULE_LOCATION[0]="/kernel/drivers/net/ethernet/atheros" AUTOINSTALL="yes"
使用 Ctrl+O 保存文件
sudo dkms add -m compat-drivers -v 3.8.3-2-snpu
sudo dkms build -m compat-drivers -v 3.8.3-2-snpu
sudo dkms install -m compat-drivers -v 3.8.3-2-snpu