找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
glinet
查看: 21148|回复: 82

[k3] k3屏幕不能完美原因及处理方案

  [复制链接]
发表于 2018-2-2 10:50 | 显示全部楼层 |阅读模式
本帖最后由 brainx 于 2018-2-7 15:33 编辑

------------------
最新进展
经过不断查询资料和分析 ,基本上已经 清楚了整个流程。
具体的整 个通信过程有望可以自己实现。
uhmi初始化,打开/dev/ttyS1(linux下串口设备 )
然后进行串口初始化的一系列操作, 这就是uhmi执行提示isatty sucessed的提示语原因之一。
之后创建一个dev_rx,dev_tx的线程,负责对接收到的数据 进行串口操作,屏幕就能正常显示了。
void *InitObjValue()  //初始化全局数组和回调函数
{
  void *result; // r0
  result = memset(&g_uhmi_params, 0, 0x1A84u);
  g_uhmi_params.dev_init = 0xA8CC;  //初始化callback
  g_uhmi_params.dev_rx = 0xAB48; // 接收线程callback
  g_uhmi_params.dev_tx = 0xAC94;//发送线程callback
  g_uhmi_params.dev_close = 0xA898;//退出callback
  g_uhmi_params.isScreenShow = 1;
  g_uhmi_params.ApplicationMode = 1;
  g_uhmi_params.nWeatherRefresh = 0xE10;
  return result;
}



int APP_INIT_MCU_DATA() //主要的调用逻辑
{
  signed int v0; // r0
  signed int v1; // r0
  char v3; // [sp+0h] [bp-410h]
  char v4; // [sp+1h] [bp-40Fh]
  char dest; // [sp+2h] [bp-40Eh]

  uhmi_data_crawler::host_table(&g_uhmi_params.pLinkDeviceTable);
  nSysUpTime = uhmi_data_crawler::getUptime();
  uhmi_data_crawler::verInfo((char *)&g_uhmi_params.stru_VerInfoFromNvram);
  CpToShowVerInfo();
  usleep(0x4E20u);
  v0 = uhmi_data_crawler::wifi(&g_uhmi_params.pWifiInfo);
  CpToShowWifiInfo(v0);
  usleep(0x4E20u);
  homeinfo((int)&g_uhmi_params.wan_homeInfo);
  CpToShowWanInfo();
  usleep(0x4E20u);
  uhmi_data_crawler::wanTotal();
  usleep(0x4E20u);
  PortStatus(&g_uhmi_params.PortStatus);
  CpToShowPortStatus();
  usleep(0x30D40u);
  v1 = uhmi_data_crawler::weather_info(g_uhmi_params.pCityInfo);
  CpToShowCityInfo(v1);
  usleep(0x30D40u);
  memset(&v3, 0, 0x400u);
  g_uhmi_params.nCurPage = 4;
  v3 = 48;
  v4 = 4;
  memcpy(&dest, &g_uhmi_params.nCurPage, 4u);
  CopyToShowBuffer(&v3, 6u);
  usleep(0x4E20u);
  return uhmi_data_crawler::checkScreenTimeInfo();
}


其中
1、第一页的版本信息来源于nvram的 hd_version,fw_version,product,sw_version,et0macaddr;
2、wifi信息来源于bsd_role,frequency,ure_disable,w10_bss_enabled,w10_ssid,w10_wpa_psk,vis_ssid_pwd,screen_2G5G_pwd_en等;
3、转圈圈页面的信息来源于 pingcheck,wan_txbytes,wan_rxbytes;
4、连接信息通过指令et port_status all,通过返回的内容判断(up /down)是连接还是断开;
5、天气信息是通过weather_code,weather_temp等 信息,通过weather进程取到信息会保存于nvram;
6、最后一页的网络连接信息是通过读取/tmp/udhcpd%d.leases,(JSON)通过解析得到MAC、IP等 信息,其中的图标是通过读取
/etc/out/vendor.json的MAC地址范围来判断是属于哪家厂商的,并显示相应的图标


目前进展就是这样,思路、数据来源和解决方案都有了,接下来就靠大神去编译实现了
若有不明白的地方,可以跟我联系。(PS ,即日起休假,欢迎加Q节后联系)
-----------------以下是串口的参数 设置
----------------------------------------
  if ( tcgetattr(v1, &termios_p) )
  {
    perror("uart_init");
  }
  else
  {
    cfsetispeed(&termios_p, 0x1002u);
    cfsetospeed(&termios_p, 0x1002u);
    termios_p.c_lflag &= 0xFFFFFFE4;
    termios_p.c_iflag &= 0xFFFFE2AF;
    termios_p.c_cflag = (termios_p.c_cflag | 0x8B0) & 0x7FFFFEBF;
    termios_p.c_oflag &= 0xFFFFFFF2;
    termios_p.c_cc[5] = 0;
    termios_p.c_cc[6] = 0;
    tcflush(v1, 0);
    result = tcsetattr(v1, 0, &termios_p);
    if ( !result )
      return result;
    perror((const char *)&unk_103E0);
  }

-----------------------------------------

论坛里面不缺各个高手,出了
lostlonger
梅林、混血梅林、lede、官改等各个固件,但每个固件均存在屏幕和天气不能完美的问题。

