<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>无线网卡 &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/tag/%E6%97%A0%E7%BA%BF%E7%BD%91%E5%8D%A1/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Wed, 06 May 2015 16:20:43 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>无线网卡 &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>机器彼得</title>
		<link>https://www.somedoc.net/2015/03/29/%e6%9c%ba%e5%99%a8%e5%bd%bc%e5%be%97/</link>
					<comments>https://www.somedoc.net/2015/03/29/%e6%9c%ba%e5%99%a8%e5%bd%bc%e5%be%97/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sun, 29 Mar 2015 10:13:44 +0000</pubDate>
				<category><![CDATA[[未分类]]]></category>
		<category><![CDATA[EPIA]]></category>
		<category><![CDATA[ML8000]]></category>
		<category><![CDATA[无线网卡]]></category>
		<category><![CDATA[记事]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=3040</guid>

					<description><![CDATA[应该是很久以前，校花同学给过一块淘汰的小主板，型号是 EPI <a href="https://www.somedoc.net/2015/03/29/%e6%9c%ba%e5%99%a8%e5%bd%bc%e5%be%97/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>应该是很久以前，校花同学给过一块淘汰的小主板，型号是 EPIA ML8000。去年的这个时候，对二哥那台购于千禧年的联想天鹊 380 总算完全失去了兴趣。那是台内存还停留在 SDRAM 时代的机器，能往上适配的东东都太稀缺了，再玩完全没有性价比可言，于是把瓤掏空，塞进了三太爷最古老的那台电脑的机箱里卖给了收废品的。之所以要把壳留下，就是要放 EPIA ML8000 进去。前两天晚上无聊，打开烤烤机，顿时觉得当时装了 Windows XP 系统是个错误，运行速度还是很慢的。</p>
<p>决定给它重新安装个 Windows NT 系统，系统虽老，但开机后却能体验到一些顺畅，心情也会好一些。安装盘是现成的，可要用光驱就稍麻烦一点。机箱里有光驱，只是没有接线。把从苹果本上拆下来改装成的那个 USB 外置光驱请了出来，到 BIOS 里把引导顺序修改妥当，USB-CDROM 往前排，开始安装。复制文件的阶段比较顺利，但接下来的安装过程中出现了蓝屏，错误代码是 0x0000007B(0xF2813BD4, 0xC0000034, 0x00000000, 0x00000000)，INACCESSABLE_BOOT_DEVICE，用白话来说就是前一秒钟还用得好好的启动设备（也就是光盘所在的光驱），突然找不到了。重试了一次，情况一样，大概是 Windows NT 对 USB 光驱的支持不够。无奈只好翻开百宝囊，找到一条 IDE 数据线，把机箱里的光驱接起来。</p>
<p>重新开机，果然能够正常安装，只是光驱运转时的声音出奇的大，不知道的会以突然瞬间移动到了飞机场，差不多就要把熟睡的张兜少吵醒了。好在安装的速度竟然远小于预期，看来 800MHz 的主频对于 Windows NT 来说是比较奢侈的存在。安装完成后重启开机，基本正常，接下来要把显、网、声各卡驱动起来。</p>
<p>问题在于这个主板的日子实在是也很有年头了，驱动的寻找本来就困难，更何况是要找适用于更古老的 Windows NT 的驱动。这还不算完，找到几个驱动包以后发现，测试更麻烦，把带着驱动的 U 盘插上去根本没反应！网上搜索才知道，Windows NT 本身对 USB 的即插即用是不支持的。只好把联想 V550 上的可刻录光驱又找出来，把现在占着它位置的 Ubuntu 系统盘换下来，用一张空白光盘把驱动程序都刻录进去，然后再用这张光盘测试。过程中的百般曲折不细表，总而言之，最后发现，除了网卡可以正常驱动起来以外，显卡和声卡都无法有效工作。打开驱动程序里面的信息文件，也可以看出端倪，有好些地方都只写了 95/98/Me/2K/XP 及以上，恰恰没有 NT 的支持（不过这中间也有个意外的小收获，戴尔公司有个工具，安装包名 R62200.exe，可以给 Windows NT 提供一大部分 USB 协议栈的支持）。说回到驱动起来的网卡，其实用价值也不大，因为路由器在客厅，机器附近也没有可用的网线，顶好是要能把无线网卡用上。不过眼看着 Windows NT 对 USB 的支持程度，这些基本都属于妄想，所以动了抛弃 Windows NT，升级到 Windows 2000 的念头。</p>
<p>在 Windows NT 的世界里，还有一个软件需要表扬一下，7-zip。它不但可以正常安装，而且可以几乎完全正常运行。即使在刚刚安装完的 SP1 的状态下，除了工具栏的图标没有显示外（究其原因，应该是 Common Controls 的库版本不够高所致），其余功能都一概正常。</p>
<p>从 Windows NT 升级到 Windows 2000 很顺利，但后来的一个操作导致又重新安装了一次。原委是这样的。心里抱着对 Windows 2000 的期许，以为它应该直接就支持用着的 USB 无线键鼠套装，而不像前面那样，在 Windows NT 下只有键盘能被支持，鼠标操作毫无反应。可惜这期许竟然落空，鼠标依旧不能工作。到卸载列表里查看软件时发现安装的那个戴尔的 USB 协议栈仍然存在，怀疑是它在作怪，就卸载掉重启。结果变成键盘也不能用了。USB 接口的键盘不能使用，PS/2 的键盘家里已然没有了存货，网络又不通，不可能远程访问过去，系统彻底成了针插不进水泼不透的独立王国，堪比建国后彭真同志治下的北京城，所以只好重装。</p>
<p>重装完的系统表现不错，USB 口都工作良好，键盘和鼠标果然可以同时工作了，显卡、声卡、网卡一一驱动成功。接到 27 吋的优派显示器上，分辨率最高也能上到 1280&#215;1024，不过超过 800&#215;600 的分辨率都会让文字看起来太扁，反倒是一个 848&#215;480 的古怪分辨率最合适。在这些基本工作全部就绪之后，开始探索无线网卡工作于其上的可能性。</p>
<p>最开始想到的是小度 Wifi，只可惜到网上下载下驱动包一看，Windows 2000 也不在支持之列。终于又想起还有一个 Tenda W311MI 的 USB 无线网卡可以挪用（因为是在兜太郎的电脑上插着的）。先到官网查看信息，明确标注着支持 Windows 2000，看来有戏。插上去，把驱动小光盘找出来（得益于三太爷一般不扔可能还有用的东西），运行 setup.exe，却突如其来的报了个“不支持当前的操作系统”。被忽悠的我老人家又苦哈哈地从官网下载了一份驱动安装包，很奇怪的是这个版本的确实可以安装成功。</p>
<p>接着又是不幸的事。无线网卡驱动成功的表现，是系统里多出来一个和有线网卡一模一样的图标，一样到无法对其进行任何有效的无线网络相关设置。网上有人给出解释说，在 Windows 2000 下，无线网卡的配置，需要由厂商提供配置工具。问题就出在这儿，运行腾达的配置工具，它显示一条“stream read error”信息就退出了。一度怀疑腾达的官方表述在某次升级的时候被打破了而不自知，其实已经不能在 Windows 2000 上工作了，但质保人员并未发现。后来突然想起当前系统比较原始，不妨把系统补丁打了再看，于是又取盘安装了 SP4。重启后再运行 Tenda Wireless Utility，果然见到了庐山面目。</p>
<p>配置工具丑陋笨拙，并不算好用，只是功能还完备。配置过程中发现，加密方式只有一种，就是 WEP，而三太爷的路由器用的是 WPA-PSK 方式。一开始的时候以为这个无线网卡也太老，也许本不支持 WPA-PSK 的加密方式，转念一想不对，它在别的机器上一直是可以正常联网工作的。而翻看配置工具的一些词条，里面显然也有 WPA-PSK 相关的内容，说明该工具在出厂时是支持这一加密方式的，但在运行时，某些动态的判断导致它认为不能采用 WPA-PSK 方式进行加密通讯。这实在是个有趣的事情，截至本文发稿，三太爷仍旧一筹莫展中。</p>
<p>附注。彼得原理是现代管理学中的一个事物。在各种组织中，由于习惯于对在某个等级上称职的人员进行晋升提拔，因而雇员（我们用彼得来代称他）总是趋向于被晋升到其不称职的地位。电脑也一样，我们总是希望它能运行最新的最先进的系统，但它往往会被升级到一个运行起来非常勉强的地步，三太爷称之为机器彼得，是为题。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2015/03/29/%e6%9c%ba%e5%99%a8%e5%bd%bc%e5%be%97/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu 下小度 Wifi 的 64 位驱动</title>
		<link>https://www.somedoc.net/2014/12/29/ubuntu-%e4%b8%8b%e5%b0%8f%e5%ba%a6-wifi-%e7%9a%84-64-%e4%bd%8d%e9%a9%b1%e5%8a%a8/</link>
					<comments>https://www.somedoc.net/2014/12/29/ubuntu-%e4%b8%8b%e5%b0%8f%e5%ba%a6-wifi-%e7%9a%84-64-%e4%bd%8d%e9%a9%b1%e5%8a%a8/#comments</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Mon, 29 Dec 2014 15:16:39 +0000</pubDate>
				<category><![CDATA[[未分类]]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[小度 Wifi]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[无线网卡]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=2994</guid>

					<description><![CDATA[我们已经知道，小度Wifi 使用的芯片是 MT7601U，网 <a href="https://www.somedoc.net/2014/12/29/ubuntu-%e4%b8%8b%e5%b0%8f%e5%ba%a6-wifi-%e7%9a%84-64-%e4%bd%8d%e9%a9%b1%e5%8a%a8/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>我们已经知道，小度Wifi 使用的芯片是 MT7601U，网上能够找到的对应驱动的源代码包名为 D-PO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2，有的下载链接里没有那个减号。</p>
<p>这个源代码要想能够编译成功，要针对几个问题进行修订（共涉及 4 个文件）：<br />
1、增加小度 Wifi 的识别；<br />
2、对 64 位系统兼容。</p>
<p>首先是增加小度 Wifi 的识别。这个需要对 common/rtusb_dev_id.c 进行改动，在 {USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */ 这一行下新增以下三行代码：<br />
	{USB_DEVICE(0x2955,0x0001)}, /* XiaoDu Wifi */<br />
	{USB_DEVICE(0x2955,0x1001)}, /* XiaoDu Wifi */<br />
	{USB_DEVICE(0x148f,0x760b)}, /* 360 Wifi */<br />
能看出来，支持的小度 Wifi 有两个版本，最后一行是对 360 Wifi 进行支持的（未测试）。</p>
<p>对 common/mlme.c 作一个小修订，找到 MlmeResetRalinkCounters 函数，把原来的 (UINT32)&#038;pAd->RalinkCounters.OneSecEnd &#8211; (UINT32)&#038;pAd->RalinkCounters.OneSecStart) 语句修改为 (UINT32)(&#038;pAd->RalinkCounters.OneSecEnd &#8211; &#038;pAd->RalinkCounters.OneSecStart) 即可，这是一个指针差的计算，原来的前强转后相减，在 32 位系统上问题不大，在 64 位系统上则会产生错误。</p>
<p>接下来要修改 include/os/rt_linux.h，主要涉及到对数据包的数据结构进行访问的几个操作宏，把：<br />
#define GET_OS_PKT_DATATAIL(_pkt) \<br />
		(RTPKT_TO_OSPKT(_pkt)->tail)<br />
#define SET_OS_PKT_DATATAIL(_pkt, _start, _len)	\<br />
		((RTPKT_TO_OSPKT(_pkt))->tail) = (PUCHAR)((_start) + (_len))<br />
改为<br />
#define GET_OS_PKT_DATATAIL(_pkt) \<br />
		(skb_tail_pointer(RTPKT_TO_OSPKT(_pkt)))<br />
#define SET_OS_PKT_DATATAIL(_pkt, _start, _len)	\<br />
		(skb_set_tail_pointer(RTPKT_TO_OSPKT(_pkt), \<br />
		(int)((_start) &#8211; GET_OS_PKT_DATAPTR(_pkt)) + (_len)))<br />
，再把：<br />
#define GET_OS_PKT_END(_pkt) \<br />
		(RTPKT_TO_OSPKT(_pkt)->end)<br />
改为<br />
#define GET_OS_PKT_END(_pkt) \<br />
		(skb_end_pointer(RTPKT_TO_OSPKT(_pkt)))<br />
，即可。</p>
<p>最后修改 os/linux/rt_linux.c。定位到函数 duplicate_pkt，把其中的两处 skb->tail 改为 GET_OS_PKT_DATATAIL(skb)。定位到函数 ClonePacket，把：<br />
		pClonedPkt->dev = pRxPkt->dev;<br />
		pClonedPkt->data = pData;<br />
		pClonedPkt->len = DataSize;<br />
		pClonedPkt->tail = pClonedPkt->data + pClonedPkt->len;<br />
改为<br />
		SET_OS_PKT_NETDEV(pClonedPkt, pRxPkt->dev);<br />
		SET_OS_PKT_DATAPTR(pClonedPkt, pData);<br />
		SET_OS_PKT_LEN(pClonedPkt, DataSize);<br />
		SET_OS_PKT_DATATAIL(pClonedPkt, pData, DataSize);<br />
。定位到函数 wlan_802_11_to_802_3_packet，把：<br />
	pOSPkt->dev = pNetDev;<br />
	pOSPkt->data = pData;<br />
	pOSPkt->len = DataSize;<br />
	pOSPkt->tail = pOSPkt->data + pOSPkt->len;<br />
改为<br />
	SET_OS_PKT_NETDEV(pOSPkt, pNetDev);<br />
	SET_OS_PKT_DATAPTR(pOSPkt, pData);<br />
	SET_OS_PKT_LEN(pOSPkt, DataSize);<br />
	SET_OS_PKT_DATATAIL(pOSPkt, pData, DataSize);<br />
。定位到函数 RtmpOsSetPacket，把：<br />
	pOSPkt->dev = pNetDev;<br />
	pOSPkt->data = pData;<br />
	pOSPkt->len = DataSize;<br />
	pOSPkt->tail = pOSPkt->data + pOSPkt->len;<br />
改为<br />
	SET_OS_PKT_NETDEV(pOSPkt, pNetDev);<br />
	SET_OS_PKT_DATAPTR(pOSPkt, pData);<br />
	SET_OS_PKT_LEN(pOSPkt, DataSize);<br />
	SET_OS_PKT_DATATAIL(pOSPkt, pData, DataSize);<br />
。定位到函数 send_monitor_packets，把：<br />
		skb_put(pOSPkt, (pData &#8211; pOSPkt->data));<br />
		skb_pull(pOSPkt, (pData &#8211; pOSPkt->data));<br />
改为<br />
		skb_put(pOSPkt, (pData &#8211; GET_OS_PKT_DATAPTR(pOSPkt)));<br />
		skb_pull(pOSPkt, (pData &#8211; GET_OS_PKT_DATAPTR(pOSPkt)));<br />
。定位到函数 __RtmpOSFSInfoChange，把：<br />
		pOSFSInfo->fsuid = current_fsuid();<br />
		pOSFSInfo->fsgid = current_fsgid();<br />
改为<br />
		pOSFSInfo->fsuid = current_fsuid().val;<br />
		pOSFSInfo->fsgid = current_fsgid().val;<br />
。至此，所有修改完毕。</p>
<p>正常 make，sudo make install，然后再 sudo modprobe mt7601Usta 即可。</p>
<p>试用的感觉，这个驱动的效率应该很低。难道是我没有生成 release 的版本？</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2014/12/29/ubuntu-%e4%b8%8b%e5%b0%8f%e5%ba%a6-wifi-%e7%9a%84-64-%e4%bd%8d%e9%a9%b1%e5%8a%a8/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu 使用小度 Wifi 作无线网卡</title>
		<link>https://www.somedoc.net/2014/12/28/ubuntu-%e4%bd%bf%e7%94%a8%e5%b0%8f%e5%ba%a6-wifi-%e4%bd%9c%e6%97%a0%e7%ba%bf%e7%bd%91%e5%8d%a1/</link>
					<comments>https://www.somedoc.net/2014/12/28/ubuntu-%e4%bd%bf%e7%94%a8%e5%b0%8f%e5%ba%a6-wifi-%e4%bd%9c%e6%97%a0%e7%ba%bf%e7%bd%91%e5%8d%a1/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sat, 27 Dec 2014 16:49:29 +0000</pubDate>
				<category><![CDATA[[未分类]]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[小度 Wifi]]></category>
		<category><![CDATA[技术备忘]]></category>
		<category><![CDATA[无线网卡]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=2991</guid>

					<description><![CDATA[三太爷的 Ubuntu 目前有两份，一份是 MBP 上的，一 <a href="https://www.somedoc.net/2014/12/28/ubuntu-%e4%bd%bf%e7%94%a8%e5%b0%8f%e5%ba%a6-wifi-%e4%bd%9c%e6%97%a0%e7%ba%bf%e7%bd%91%e5%8d%a1/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>三太爷的 Ubuntu 目前有两份，一份是 MBP 上的，一份是 IdeaPad V550 上的。之前说过 MBP 上的这份，安装之后能正常启动运行就费了老鼻子的劲，而且还有后遗症，显卡偶发性卡顿，网卡经常性挂死，简直就像是黄真给温家五老吹嘘华山派的点穴手法霸道之处的翻版，所谓“大便不通，小便闭塞”。</p>
<p>这几天小收拾电子物件以及周边，扔了一大堆杂物，其中有相当部分是已经损坏/送人/消失的产品的包装盒、说明书、保修卡、驱动盘等。在这些东西中间，竟然发现了小度 Wifi 的踪迹。</p>
<p>据说这类随身 Wifi 的产品，OEM 之时本身基本都具有无线网卡的功能，只是各贴牌厂商出于自己的目的将之阉割了而已。在 Linux 这种海阔凭鱼跃的环境下，把小度 Wifi 作为无线网卡驱动起来是很有希望的。</p>
<p>有篇文章（<a href="https://www.huzs.net/?tag=%E5%B0%8F%E5%BA%A6wifi-linux%E9%A9%B1%E5%8A%A8">https://www.huzs.net/?tag=%E5%B0%8F%E5%BA%A6wifi-linux%E9%A9%B1%E5%8A%A8</a>）提到，小度 Wifi 使用了 MT7601U USB 芯片，要到 <a href="http://www.mediatek.com/zh-CN/downloads/mt7601u-usb/">http://www.mediatek.com/zh-CN/downloads/mt7601u-usb/</a> 去下载驱动源码。进去一看，需要提交自己的信息然后等待他们的回复邮件。不知道是不是没有提交成功，反正没收到邮件。继续搜索，在页面上看到包的文件名是 mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2，从网上得到后发现有问题，仔细一看，这个文件名里明明写的是 7610 而不是 7601，到上一级页面上看了下信息，按规律自行搜索 mt7601u_wifi_sta_v3004_dpo_20130913.tar.bz2，找到了看起来正确的代码包。</p>
<p>下载、解压，没问题，按照前面那篇文章里提到的方式修订了源代码，进行编译，结果 make 出了两个 error，然后又找到了解决办法：<a href="http://tieba.baidu.com/p/3010940964">http://tieba.baidu.com/p/3010940964</a>。主要就是修改 os/linux/rt_linux.c 中行 1121 和 1122 里的 current_fsuid() 跟 current_fsgid() 为 current_fsuid().val 和 current_fsgid().val，再次 make 通过。</p>
<p>之后的 make install 需要 sudo，然后再 sudo modprobe mt7601Usta。</p>
<p>到系统的网络设置里去看，已经发现是两个无线连接了。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2014/12/28/ubuntu-%e4%bd%bf%e7%94%a8%e5%b0%8f%e5%ba%a6-wifi-%e4%bd%9c%e6%97%a0%e7%ba%bf%e7%bd%91%e5%8d%a1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
