Linux – 折腾(存档) https://blog.sorz.org 已停止更新和维护。该页面为2018年3月创建的存档,其内容可能已过于陈旧、与现状不符,仅作为历史存档用作参考。 Sun, 14 Jan 2018 11:08:20 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.9.4 Cubieboard 更新至主线内核 /p/cubieboard-on-mainline-kernel/ /p/cubieboard-on-mainline-kernel/#comments Sun, 28 Jun 2015 14:02:06 +0000 /?p=348052 Allwinner 此前一直在使用它自己 fork 的 kernelU-Boot
现在,他们正在努力将这些代码并入主线。

我在用的 Arch Linux,众所周知,是一个比较激进的发新版本。它已经开始送主线内核linux-armv7啦。

毫无悬念地,更新后就无法启动了。原因似乎是它没有更新 U-Boot。
参照这篇 Mainline U-Boot 编译最新的主线版 U-Boot 然后写入 SD 卡就好了。

需要注意的是,boot.cmd内容需要根据 Arch Linux 的安排有所更改:

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10
load mmc 0:1 0x43000000 dtbs/${fdtfile}
load mmc 0:1 0x42000000 zImage
bootz 0x42000000 - 0x43000000

(不同之处也就是使用bootz来载入zImagefdtfile位于dtbs/下)

另外注意似乎还有一些驱动不太完善,比如无法使用 NAND,具体请参考 Linux mainlining effort

]]>
/p/cubieboard-on-mainline-kernel/feed/ 2
Watchdog Timer on Cubieboard /p/cubieboard-watchdog/ /p/cubieboard-watchdog/#comments Sat, 04 Jan 2014 16:56:49 +0000 https://sorz.org/?p=347795 准备将 Cubieboard 留在家里,放在路由器边长期开着收收短信什么的。
有了 Watchdog Timer(看门狗计时器)一旦 Cubieboard 死机,系统将自动重启。重启由硬件实现,确保可靠性。

内核支持

需在编译 Linux 内核时开启 Watchdog Timer 支持、编译 sunxi watchdog 驱动

选项位于Device Drivers >> Watchdog Timer Support,勾选WatchDog Timer Driver CoreAllwinner A10/A13 Watchdog。可以考虑勾选Disable watchdog shutdown on close,选择后若 watchdog 进程意外结束也将触发重启,否则 watchdog 将随 watchdog 进程的关闭而关闭。[1]

CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_WATCHDOG_NOWAYOUT=y
CONFIG_SUNXI_WDT=m

若驱动编译为内核模块,需要手动加载:

sudo modprobe sunxi_wdt

可在/etc/modules加入一行,系统启动时将自动加载:

sunxi_wdt

加载成功后可以看见/dev/watchdog。任意程序打开该文件将启动 watchdog,打开后必须定期“戳一下” (poking) 它,即往里写数据。[1]

安装用户空间程序

戳狗程序当然有现成的:

sudo apt-get install watchdog
sudo service watchdog start

可以留意下配置/etc/watchdog.conf,有检测负载、内存、网络和自定义检测命令等可选功能。

U-Boot 支持

上述方案中,watchdog 只会在系统正常启动,且正常加载 sunxi_wdt,且 watchdog daemon 正常运行后才会生效。若开启 U-Boot 内置的 watchdog 支持,可在系统引导失败时重启系统

