关于较老的 Intel 网卡无法搜索到 Wi-Fi 6 (ax) 网络的问题

最近将家庭网络的 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 工作日志 #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 适配器的解决方法”