背景 我一直很喜欢听各种轻音乐和钢琴曲。幼儿园的时候父母就带我去学过钢琴,然而学了没几天我性格里的 Ti 就发作,很想研究钢琴的原理,去钢琴上爬上爬下观察,甚至想拆了钢琴,当时弄的老师火大,最后没有学成。 但这个经历一直没有抵挡我追求音乐的心,我经常感觉自己想要学习一些乐器,目的是在于我想要用自己内心的节奏去演奏一份独特的旋律,可以表达独特的一份情感。 但是,时间已经被更多有趣的事情压垮的我,怎么办呢? 偶然的发现 有一次和朋友出门逛街发现了一个小玩具: 朋友刚好在跟我讨论,转盘上面的两个磁铁是做什么用的,旁边似乎没有找到可以吸上去的东西。 然后我一看,转盘,播放器进度条,按钮,让我想到了黑胶唱片。 继续去想,如果我们能给音乐做 FFT,播放的时候以我们转动转盘的速度 IFFT 播放出来,这样既能保持原有的音符和节奏,又可以控制自己喜欢的节奏播放出来,这样就可以在不学习乐器的情况下也满足目的了。 童年的梦想居然要被自己制作的小玩具实现了? 制作 随后,我开始思考起了整个架构: 如何用传感器收集转盘的位置…
好奇宝宝在这个时代如何跟着 AI 学习
背景 最近在家里给 Broadwell 老机器(5代酷睿)+ 华硕 Z97 主板插上了一张 NVIDIA V100 32G 显卡。BIOS 给 PCIe RC 分配的 64-bit Prefetchable BAR…
4 卡 RTX 4090 P2P 折腾记 —— 如何 Hack Rebar 和 Above 4G Decoding
背景 最近拿到了一台 4 卡 RTX 4090 的机器,但用的是一代至强可扩展(Skylake)+ 技嘉 C621-WD12 主板。我们直接把显卡装上虽然可以使用,但是缺少了 P2P 功能对 LLM 推理跑 TP 不友好,因此我进行了一番折腾。 由于 PCIe…
模拟 USB HID 修好了无限重启 (boot loop) 的 Android 手机 —— 如何在 2s 时间内快速打开 ADB
背景 m1luf0 在她的 OnePlus 12 上安装了 Island 创建隔离的 Work Profile,然后进行了一些 App 的 Clone 后 Destroy 再次重新创建,在创建过程中手机就自动重启,接着开机后,每次输入密码大概 2-4s 左右的时间又会自动重启(前3次只重启…
裸 die 芯片散热请务必使用相变硅脂
背景 自己在京东上买的磐镭YO-1 AMD Strix Halo 小主机在短短半年的时间内经历了2次高温死机问题的售后。而在上个月跑一些自己的研究代码测性能期间,我发现了严重的单核降频问题(5.1GHz Turbo 跑出来只有 4.6GHz),最终定位到问题在于,原厂普通硅脂的pump-out effect(蹦出效应)导致的问题。 经过 2025.6.6 购入小主机 2025.6.18 经历第一次高负载死机,京东换新 2025.10.8 经历第二次高负载死机,京东换新 后面几个月持续安稳…
AMD Strix Halo 上运行 ROCm 7.1 + PyTorch 踩坑小记
背景 最近打算尝试微调 LLM 做一些科研有关的工作,但毕竟我不是做 AI 相关方向的因此自己并没有合适的 GPU 。目前多数开箱即用的模型训练都工作在 FP16 这样的精度(虽然有很多很多低精度训练的研究了),而不是推理常见的 INT4,因此仅仅 7B 参数完整载入就需要 14G 的 VRAM,再加上微调模型中所需的数据又需要额外的 VRAM,手里实在没有 VRAM…
非原生 eSIM 手机出国旅游 eSIM 使用指北
背景 最近两个月去了法国和日本开会,发现 eSIM 在旅游时使用非常方便,我们可以直接在网上购买旅行 SIM 卡套餐然后扫码下载,主要好处包括: 套餐自由选择,可以按照自己最低需求购买低价套餐,不必担心部分 SIM 卡无法流量充值的问题,不够用就随时再买一张 低可用性风险,遇到问题随时可以下载新的 SIM 卡使用,不必等待快递或是出门找商店 灵活切换运营商,遇到某个运营商信号不好,此时有其他运营商 eSIM 时,可以在手机上点击菜单直接完成切换,而无需带着取卡针更换实体 SIM 卡 (比如我们去…
网络设备(特指 TP-Link)距离正确处理 IPv6 Fragmentation 还有多远
背景 过年在外婆家住了几天,因为这里没有装宽带于是带上了 5G CPE ,以及随便购买了 TP-Link 7DR3630 路由器(现已退货换其他产品) ,为几天后外婆家安装宽带做好准备。由于我的大部分工作数据放在家里的服务器上,出于习惯一般喜欢连接 WireGuard VPN 回家。而连接公共 WiFi 时我一般习惯加上默认路由到 VPN ,结果今天回到外婆家里连着 5G CPE…
自己家的全屋光纤与无线覆盖布网实战
原则与实战结果 自己家今年搬入了新居,对于我来说一件十分重要的事情就是规划网络布线了。 我计划按照以下原则布置网络: 每个房间都有 4 芯光纤,确保以太网使用 2 芯之后还有 2 芯可用,从而可以接 HDMI 光端机等设备以及出现断芯等情况后可以替换。 有人活动的位置 5GHz WiFi RSSI <= -65…
第一次在国内航班体验机上WiFi
于 2023 年 8 月 3 日乘坐了厦门航空的 MF8208 从西安飞往厦门,执飞飞机是一架 BOEING 787-8 宽体型客机,上飞机后惊奇地发现座位旁有 WiFi 图标,而在地面上我拿手机搜索了一圈并没有看到任何非个人热点的 SSID 。但我依然非常期待,因为距离上一次在空中上网已经是2014年在美国使用 gogoinflight 了。…
第一次给Kernel邮件列表交Patch遇到的小坑
第一次交 PATCH ,交成了这样: 而我交 patch 的方式只不过是: git format-patch 457391b0380335d5e9a5babdec90ac53928b23b4 –cover-letter # edit cover letter git send-email \ –from…
基于PiKVM制作M1 Mac Mini KVM
背景 因科研需求,让实验室购买了一台M1芯片的Mac Mini进行相关测试。但由于我的操作会涉及大量Kernel Panic,且希望将机器丢在远端,因此需要有一种方法能够让我远程进行真机的键盘鼠标操作以及按电源键的操作。 相关工作 之前有了解到PiKVM项目,通过树莓派的OTG功能接上HDMI采集卡,就可以实现远程控制电脑的键盘鼠标,并可以自定义各种GPIO的设备,实现连接开关按钮、LED指示灯,甚至还支持伺服电机,能够直接连接机械手完成按电源键的操作。 此外,它还可以通过OTG模拟一个ncm/rndis网卡、USB串口、USB光驱、U盘等设备。但值得注意的是,这些设备在macOS与Linux中均可使用,但U-Boot不支持ncm/rndis网卡与USB串口,甚至打开后会导致U-Boot中无法使用PiKVM键盘控制(原因待研究)。 挑战 最大的挑战在于,Apple Silicon的Mac不再像之前的x86机器那样,通过按住键盘上的option就可以进入启动菜单,而需要长按电源键,这就给远程管理带来了困难。 受到twd2的这三篇文章启发(远程控制Apple M1 Mac Mini、制作Apple M1 Mac Mini远程控制装置、安装Apple M1…
使用nandsim模拟超过64G的大容量MTD设备
最近做毕设项目需要模拟mtd设备,并对yaffs进行相关测试。而由于要求模拟1TB容量的mtd设备,而若使用block2mtd,由于它的page size为1B大小,无法进行yaffs的挂载。 后来同学发现了Linux Kernel自带了nandsim模块,我们可以模拟一个块设备。且这个模块启动的时候可以通过overridesize参数设置整个mtd的大小为所选模拟设备的erase_size为2的整数幂。 但我们实测发现,如果overridesize设置过大,会报出以下错误: ➜ sudo modprobe nandsim first_id_byte=0x98 second_id_byte=0xd7 third_id_byte=0x94 fourth_id_byte=0x32 overridesize=20 insmod: ERROR: could not…
AMD Zen 2/3处理器上的迷惑现象
今天在实验室装了一台AMD Ryzen 5700G的机器,想看看和自己寝室里放的AMD Ryzen 5800X性能差距多少,考虑到架构相同仅L3 Cache大小不同,因此就进行了一个简单的循环测试来看看单核Turbo Boost性能差距有多大。 实验室的5700G机器上安装了Ubuntu 21.04(考虑到20.04目前内核版本为5.4,无法支持Zen 3的一些电源管理特性,而实验室同学喜欢用Ubuntu),而我自己台式机则是滚的Debian sid。 两台机器自带的编译器如下(后续已经发现只与编译器有关): 实验室的5700G:gcc version 10.3.0 (Ubuntu 10.3.0-1ubuntu1) 寝室的5800X:gcc…
修改binutils在RISC-V上添加汇编指令
1. 起源 最近给学长打工做的相关研究需要对RISC-V指令集进行扩展,因此需要魔改编译器添加指令。 而RISC-V架构上做到这一点其实非常容易,官方提供了一个riscv-opcodes工具,它可以用于生成编译器所需的opcode宏来添加所需的指令。 2. 准备环境 我的实验基于Debian Bullseye发行版进行。(写这篇文章之时Bullseye还处于Testing状态) 首先我们需要编译安装riscv-gnu-toolchain. sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev…
博客复更
最近在研究Linux内核相关的东西,准备写几篇文章记录一下。但是自己的博客太久没有打理了。 本来打算将博客迁移到Hugo上,但是发现评论的迁移和搜索的实现比较麻烦,因此最终还是决定继续使用WordPress。 之前WordPress最让我头疼的问题是在于代码高亮插件。在不同的代码高亮插件间切换令人崩溃。同时由于我使用的代码高亮插件在遇到<和>字符的时候会自动escape,但是在编辑器中每次打开再保存会又escape一次,不知道为什么会有这样奇怪的设定。这也就导致了我一直纠结于博客系统而就放弃了内容上的更新。 今天仔细研究了一下相关方案,发现WordPress上有一个插件可以很好地解决问题,插件名叫WP Githuber MD。可以直接在里面使用Markdown来编写,同时还自带了优化Markdown文档的种种插件,比如用于代码高亮的prism.js,以及用于数学公式的KaTex。 改了几篇文章下来,感觉比之前使用WordPress编辑器+各种插件+部分手写HTML要方便不少。最终决定采用这个方案继续写博客了。也感谢大家这么多年来对我的博客的支持,希望接下来继续生产许多有价值的内容。
CQU选课小技巧
很多CQU的学生都遇到一个问题,选课的时候明明选完了,但是在提交上去的最后一步却遇到了Service Unavailable的情况,导致选课全部作废,需要重新选。 其实,借助Chrome浏览器和Fiddler可以很好地帮助我们解决这个问题。 问题根源:抢课系统在遇到提交失败的时候会丢失我们所选课的列表 解决方案:使用抓包工具,如果提交选课结果没有成功,就将提交上去出错的请求重放一遍 这里就不继续阐述诸如“看见加载不要继续点刷新”一类大家都知道的小技巧了 选课之前,你需要先安装好Chrome和Fiddler,Chrome建议安装SwitchyOmega插件,并按照这样设置。 点击上面菜单的黑色圆圈 然后点击选项 之后点击“新建情景模式” 然后按照下图设置代理协议HTTP,代理地址127.0.0.1,代理端口8888 (这个是Fiddler的默认配置) 之后应用选项。 然后打开fiddler,点击Tools,Options,按照这样设置 去掉Capture…
把树莓派作为Wi-Fi路由器(IPv6 passthrough、5GHz 11ac)
最近刚入手了Raspberry Pi 3B+. 打算当做一个高可玩性的路由器用。 毕竟这代硬件配备了千兆以太网(受限于USB总线带宽只能跑到250Mbps左右),和11ac Wi-Fi(受限于SDIO总线只能跑到110Mbps左右)。 参考资料:https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md 我准备实现以下几个功能: Wi-Fi工作在11ac模式(如果你想使用11n模式,建议在hostapd配置部分参考这里),达到433Mbps的Link Speed Wi-Fi共享以太网口的网络,IPv4使用NAT模式 IPv6使用穿透模式(可适用于几乎所有学校和家庭的IPv6环境,甚至你的手机开启个人热点后通过USB连接在Pi上也可以用这种方式使后端设备得到IPv6地址) 接下来开始操作: 0x00. 切换到root用户 sudo su 0x01….
在macOS下编写C++程序
还是由于最近身边许多同学换到了macOS,他们多数曾经是OIer或者大学打算读计算机,跑来问我如何在macOS下编写C++程序,这里介绍一下我的方法。 (如果你已经熟悉在Linux或是WSL下写程序,那这篇真的没啥好看的) 首先,你需要安装编译器。 由于Xcode会自带一个clang LLVM编译器(与gcc不同,如果写了UB可能会和gcc编译的程序运行结果不同),你只需要去App Store安装Xcode并运行一次即可。 然后,你需要安装一个代码编辑器。 推荐2个代码编辑器: Sublime Text Visual Studio Code 然后,准备一个好用的终端环境 推荐参考这篇文章:https://blog.cyyself.name/2018/07/macos/ 你可以选择先处理一下bits/stdc++.h问题 参考这里:https://github.com/tekfyl/bits-stdc-.h-for-mac 执行以下shell代码:…
macOS终端调教历程
工欲善其事,必先利其器。 最近,我的许多朋友换了电脑,其中有不少换了Mac。他们也常常来问我macOS下如何编译程序,VS Code与VS区别等等。其中他们多数是准备在macOS上学习C++、Python等语言。 考虑到身边许多朋友需要这个,而我自己的电脑也需要整理一下,所以今天把电脑数据备份了下然后重装了系统,希望能把我自己配置macOS的历程分享给大家,为大家提供一些帮助。 在做如下操作前,请先到App Store安装好Xcode。 由于Xcode下载需要等待较长时间,在此之前,你可以先了解一下基本的Unix命令。如cd、ls、echo、cat等。 顺带了解一下nano编辑器的使用。 首先,一个好用的软件包管理器有助于环境的配置。 经常使用Linux发行版的朋友肯定对包管理器不陌生。可以用它来管理安装的软件包,并实现软件批量升级。同时还可以一行命令搞定软件安装。比如Debian、Ubuntu使用的apt,CentOS、Fedora使用的yum。 这里推荐一个Mac上的包管理器,Homebrew。 我们只要打开浏览器,将中间的命令一整行复制下来,到终端中粘贴,然后回车。 在安装过程中,你可能遇到需要输入密码的时候。需要提醒大家的是,这里输入密码是看不到输入密码的提示的,许多初学者的感觉是密码没有输进去。不过不要紧,只要在键盘打完当前用户的密码,然后按回车即可。 第二,一个好用的Shell有助于效率的提升 在此安利一下zsh,一个比自带的bash好用得多的Shell,还有各种插件可以添加。 待homebrew安装完后,我们可以来安装一下zsh。 在终端中输入…