最近将家庭网络的 AP 升级到了 WiFi 6。升级后,发现一台 2014 年购买的笔记本电脑无法搜索到新的 WiFi 网络。此电脑使用了 Intel Wireless-AC 7265 网卡。在网上搜索“intel 7265 ac wifi 6”关键词,可以找到这个 Intel 官方支持页面,其中提示“Wireless Adapters supporting 802.11ac may not show Wi-Fi 6 (802.11ax) networks in their scan lists”,而解决方法是更新驱动程序。Intel 7265 网卡有两个硬件版本(Rev.C 和 Rev.D),而这台电脑搭载的是较老的 Rev.C 版本。在支持页面中提示 Rev.C 版本需更新到“18.33.13.4 或更新版”驱动,但随着 7265 Rev.C 版本的停止支持,此驱动已经无法下载,官网下载的最新版驱动程序也没法驱动 7265 Rev.C。于是我在淘宝上花 30 元购买了一个 7265 Rev.D 版本的无线网卡,替换后,在官网下载最新驱动程序,即可成功联网。
nix-env 安装 Python 的包
近日在 mac 上编译使用 nanopb 的程序,需要一个带有 grpcio-tools 包的 Python3 环境。我的 mac 使用 nix 来安装包,在此记录安装方法:
# py.nix { pkgs ? import <nixpkgs> {} }: let my-python-packages = p: with p; [ grpcio-tools # other python packages ]; my-python = pkgs.python3.withPackages my-python-packages; in my-python
然后执行 nix-env -i -f py.nix
即可。
Overleaf 3.3.1 安装 scheme-full 的步骤
最近把自建的 Overleaf 更新到了 3.3.1 版本,在安装 scheme-full 的时候老是出错。下面记录一下正确的安装步骤。
非常重要的一点是,如果你已经执行过安装命令,并且安装失败(不论是网络错误还是其他错误),那么必须从头开始,否则已经安装的文件会产生干扰。我们可以使用 bin/docker-compose up --force-recreate
来重新创建 docker 镜像。
创建好后,我们使用 docker exec -it sharelatex bash
进入容器,然后执行以下命令:
# 换成 BFSU 镜像源(用 opentuna 镜像似乎会出错,原因不明) tlmgr option repository https://mirrors.bfsu.edu.cn/CTAN/systems/texlive/tlnet/ # 升级 tlmgr 和现有软件包 tlmgr update --self --all # 临时修正 path 缺失的问题(如果不执行这一步,后面安装 scheme-full 的时候会出现 mtxrun 找不到的错误) export PATH=$PATH:/usr/local/texlive/2022/bin/x86_64-linux # 安装 scheme-full tlmgr install scheme-full # 将新安装的 bin 添加到 /usr/local/bin(此时才会将 mtxrun 添加到 /usr/local/bin) # 如果不执行这句,xelatex 无法使用 tlmgr path add
获取 TP-Link TL-AC100 v3.0 的 root 权限
近日在闲鱼买了一个 TL-AC100 无线控制器,来实现 AP 的无缝漫游。ACWiFi 的一篇帖子说 v3.0 和 v4.0 的硬件一模一样,所以我就想试试将 v4.0 的固件刷到 v3.0 里面。不过,固件升级的逻辑带有签名验证,直接刷会提示失败,因此想刷机就必须先获得 root 权限。本文记载我获取 root 设备权限的过程。
继续阅读“获取 TP-Link TL-AC100 v3.0 的 root 权限”SmartCross 工作日志 #3 – 音量问题
我希望 SmartCross 输出设备在开机时保持较小的音量,避免播放音频时突然声音很大。但我发现无论怎么在驱动里面调整初始音量,开机后音量总是在 -20dB。
我在调整音量的代码(master_vol_put)中插入了以下诊断语句:
printk("Current PID is %d %s\n", current->pid, current->comm); printk("Current parent PID is %d %s\n", current->real_parent->pid, current->real_parent->comm);
抓取发现是 alsactl (PID=219) 调整了音量,其父进程是 systemd (PID=1)。于是用 journalctl 查看 219 进程所属的服务:journalctl _PID=219
,发现其属于 alsa-restore.service
。只需要在 buildroot 菜单中去掉 alsactl 工具,这个服务就没有了。
SmartCross 工作日志 #2 – WiFi+BT 模块测试记录
SmartCross 需要稳定的蓝牙、WiFi 连接,在播放音频时才不会卡顿。为此,我尝试了一些市面上能买到的模块。下面是各个型号模块的实验记录。
继续阅读“SmartCross 工作日志 #2 – WiFi+BT 模块测试记录”SmartCross 工作日志 #0 – 项目概要
今天起在博客中新开一个“SmartCross 工作日志”分类,用来记录我在 Project SmartCross 项目工作中的思考、遇到的问题、调试过程和解决方法。SmartCross 是我已经断断续续折腾半年的项目,旨在创建一个开源的 Hi-Fi 数字音频分频器平台。我希望在 2022 年的上半年能够基本完成这个项目,达到“可售卖”的状态。
本文将大致介绍 SmartCross 项目的设计理念、架构、当前进展。
继续阅读“SmartCross 工作日志 #0 – 项目概要”SmartCross 工作日志 #1 – RNDIS Gadget
SmartCross 的设计目标是“易用”。当前的设想是,将 SmartCross 插到电脑上,电脑就会将其识别成一个网卡+声卡。同时,我们在网卡接口上启动一个 DHCP 服务器,这样电脑可以获得自动分配的 IP 地址,在浏览器中输入 IP 地址即可对设备进行配置。为此,我使用 Linux 内核提供的 f_rndis USB gadget 来连接到主机。在配置 RNDIS gadget 的过程中遇到了一些问题,记录如下。
继续阅读“SmartCross 工作日志 #1 – RNDIS Gadget”联通 VN007+ 5G CPE 拆解
近日去计算所实习,所里的网络实在糟糕,但 5G 信号很好,因此萌生了购买一个 5G CPE 用于上网的想法。查阅网上资料得知,VN007+ 这个型号的 CPE 不仅便宜,且性能尚可,因此从二手平台购买了一台。买都买了,当然要拆了。本文记载此机器的拆解过程,并含有机器内部结构高清大图。
继续阅读“联通 VN007+ 5G CPE 拆解”Linux 多用户环境下 Vivado 无法连接 Digilent JTAG 适配器的解决方法
最近在所里的项目需要多个人在同一台服务器上连接 FPGA 进行开发调试。在使用的过程中,观察到一个奇怪的现象:有时在 Vivado 的 Hardware Manager 中,点击 Auto Connect 过后,Hardware 窗格中只出现一个 localhost,而无法找到 JTAG 适配器。本文记述此问题的调试过程和解决方法。
继续阅读“Linux 多用户环境下 Vivado 无法连接 Digilent JTAG 适配器的解决方法”