更换X2安规电容,修复雀巢咖啡机异常闪灯故障

上一篇的方式疏通咖啡机管路试水后,满心以为咖啡机好了,没想到再开机还是有异常,机子的预热灯一直闪,闪烁的模式是双闪然后暂停,然后循环,而且最终也不会变成常亮状态。

在中文和英文网站上搜索了一阵子,没有发现。后来试着问了 Google Gemini AI,它告诉我可能是主板上的 X2 安规电容坏了。循着思路果然找到了 Youtube 上关于更换电容的视频

拆开机器,打开电路板盖,可以看到主板上有两个大号的安规电容(图中蓝色)。查看了型号分别是:680nF 275V 22mm脚距、220nF 275V 15mm脚距。在淘宝上照着规格一样买了 2 个,含运费 1.94 元。

上图分别是原电路的和新买的安规电容。到货后,拾起电烙铁,小心地更换上。

拧好螺丝,通电试机。开机后,闪灯的节奏恢复了说明书中的正常间隔。双按钮长按也可以正常进入和退出除垢模式。机器终于工作正常了。

雀巢Nespresso胶囊咖啡机不出水

家里用的 Nespresso Essenza C100 咖啡机放了几个月的时间,再开机就不出水了。

在网上查了一下,多半是管路里的水干了,特别是水泵里,没有工质,水泵也就抽不上水来(失压)。需要往泵里注点水,就能恢复工作。

不拆机的情况下,有人用注射器,也有人在水箱上部弄一个空气袋子,手压袋子把水压入管路。照着做了一下,两个方法都不管用,只好拆机了。

不过这玩意儿的螺丝是定制的,螺钉头是个椭圆形,手里还真没有趁手的工具。淘宝上找了一下,终于找到了。(搜索“咖啡机维修工具”,或者参考这个链接。)

拆开机器,把几个管路接头打开,用注册器推了点水,都是通的。唯独增压泵不通,有明显的阻力感。弄了个小注册器,从泵的接头上注了点水进去,终于“噗”的一声,把增压泵打通了。

接着把管路接好,预热完成后开机试水,果然管用!

致谢:为什么咖啡机指示灯亮但是不出水了? – 圏吉的回答 – 知乎
https://www.zhihu.com/question/427207679/answer/3213078152

音频U盾通信失败问题

2015年左右办了工行的网上银行,彼时流行的是二代盾,有一个 USB 接口用来和 PC 通信,另有一个 3.5mm 音频接口,用来与手机通信。(当然现在手机也不配 3.5mm 接口,U盾也升级到了蓝牙U盾)

最近需要更新 U盾证书,为了方便就在手机银行上操作,结果出现通信失败。上网查询,需要把音质音效设置里的“杜比全景声”功能关闭,果然好了。

杜比全景声是音频后处理技术,对音频信号进行了二次变换。而 U盾使用高频音频信号通讯,如果开启后处理技术(包括杜比、DTS、小米、华为等厂家的后处理技术),会导致音频信号失真,信号传到 U盾上再解调,就会出现通讯错误。

简单的SMTH-BBS刷版面积分小程序

水木社区自商业化以来,搞出了什么积分制度,一堆技术版面被无情的关闭,倒是灌水用的八卦闲聊版面得到了充分的发展。近日我常上的某技术版面积分也从10万多扣至2万多,按照每周约5000分的扣分力度,估计撑不过一个月。有感于此,决定写一个小程序,专门用来给指定版面刷分。

水木社区的《版面积分实施细则》规定,每周考核将根据版面的访问人次、访问时间、在线人数、文章数、文章质量等数据来考核。这里最容易刷的无疑是访问人次和访问时间。因此决定专门用一个账号反复进行“进版”、“出版”的操作,既能提升人次,也能增加访问时间。

这种小活用脚本语言来干最合适不过了,正好 Ruby 中有专门的 Telnet 库,台湾某哥们还写过一篇《用 Ruby 玩 PTT》值得参考。最后完成的脚本如下:

require 'net/telnet'
require 'logger'

USER = 'user' # user id
PASSWORD = 'password' # password
BOARD_NAME = 'board' # board name
LOG_FILE = 'newsmth.log'

enter_count = 0
stay_time = 0

logger = Logger.new(LOG_FILE)
logger.level = Logger::INFO
logger.info 'Logfile opened.'

# Connect to bbs.newsmth.net
# The prompt string could be '输入', '>', '(菱形方块)', ']'
smth = Net::Telnet::new('Host' => 'bbs.newsmth.net', 'Timeout' => 10,
                        'Telnetmode' => false,
                        'Prompt' => /(\xA1\xF4)|(\xBC\xCC\xD0\xF8)|:|\]|>/n)
smth.cmd(USER) {|c| print c }
smth.cmd(PASSWORD) {|c| print c }
# Ignore the info screens by pressing enter
smth.cmd("\n\n\n\n\n") {|c| print c }
logger.info 'Connected to newsmth.net'