官改固件由于内核问题,缺少了tun.ko,virtual**穿透(p p t p l2tp gre协议)的支持。并且界面功能稍简单
混血梅林软件中心存在冲突,lostlonger大侠的梅林、lede等固件屏幕不支持。
经过分析由于内核编译环境等原因,梅林的tun.ko等内核模块不能在官改中加载
官改的phi_speed、weather、nhmi等程序本人未测试在梅林等固件中的支持
但从大侠们的固件均不支持,应该是程序存在兼容问题
我是个逆向分析人员,愿意给大侠们提供些帮助。
若有必要,可以愿意从提供官方屏幕相关程序,分析出源代码,提供给众大侠们,出个完美 的修改固件

若有意向的大侠,可以Q33515932联系我,以便进行下一步工作
----------------------------------------------------------------------------------------------------------------------------------
经过目前初步 粗略的分析 ,
1、uhmi维护了一个全局0x1A84大小的结构体。通过uhmi_init进行初始化。uhmi_init调用的函数有InitObj,GetMcuVer(),hotPlugDetected(8,1),hotPlugDetected(7,0)。
2、uhmi_thread_create(),创建三个线程函数,分别为uhmi_pthread_rx(),uhmi_pthread_tx(),uhmi_pthread_event(),rx线程和tx线程,有调用一个处理函数,我猜测这也是梅林有些固件数据 不准确的原因之一;event()线程,接收共享内存的指令进行uhmi进程间通信。
3、uhmi似乎留有bootloader相关的代码 ,体现 在bootloader_task()。
4、 uhmi_application(),初步判断应该是关键的界面显示 的相关处理过程。
5、之前梅林混血的作者有提到mcuVER的版本 ,这个是读取/mcu/目录 下的app.X.X.XX.hex,得到minor、major、swver的值。
6、天气是调用weather程序进行调用,天气列表是可以从https://phiclouds.phicomm.com/weather/city/list。用crul带上token即可提取,相关天气参数是放在nvram进行控制

通过阅读uhmi的相关代码,屏幕的交互很可能是通过nvram进行传递。 由于以前处理的不是linux平台,对于很多东西尚不清楚 ,请各路大神指导

-----------------------------------------------------------------------------------------------------------------------------------------




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

去这里看看 都是k3的屏幕 https://github.com/updateing/k3screenctrl  发表于 2018-2-20 12:20

评分

参与人数 22恩山币 +26 收起 理由
caoyu81730 + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
pzzq + 1 我来恩山就是为了撩你!
alaskachou + 1 写的不错!
renyouser + 1 我来恩山就是为了撩你!
0451doctor + 3 强大的恩山!(以下重复1万次)
qzbysh + 1 我来恩山就是为了撩你!
wffgwffg + 1 我对你的敬仰犹如江水滔滔,我上朝鲜战场后一定写信给你!!!
yilpoong + 3 希望梅林K3越来越完美
darght + 1 切糕党手持切糕刀强势围观楼主!
AN_drew + 1 写的不错!
rocdk890 + 1 亲,你这么厉害,我想做你的经纪人!
hatamen + 1 我对你的敬仰犹如江水滔滔,我上朝鲜战场后一定写信给你!!!
脆哨糯米饭 + 1 不错,支持下
dolby + 1 强大的恩山!(以下重复1万次)
NS8215 + 1 强大的恩山!(以下重复1万次)
lwiibj + 1 不管最终结果如何,还是要先支持一下!
发呆de鱼 + 1 不错,支持下
chali + 1 强大的恩山!(以下重复1万次)
cc16935136 + 1 兄弟,你肥皂又掉了…你是故意掉的?
晚风吹醒我 + 1 我来恩山就是为了撩你!
qq312199012 + 1 强大的恩山!(以下重复1万次)
bios12567496 + 1 我来恩山就是为了撩你!

查看全部评分

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2018-2-2 10:51 | 显示全部楼层
支持大侠
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 10:52 | 显示全部楼层
支持一下楼主
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 10:54 | 显示全部楼层
前排支持!@!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 10:58 | 显示全部楼层
6666帅气!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 10:59 | 显示全部楼层
这个就牛逼了。有种里程碑的感觉啊。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:00 | 显示全部楼层
支持,期待完美固件
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:04 | 显示全部楼层
支持支持
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:11 | 显示全部楼层
期待众侠合作,产出完美固件!!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:12 | 显示全部楼层

点评

修改见 https://github.com/welldo/asuswrt-merlin/commits/master  发表于 2018-2-7 12:34
包含的。。可以直接编译。。lostlonger修改的,我帮忙给添加到github。。 这个版本有个错误 dnsmasq有个小错误。。会无法取得ip。。后来lostlonger指出了修改方法,我也t https://github.com/welldo/asuswrt-m   发表于 2018-2-7 12:32
公开的是梅林固件本身,并不包含有K3相关的  详情 回复 发表于 2018-2-2 11:19
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:14 来自手机 | 显示全部楼层
支持大神!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:16 来自手机 | 显示全部楼层
支持一下大神!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-2 11:19 | 显示全部楼层
zshwq5 发表于 2018-2-2 11:12
源码已经公开了

https://github.com/lostlonger/asuswrt-merlin

公开的是梅林固件本身,并不包含有K3相关的

点评

K3相关的在380.69_1_20180123目录,380.69_1_20180123整合到梅林  详情 回复 发表于 2018-2-2 12:27
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 11:41 | 显示全部楼层
支持一下大神!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-2-2 12:05 | 显示全部楼层
一脸懵逼的进来,留言支持一下楼主,再一脸懵逼的出去
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛

只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

查看 »

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2025-5-30 05:01

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表