这是可选项,我还没试过,只是看文档中有写。(嘛毕竟有山寨货了(见下文((

首先编译 u-boot-sunxi 时需启用CONFIG_WATCHDOG
其次修改boot.scr,在bootm这行之上加入watchdog 16。该文件在引导分区,若无需自行建立。
我还没试过,就不乱说了,请参考 u-boot-sunxi/wiki#bootscr-support 配置。

需要注意的是,A10 只支持最长 16 秒的间隔时间[2]。也就是说,从加载内核、挂载分区、一直到启动 watchdog daemon 必须在 16 秒内完成,否则将触发重启。

在此之前…

由于不知道 SoC 内置了 watchdog,我翻了些零件自己山寨了一个

山寨 Watchdog (左) 和 Cubieboard (右)

山寨 Watchdog (左) 和 Cubieboard (右)

洞洞板是以前焊的,其上是一块 ATmega16U,都闲置好久了;
左边方块是一个继电器和三极管二极管电阻之类的,通过 USB 口连接着 Cubieboard 的电源;
中间蓝线连着单片机与一 GPIO 口,用一个脚本周期性输出 0,1 来戳狗。

单片机检测到超时没戳时,给继电器通电几秒,就成了..

(说来 ATmega 也内置一个 Watchdog Timer…

[1] The Linux Watchdog driver API;
[2] Allwinner A10 User Manual v1.20 (PDF), P99 10.3.25. Watch-Dog Mode Register.

]]>
/p/cubieboard-watchdog/feed/ 4
WR703n OpenWrt 按网络流量闪烁LED /p/flashled/ /p/flashled/#comments Sun, 22 Jul 2012 17:07:28 +0000 http://xierch.tk/?p=347365 #UPDAT130215: 感谢 @dword1511 提醒,闪灯是自带功能直接设置即可:

echo phy0tx > /sys/class/leds/tp-link\:blue\:system/trigger

另外,除了 phy0tx,trigger 还有几个可选值:
[none] default-on timer phy0rx phy0tx phy0assoc phy0radio phy0tpt netdev usbdev

当然本文脚本还是有一定价值的:比如可以一眼区分出 100KiB/s 与 1MiB/s
———-

前几天TB上搞了一个火柴盒形的路由器,TP-Link WR703n
单RJ45口,USB2.0,改外置天线改 64M 内存,改 8M Flash,刷了 OpenWrt 便于折腾。

盒子上只有一颗蓝色 LED,开机后常亮,写了个脚本让它随网络流量闪烁:
以 1Hz 频率闪烁,根据流量调节占空比。无流量时常灭,满带宽时常亮。

下载脚本前,需要安装几个东西:

opkg update
opkg install lmbench-msleep bc

lmbench-msleep用来做毫秒级延时,bc用来计算小数。不是很大,各种依赖加起来几百K吧好像..)

脚本如下,修改好设置保存任意地方,加入rc.local开机自启动就好~

#!/bin/sh
#set -x
export PATH="/bin:/sbin:/usr/sbin:/usr/bin"

IFNAME="eth0"
FULLSPEED=1200  # KiB/s
LED='/sys/class/leds/tp-link:blue:system/brightness'

while [ True ]
do

# Get traffic data:
str=$(ifconfig $IFNAME | grep 'RX bytes')
str=${str#*'RX bytes:'}
str=${str%' ('*}
str=${str%' ('*}
now=$((str/1024))

speed=$((now-last))
if [ "$speed" -gt "$FULLSPEED" ] ; then
        speed="$FULLSPEED"
fi
last="$now"

# Flash LED:
ratio=`echo "scale=3;$speed/$FULLSPEED*1000"|bc`
ontime=${ratio%'.'*}
offtime=$((1000-ontime))
#echo "$ontime"

if [ "$ontime" -gt "0" ] ; then
        echo 255 > "$LED"
        msleep "$ontime"
fi

if [ "$offtime" -gt "0" ] ; then
        echo 0 > "$LED"
        msleep "$offtime"
fi

#sleep 10
done

开头有两处可能要修改的地方:
IFNAME 为接口(interface)名称,ifconfig 里显示的那个,eth0、wlan0、pppoe-xxx 什么的都可以
FULLSPEED 为网络带宽,单位KiB/s,想调低常亮阈值就改小些…
如果不是 WR730n,可能还需要修改 LED

第一次写(超过10行的)bash 脚本,感觉好奇葩啊..各种蛋疼..
估计有的地方有绕圈子了?至少能运行了..要不是8M小路由器舍不得装 Python 我才不用 bash 嘞…

似乎还是狂闪的那种比较好看?但是好麻烦的样子…

]]>
/p/flashled/feed/ 2
升级华为EC1261无线上网卡固件 /p/updateec1261/ /p/updateec1261/#respond Sun, 26 Dec 2010 00:23:00 +0000 /updateEC1261.html 注意,本文前半部分为对“天翼宽带客户端”的吐槽,
欲看升级上网卡固件内容,请拖至文章后半部分!

这EC1261是华为为电信做的,去年早些时候办理天翼无线上网卡时给的。

前段时间客户端来了个大“升级”:
天翼无线宽带客户端升级

不仅界面变得灰不溜秋的,不如以前半透明蓝色渐变漂亮。
还加入了电信的各种乱七八糟的服务:天翼空间、爱音乐、天翼社区……
虽然加入了免费300条短信..可是用上网卡在电脑上发短信..不蛋疼么…
通讯录功能也是..鸡肋..
天翼宽带乱七八糟的服务 新版天翼宽带客户端

无用功能多也没啥,不管它就是了。可有用的功能却一直在减少…
右键托盘图标,没了“连接”和“断开”,每次都需要打开主界面才能操作…
时长查询也没了…

还不断弹广告..每次连接都要从右下角滑出一个相同信息..一个星期了,一个字也没变过,你是想洗脑啊……
而且这窗口滑出的特别慢,需要好几秒中。由于一直在滑动,关闭按钮也特别难点。
你不理它嘛,主界面就无法继续操作了!最小化都不能,必须关了这广告才能继续操作!

另外载入界面也变丑了,各种 Bug……

这让人怀疑,后面这个版本是换了一伙人做的吧。莫非之前是华为写的,后面是电信临时工写的?个人YY而已……


在华为官网的这个页面可下载《Huawei EC1261 统一认证升级包
这个程序将升级无线上网卡的固件、内置的驱动安装程序和客户端安装程序。

下载后,卸载客户端,但需保留原上网卡的驱动程序。

然后运行压缩包中的升级程序,下一步下一步,有点慢,等待几十分钟即可。
(期间上网卡的刺眼蓝色LED时不时会闪绿色,感觉比蓝色好看)

升级后,之前每次插入都需要重新安装一遍驱动(或运行安装包中提取出来的 FindDevice.exe)才可使用的 Bug 被修复了!
客户端被升级为较新版本,当然,不是上文所说那个恶心版本
天翼无线宽带客户端

另外,升级后还有个小惊喜,支持了 Linux(客户端和驱动):
无线上网卡内置安装程序

另外 Linux 文件夹下还附带有安装说明。遗憾的是现在是借用同学的上网本,暂时无法测试。可能的话以后补上。

UPDATE: Ubuntu 10.10 下,插入上网卡即可直接使用…什么也不用装..

]]>
/p/updateec1261/feed/ 0