<?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>小度 Wifi &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/tag/%E5%B0%8F%E5%BA%A6-wifi/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>小度 Wifi &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>
