android ethernet网线不能热插拔

Joyce_ZhuRouRou 2012-11-14 12:30:46
我在android4.0.4上面添加的ethernet支持,做法是按照android-x86的patch来加的。现在出现了网线不能热插拔的问题,第一次热插拔网是通的,从第二次开始网就断了。
以下是开机时候的信息:
V/EthernetStateTracker( 892): Starts...
V/EthernetStateTracker( 892): Successed
V/EthernetStateTracker( 892): start to monitor the ethernet devices
I/EthernetStateTracker( 892): reset device eth0
I/EthernetStateTracker( 892): trigger dhcp for device eth0
D/EthernetStateTracker( 892): DhcpHandler: DHCP request started
I/EthernetStateTracker( 892): reset device eth0
I/EthernetStateTracker( 892): trigger dhcp for device eth0
E/EthernetStateTracker( 892): DhcpHandler: DHCP request failed: Timed out waiting for dhcpcd to start == mzhu property_set( ctl.start ==dhcpcd_eth0==)TOE2: toe2_isr()=>isr(0x00001C23).
D/EthernetStateTracker( 892): DhcpHandler: DHCP request started
I/EthernetStateTracker( 892): report new state DISCONNECTED on dev eth0
V/EthernetStateTracker( 892): update network state tracker
I/EthernetStateTracker( 892): report new state DISCONNECTED on dev eth0
V/EthernetStateTracker( 892): update network state tracker
I/EthernetStateTracker( 892): received disconnected events, stack=false HW=false
I/EthernetStateTracker( 892): received disconnected events, stack=false HW=false
V/EthernetStateTracker( 892): report interface is up for eth0
I/EthernetStateTracker( 892): interface up event, kick off connection request
I/EthernetStateTracker( 892): trigger dhcp for device eth0
I/EthernetStateTracker( 892): report new state CONNECTED on dev eth0
V/EthernetStateTracker( 892): update network state tracker
I/EthernetStateTracker( 892): received HW connected, stack=false HW=false
D/EthernetStateTracker( 892): DhcpHandler: DHCP request succeeded: addr: 192.168.9.192/24 mRoutes: 0.0.0.0/0 -> 192.168.9.254 | dns: 192.168.9.11,192.168.9.10 dhcpServer: 192.168.9.250 leaseDuration: 7200
I/EthernetStateTracker( 892): received configured succeeded, stack=false HW=true
D/EthernetStateTracker( 892): DhcpHandler: DHCP request started
E/EthernetStateTracker( 892): DhcpHandler: DHCP request failed: Timed out waiting for DHCP to finish
以下是第一次热插拔信息。
I/EthernetStateTracker( 892): report new state DISCONNECTED on dev eth0
V/EthernetStateTracker( 892): update network state tracker
I/EthernetStateTracker( 892): received disconnected events, stack=false HW=true
I/EthernetStateTracker( 892): stop dhcp and interface
V/EthernetStateTracker( 892): report interface is up for eth0
I/EthernetStateTracker( 892): interface up event, kick off connection request
I/EthernetStateTracker( 892): trigger dhcp for device eth0
D/EthernetStateTracker( 892): DhcpHandler: DHCP request started
D/EthernetStateTracker( 892): DhcpHandler: DHCP request succeeded: addr: 192.168.9.192/24 mRoutes: 0.0.0.0/0 -> 192.168.9.254 | 0.0.0.0/0 -> 192.168.9.254 | dns: 192.168.9.11,192.168.9.10 dhcpServer: 192.168.9.250 leaseDuration: 7200
I/EthernetStateTracker( 892): received configured succeeded, stack=false HW=false
以下是第二次热插拔信息:
I/EthernetStateTracker( 892): report new state DISCONNECTED on dev eth0
V/EthernetStateTracker( 892): update network state tracker
I/EthernetStateTracker( 892): received disconnected events, stack=true HW=false
V/EthernetStateTracker( 892): report interface is up for eth0
I/EthernetStateTracker( 892): interface up event, kick off connection request
I/EthernetStateTracker( 892): trigger dhcp for device eth0
D/EthernetStateTracker( 892): DhcpHandler: DHCP request started
E/EthernetStateTracker( 892): DhcpHandler: DHCP request failed: Timed out waiting for DHCP to finish
我追了一下源码,发现rundhcp后好像会读到/system/etc/dhcpcd/dhcpcd.conf这个文件,但是我的这个文件只有一下两行:
interface wlan0
option subnet_mask, routers, domain_name_servers
是不是应该在这里加入ethernet的信息?如果是,应该怎么加?
麻烦各位大侠指点下,谢谢
...全文
739 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahc2013 2013-08-03
  • 打赏
  • 举报
回复
在4.1.1上按照这个思路修改,测试不可以。Joyce_Qin_1986,到最后搞定了没?
Joyce_ZhuRouRou 2012-11-15
  • 打赏
  • 举报
回复
引用 4 楼 Joyce_Qin_1986 的回复:
引用 3 楼 looooooooop 的回复:是的, 不过我是在 2.3 上做的, 不是4.04, 你还是要看下两者的管理是否有差别。 那个只是一个参考 我在没有参照你给的链接修改之前,每次插拔网线都能收到PHY_UP这个事件的,就是收到这个事件之后,现在是前面两次热插拔都能正常,从第三次开始,拔掉网线后,EthernetStateTracker收到EVENT_H……
错了,是有到setState这里的,只是因为mNetworkInfo.isConnected() != state这个条件不成立,所以什么事情都没做
Joyce_ZhuRouRou 2012-11-15
  • 打赏
  • 举报
回复
引用 3 楼 looooooooop 的回复:
是的, 不过我是在 2.3 上做的, 不是4.04, 你还是要看下两者的管理是否有差别。 那个只是一个参考
我在没有参照你给的链接修改之前,每次插拔网线都能收到PHY_UP这个事件的,就是收到这个事件之后,现在是前面两次热插拔都能正常,从第三次开始,拔掉网线后,EthernetStateTracker收到EVENT_HW_DISCONNECTED事件后不执行setState这个函数来执行stopInterface去挺到dhcp这个服务了(前面两次热插拔是有执行这些的),再接上网线网就不通了,报E/EthernetStateTracker( 892): DhcpHandler: DHCP request failed: Timed out waiting for DHCP to finish这个错误。但是这个时候如果手动停到dhcp再启动它,网又能正常工作了。非常奇怪的地方是EthernetStateTracker收到EVENT_HW_DISCONNECTED事件后只有执行setState这条路可以走,不晓得它为什么不走了
looooooooop 2012-11-14
  • 打赏
  • 举报
回复
是的, 不过我是在 2.3 上做的, 不是4.04, 你还是要看下两者的管理是否有差别。 那个只是一个参考
Joyce_ZhuRouRou 2012-11-14
  • 打赏
  • 举报
回复
引用 1 楼 looooooooop 的回复:
请参考以下链接的第 八 部分 http://blog.csdn.net/kitty6620/article/details/7986852
按照上面改了之后,waitforevent返回来一个不知道什么东西啊,也不是空值: V/EthernetMonitor( 892): get event V/EthernetMonitor( 892): go poll events 网还是不通。请问你有尝试过这样修改吗?
looooooooop 2012-11-14
  • 打赏
  • 举报
回复
请参考以下链接的第 八 部分 http://blog.csdn.net/kitty6620/article/details/7986852

80,489

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