loop do
  begin
    system 'cls' # Clear screen, use 'clear' in Linux/Unix
    # Exit to main menu, then select "F) Favorites"
    smth.cmd('qqqqqf') {|c| print c }
    logger.info 'Exit board'
    sleep 0.5
    system 'cls'
    # Enter specified board by "s" command in bbs
    smth.cmd("s#{BOARD_NAME}") {|c| print c }
    logger.info "Enter board #{BOARD_NAME}"
    enter_count += 1
    sleep 5
    stay_time += 5
  rescue Interrupt  # Ctrl-C signal
    # Exit to main menu, then select "G) Exit bbs"
    smth.cmd("qqqqqg\n\n") {|c| print c }
    logger.info 'Exit bbs'
    logger.info "Entrance count: #{enter_count}"
    logger.info "Total stay time: #{stay_time} seconds"
    logger.info 'Logfile closed'
    logger.close
    exit
  rescue IOError => e
    logger.error(e.message)
  rescue TimeoutError => e
    logger.error(e.message)
  end
end

目前脚本正在稳定运行中,实际效果有待一周后观察版面积分的变化。

Update@2015-05-01: 经过断断续续两周时间的试运行,发现程序对版面积分的贡献并不大,版面一周无水且访问人数低下时,扣分依然很严重。据此推测,进版人次在版面积分考核的权重中并不是很高,所以用程序来刷进版次数是不太管用的。

Update-2@2015-8-28: 水木现在已经不考核版面积分了,全看站务心情。此文已经木有价值罗。

利用 Dnsmasq 的 ipset 实现智能路由、科学上网

上一篇文章《在 EdgeRouter Lite 上实现科学上网》是用的比较传统的方式,即简单地添加目的路由。对于比较大规模的 ICP 例如 Google, Facebook,挖出他们的网段然后添加到路由表里是可行的(主要是他们有较好的网络基础设施建设,都申请了自己的 IP 地址段,并且用 BGP 互联广播到全网)。不过对于绝大多数被封的站点,想要一个一个地追踪他们的 IP 地址是多少并保持更新,这无疑是非常吃力的。好在昨天翻 Dnsmasq 的 Manpage 读到了 ipset 的功能选项,放狗一搜发现早有人提到这项功能了,不过都是在 Openwrt 上实现的。这回我决定在 EdgeRouter Lite 上也实现一次。

目前 ER-Lite 上最新的固件是 1.5.0 版本,基于 Debian Squeeze 6.0.9 ,很遗憾其中的 Dnsmasq 版本是 2.62,根据 Change Log,需要到 2.66 版本才能有 ipset 支持,这样只好自己编译了。好在编译起来不麻烦,把几个需要的 feature 在 src/config.h 里加上,然后在 Makefile 里把 CC CFLAGS LDFLAGS PKG_CONFIG_PATH 等几个变量设好,就可以直接编译了。(当然有些 feature 需要额外的依赖,需要事先编译好)我这里编译的 dnsmasq 2.71 版本,feature 尽量和原系统预装的 2.62 保持一致。

ubnt@ERL:~$ /usr/sbin/dnsmasq --version
Dnsmasq version 2.71 Copyright (c) 2000-2014 Simon Kelley
Compile time options: IPv6 GNU-getopt no-RTC DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth no-DNSSEC

This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.

直接替换原系统里的 2.62 版本,就可以无缝工作了。以 Google 为例,在配置中添加如下选项:

ubnt@ERL:~$ configure
[edit]
ubnt@ERL# set service dns forwarding options server=/google.com/8.8.8.8
[edit]
ubnt@ERL# set service dns forwarding options ipset=/google.com/CROSS_WALL

第一行是指定 google.com 下所有的域名都交给 8.8.8.8 这个 DNS Server 来解析,第二行是指定所有 google.com 域名下解析出来的 IP 都扔到名为 CROSS_WALL 的这个 ipset 里(当然 ipset 需要事先创建好)

到 8.8.8.8/32 的路由可以通过之前建立的 OpenVPN tunnel 出去,直接添加到路由表。这样防止解析出来的域名受到污染。随后在 firewall rule 里让所有 destination addr 符合 CROSS_WALL 这个 ipset 的包都走特定的 tunnel 出去,这样就实现了智能路由,科学上网了。trace route 如下:

C:\Users\Xiaoding>tracert -d www.google.com

Tracing route to www.google.com [173.194.127.210]
over a maximum of 30 hops:

  1     6 ms     1 ms     5 ms  192.168.111.1
  2   281 ms   285 ms   286 ms  10.8.0.1
  3   276 ms   282 ms   271 ms  96.44.154.33
  4   267 ms   271 ms   275 ms  72.11.150.105
  5   283 ms   279 ms   277 ms  96.44.180.97
  6   280 ms   280 ms   277 ms  206.72.210.41
  7   290 ms   283 ms   284 ms  64.233.174.41
  8   291 ms   308 ms   290 ms  64.233.174.190
  9   400 ms   408 ms   393 ms  64.233.174.177
 10   403 ms   402 ms   422 ms  209.85.243.249
 11   437 ms   406 ms   410 ms  66.249.94.30
 12   407 ms   411 ms   413 ms  209.85.240.133
 13   426 ms   442 ms   442 ms  173.194.127.210

Trace complete.