Use ETAS ES582 on Ubuntu 20.04



ES582 – USB CAN FD Bus Interface by ETAS, not supported by python-can for now(20210717), but engineers from Bosch/ETAS have commit code to Linux Kernel, can be found in 5.13+.

Kernel version of Ubuntu 20.04 is 5.8.x, download latest stable kernel from Kernel PPA Mainline, 5.13.2 for now. https://kernel.ubuntu.com/~kernel-ppa/mainline/

Download 3 “generic” debs for your arch, and install by dpkg -i, reboot.

Next, lsmod | grep etas, if it’s not loaded by default, load by sudo modprobe etas_es58x.

Plug your ES582 into USB, sudo dmesg check if it’s recognized, then ip a, you should be able to see can0 and can1.

ES582 is so EXPENSIVE. To test the CAN/CANFD, get a DB9 connector and connect like this.

Now we get CAN High and CAN low connected like on a CAN BUS, we’re able to communicate between CAN0 and CAN1.

Then we configure can0 and can1 to support CANFD.

sudo ip link set can0 type can bitrate 1000000 triple-sampleing on fd on dbitrate 2000000

sudo ip link set can0 up

Same on can1.

Install can-utils and in terminal 1 send to can0 and terminal 2 dump on can1.

cansend can0 211##1112233445566

candump -L can1

MORE

Available options for ip command: https://www.kernel.org/doc/Documentation/networking/can.txt



Use ETAS ES582 on Ubuntu 20.04 by @sskaje: https://sskaje.me/2021/07/use-etas-es582-on-ubuntu-20-04/

红米音箱固件更新检查逻辑



前一篇,看到了https的协议内容,其中使用了 ota check 检查固件版本,但是实测返回出来的内容是一个只有3k不到的 HDR 开头的文件,猜测这个文件应该是一个加密或者压缩后的response,例如json。

ota这个命令在 /bin/ota,本身是个 shell 脚本,直接读内容,可以看到所有的命令调用的都是 matool 以及它的各个 symlink。其中命令

执行 ota ble,输出如下。(输出被我掐了,因为我怕直接进了更新,就没法调试了)

从charles里拿到rootfs的下载链接,找个linux下下来,直接 squashfuse rootfs_1.76.2_xxxxxx.bin /mnt/ 挂载了,可以看数据。

回过头来,研究协议和算法。

从 ota 这个脚本里看到,执行升级的时候,先把那个小文件下载为 /tmp/mico_ota.bin,再用 /bin/flash.sh /tmp/mico_ota.bin 。再从整个squashfs里找 “Start downloading” 这个字符串,发现在 /bin/skr 里。

再细看里边的代码,最终发现解包命令 miso -x xxx.bin,就在调用 skr 命令的前几行。解包完的目录里多了三个文件

其中 .json 文件里包含了 kernel 和 rootfs的下载链接。

再一个,检查更新的接口有个参数s,是一个签名参数。先ldd

再根据请求的关键词 countryCode,找到固件版本检查的接口构造方法在 libxiaomi_mico.so 里,ida 加载后发现一个 uuid “8007236f-a2d6-4847-ac83-c49395ad6d65”,

Google一搜,好多不同的小米设备都是用这个。大致算法如下



红米音箱固件更新检查逻辑 by @sskaje: https://sskaje.me/2021/04/redmi-play-firmware-upgrade-check/

MH: A CLI based Memory Editor for iOS/macOS

I write this project just because I don’t like those game memory editor like igg.

Code: https://github.com/sskaje/mh

CMake is required for building. Build scripts already included in build/.

Leave an issue if there’s any bugs/feature requests.

MH: A CLI based Memory Editor for iOS/macOS by @sskaje: https://sskaje.me/2018/03/mh-cli-based-memory-editor-ios-macos/

Incoming search terms:

Set up iOS SSH over USB with MacPorts

文档在:http://iphonedevwiki.net/index.php/SSH_Over_USB

提供了homebrew的安装方式。这里给一下MacPorts下的安装方式。

安装过程可能会进入opam的初始化状态,如果没有的化,可以手工执行

慢的时候不要急着回车,中间会有需要输入y确认的选项

gandalf的新版mapping配置用的是json,跟wiki描述的已经不一致了。

手机连上电脑,直接执行gandalf

编辑 mapping.json,内容如下

其中:udid与上边直接执行命令时拿到的结果须一致;name自定义;forwarding里的local_port是本地开的端口,device_port是远程的端口。
按这份配置,我可以直接使用 ssh -p 10022 root@127.0.0.1 连接到iPhone的22端口。

执行下列命令,启动gandalf。

Set up iOS SSH over USB with MacPorts by @sskaje: https://sskaje.me/2017/07/set-up-ios-ssh-over-usb-with-macports/