Dec 16

Mac 关闭内置显示器 不指定

felix021 @ 2023-12-16 20:34 [IT » 硬件] 评论(0) , 引用(0) , 阅读(2038) | Via 本站原创
// 日常吐槽莎币苹果。

MacOS 有很多很蠢的地方,比如没有快捷键可以让窗口在屏幕间移动;比如不能右键直接创建空文件;比如右键菜单有「复制」和「拷贝」两个选项;比如会莫名其妙出现左右声道不平衡的 bug 并且长期未修复;

再比如,不能在外接显示屏的情况下关闭内屏。

当然也不是完全不能,网友也有一些解决方案:

1. 合上屏幕当主机用,自然就息屏了。不过我需要用 mac 的键盘、触摸板和 TouchID 解锁。过。

2. 随身携带磁铁,欺骗 macOS 屏幕已经关闭。这可能是种行为艺术,可惜我不是艺术家。过。

3. SwitchResX,试了下,确实可以把内屏关闭,只不过拔了外显内屏还是关着的,折腾了几下甚至 mac 都不能识别外显了,重启才解决。卸。

4. 在「系统设置 -> 显示」里,将背光拉到 0;不能直接用 Fn 调节屏幕亮度,因为会把外接屏亮度一起调低(莎币值+1);而且每次接上外显或 wakeup 时,都要重新设置。过……吧?

好在作为一名码农,可以想一些自动化的方式来把方案 4 利用起来。

首先是用 brew install brightness (update: M3 Macbook can not use this. try Lunar, details below),可以用 `brightness -d 1 0` 把 display 1 的亮度调到 0 (注意把主屏设置为外接屏,且把内屏设置为拷贝外屏,这样内屏的编号就是 1,外显是 0)。

其次是有一个叫 hammerspoon 的软件(https://www.hammerspoon.org/),可以在 unlock 的时候自动执行一个 lua 脚本。

把下面这个 lua 脚本存为 ~/.hammerspoon/init.lua

-- init.lua 
    local log = hs.logger.new("", "info")

    local function ok2str(ok)
        if ok then return "ok" else return "fail" end
    end

    hs.caffeinate.watcher.new(function(event)
        local eventName = hs.caffeinate.watcher[event]
        log.f("got caffeinate event:%s (id:%d)", eventName, event)
   
        local script

        if event == hs.caffeinate.watcher.screensDidLock then     
            script = "${HOME}/.lock"
        elseif event == hs.caffeinate.watcher.screensDidUnlock then
            script = "${HOME}/.unlock"
        else       
            log.f("ignored event:%s (id:%d)", eventName, event)
            return
        end
   
        local ok, st, n = os.execute(script)
        log.f("exec:%s -> %s, %s, %d", script, ok2str(ok), st, n)
    end
    ):start()



然后再 touch ~/.unlock && chmod +x ~/.unlock,内容为:

#!/bin/bash

export PATH=$PATH:/usr/local/bin/

brightness -d 1 0
sleep 5 && brightness -d 1 0


sleep 5 是因为从睡眠状态恢复时,识别外屏会比较慢,可按需调整 sleep 时长。


如果你看到这里,说明你也需要注意日常用电脑的姿势了,避免头颈前倾。

(完)。

update @ 2023-12-12

实际体验下来还有一些问题,例如去倒杯水,锁屏但没有睡眠,解锁后就不会息屏。

最好用的方案往往只需要最简单的工具:crontab。

引用

MAILTO=""

* * * * * /Users/bytedance/bin/TurnOffScreen.sh
* * * * * sleep 15 && /Users/bytedance/bin/TurnOffScreen.sh
* * * * * sleep 30 && /Users/bytedance/bin/TurnOffScreen.sh
* * * * * sleep 45 && /Users/bytedance/bin/TurnOffScreen.sh



update @ 2024-01-26

brightness seems to be not working on M3 Macbooks, so I switched to lunar:

1. Download and install lunar
2. Run in terminal: /Applications/Lunar.app/Contents/MacOS/Lunar install-cli
3. Update the TurnOffScreen.sh to be (remember to replace with your monitor model or serial id in the pattern):
#!/bin/bash

pattern='S2721QS'

if ~/.local/bin/lunar displays | grep $pattern; then
    ~/.local/bin/lunar displays "Built-in" brightness 0
fi
Mar 10

简单磁盘性能测试 不指定

felix021 @ 2018-3-10 20:39 [IT » 硬件] 评论(0) , 引用(0) , 阅读(9819) | Via 本站原创
引用
$ sudo apt-get install fio

# 如下命令会创建一个 512M 的文件,测试 64 线程的 4KB 随机读写,75%读,25%写。
# readwrite=randrw表示测试时混合随机读取和随机写入请求,rwmixread指定读请求的占比
$ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=512M --readwrite=randrw --rwmixread=75

test: (g=0): rw=randrw, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.2.10
Starting 1 process
test: Laying out IO file(s) (1 file(s) / 512MB)
Jobs: 1 (f=1): [m(1)] [100.0% done] [9268KB/3280KB/0KB /s] [2317/820/0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=13468: Sat Mar 10 19:48:40 2018
  read : io=392888KB, bw=9620.5KB/s, iops=2405, runt= 40839msec
  write: io=131400KB, bw=3217.6KB/s, iops=804, runt= 40839msec
  cpu          : usr=0.54%, sys=1.87%, ctx=32291, majf=0, minf=9
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
    submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
    complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
    issued    : total=r=98222/w=32850/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
    latency  : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
  READ: io=392888KB, aggrb=9620KB/s, minb=9620KB/s, maxb=9620KB/s, mint=40839msec, maxt=40839msec
  WRITE: io=131400KB, aggrb=3217KB/s, minb=3217KB/s, maxb=3217KB/s, mint=40839msec, maxt=40839msec

Disk stats (read/write):
  xvdb: ios=98056/32790, merge=0/6, ticks=923380/318272, in_queue=1241828, util=99.83%


这是一个 aws上 的 1000GB EBS 的测试报告,按照 3 IOPS/GB 计算应该能有 3000 的 IOPS,可以看到确实达到了 aws 宣称的性能水平。

参考文章:https://www.binarylane.com.au/support/solutions/articles/1000055889-how-to-benchmark-disk-i-o
Jul 5

WR1041N v2 安装openwrt 不指定

felix021 @ 2016-7-5 22:31 [IT » 硬件] 评论(0) , 引用(0) , 阅读(12498) | Via 本站原创
(懒得看细节的同学直接拉到末尾下载带有shadowsocks的镜像)


TP-Link很久没给我的路由器更新固件了,而且它运行一段时间以后就需要重启才能保证wifi正常,这对于家里有基于Wifi的智能设备来说是不能忍的,所以只能折腾了,上OpenWRT吧。

记得09年的时候折腾路由器,WL520GU,刷上了DD-WRT,然后再交叉编译弄了个锐捷的客户端,这样就可以把校园网分享出来用。心血来潮到珞珈山水去翻了一下,当年发的帖子竟然还在Linux版置顶……

回归正题,1041n的OpenWRT页面在这里: https://wiki.openwrt.org/toh/tp-link/tl-wr1041n

虽然可以从 这里 下载预编译好的镜像,但是不折腾一下感觉不带感,所以参考官方的教程,自定义镜像。

1. 下载 Image Generator

当年玩WL520gu的时候,好辛苦,先得用openwrt的buildroot脚本创建一个交叉编译环境,那个脚本特别不适合中国国情,用wget慢慢下载国外的源……等得我都快崩溃了,于是拉出它的下载连接直接用迅雷下好放进去再启动。现在可好,直接就有现成的环境直接下载,一分钟就搞定了。

具体参考这个页面:https://wiki.openwrt.org/doc/howto/obtain.firmware.generate

正好1041n是ar71xx架构的,照做就好了。

2. 生成image

可惜1041n只有4M的flash,否则我一定把php和python都打进去,这样还能跑起个shadowsocks server。

最后权衡了下,是这么生成的:

    make image PROFILE=TLWR1041 PACKAGES='luci luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn libev libpolarssl curl'

之所以把 libev 也打进去,主要是想之后可以用shadowsocks-libev,但是编译了一下发现可执行文件竟然 1M+,strip以后也还有两三百KB,还是算了。

如果不用curl的话,可以把libpolarssl和curl去掉,不过好像也没什么其他特别有用的了(或者是pptp?)。curl我是用来请求DnsPod的,这样可以及时把家里的IP刷到某个域名上去。

如果没什么错的话,生成的 image 就是这个了:

    bin/ar71xx/openwrt-15.05.1-ar71xx-generic-tl-wr1041n-v2-squashfs-factory.bin

3. 升级配置

tp不校验固件,所以直接通过路由器管理页面升级就行了。

升级了以后  telnet 192.168.1.1 登上去,用 passwd 修改root密码,然后就可以ssh登录,或者访问luci  http://192.168.1.1

image里面带了中文语言包,登录以后可以在 System -> Language 里面修改成简体中文。

配置PPPoE:打开  网络->接口,点击 WAN 接口的修改,看着配就好了。就那么点东西。

剩下的就是瞎折腾了

4. 创建用户

没什么卵用,弄着玩,这样就可以用另一个用户登录路由器,而且还是通过publickey authentication。

引用

echo 'felix021:*:103:100::/overlay/felix021:/bin/ash' >> /etc/passwd
echo 'felix021:*:16831:0:99999:7:::' >> /etc/shadow
mkdir -p /overlay/felix021/.ssh
cd /overlay/felix021/.ssh
echo $PUBKEY >> authorized_keys
chmod 600 authorized_keys
chown -R felix021:users /overlay/felix021/




==== UPDATE ====


还是花了一个晚上折腾了shadowsocks

1 安装SDK

参考:https://wiki.openwrt.org/doc/howto/obtain.firmware.sdk

下载SDK: https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/OpenWrt-SDK-15.05.1-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2

$ tar jxf Openwrt-SDK*

$ mv Openwrt-SDK* sdk

$ cd sdk

2 编译

$ git clone https://github.com/shadowsocks/openwrt-feeds.git package/feeds

$ git clone https://github.com/shadowsocks/shadowsocks-libev.git package/shadowsocks-libev
# 注@20180524,最新版本会出现编译错误,和libsodium貌似不兼容,建议用 v2.4.7

$ make menuconfig #选中 network 下的 shadowsocks-libev-polarssl

$ make package/shadowsocks-libev/compile V=99

编译好的文件位于:./build_dir/target-mips_34kc_uClibc-0.9.33.2/shadowsocks-libev-polarssl/shadowsocks-libev-2.4.7/ipkg-install/usr/bin/

3 腾出空间(回到Image Builder)

对于4M flash的image来说,openwrt给的空间实在太小了,所以只好打起现有package的主意。翻了一下,ipv6似乎占了比较大的空间,考虑到国内确实用不上ipv6,所以就拿它开刀吧。

参考前面 https://wiki.openwrt.org/doc/howto/obtain.firmware.generate 的 Remove useless files from firmware

修改 Makefile,添加 FILES_REMOVE 选项,并在 files_remove 文件中添加:
引用

/etc/modules.d/20-ipv6
/etc/modules.d/42-ip6tables
/etc/modules.d/nf-conntrack6
/etc/modules.d/nf-ipt6
/lib/modules/3.18.23/ip6table_filter.ko
/lib/modules/3.18.23/ip6table_mangle.ko
/lib/modules/3.18.23/ip6table_raw.ko
/lib/modules/3.18.23/ip6_tables.ko
/lib/modules/3.18.23/ip6t_REJECT.ko
/lib/modules/3.18.23/ipv6.ko
/lib/modules/3.18.23/nf_conntrack_ipv6.ko
/lib/modules/3.18.23/nf_defrag_ipv6.ko
/lib/modules/3.18.23/nf_log_ipv6.ko
/lib/modules/3.18.23/nf_reject_ipv6.ko
/usr/lib/libip6tc.so
/usr/lib/libip6tc.so.0
/usr/lib/libip6tc.so.0.1.0
/usr/lib/opkg/info/ip6tables.control
/usr/lib/opkg/info/ip6tables.list
/usr/lib/opkg/info/ip6tables.prerm
/usr/lib/opkg/info/kmod-ip6tables.control
/usr/lib/opkg/info/kmod-ip6tables.list
/usr/lib/opkg/info/kmod-ip6tables.postinst-pkg
/usr/lib/opkg/info/kmod-ip6tables.prerm
/usr/lib/opkg/info/kmod-ipv6.control
/usr/lib/opkg/info/kmod-ipv6.list
/usr/lib/opkg/info/kmod-ipv6.postinst-pkg
/usr/lib/opkg/info/kmod-ipv6.prerm
/usr/lib/opkg/info/kmod-nf-ipt6.control
/usr/lib/opkg/info/kmod-nf-ipt6.list
/usr/lib/opkg/info/kmod-nf-ipt6.postinst-pkg
/usr/lib/opkg/info/kmod-nf-ipt6.prerm
/usr/lib/opkg/info/libip6tc.control
/usr/lib/opkg/info/libip6tc.list
/usr/lib/opkg/info/libip6tc.prerm
/usr/lib/opkg/info/luci-proto-ipv6.control
/usr/lib/opkg/info/luci-proto-ipv6.list
/usr/lib/opkg/info/luci-proto-ipv6.prerm
/usr/sbin/ip6tables
/usr/sbin/ip6tables-restore
/usr/sbin/ip6tables-save
/lib/netifd/dhcpv6.script
/usr/lib/libiptext6.so


4 加入shadowsocks

$ mkdir -p files/etc/init.d files/usr/bin

$ cp /path/to/ss-server /path/to/ss-local files/usr/bin

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.json files/etc/ss-server

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.init files/etc/init.d/ss-server #修改配置文件路径为 /etc/ss-server,去掉 -b 0.0.0.0

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.json files/etc/ss-local

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.init files/etc/init.d/ss-local #修改配置文件路径为 /etc/ss-local

$ chmod +x files/etc/init.d/*

5 重新生成image

make image PROFILE=TLWR1041 PACKAGES='luci luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn libev libpolarssl curl libpthread -kmod-ip6tables -ip6tables -kmod-ipv6 -kmod-nf-ipt6 -luci-proto-ipv6 -libip6tc' FILES=files/ FILES_REMOVE="files_remove"

升级一下新的rom,然后就可以在路由器上启动shadowsocks的server/client了。

在路由器上启动server,配合surge,就变成一个简易VPN了,效果相当赞。


附1:带有shadowsocks的镜像下载地址为 http://pan.baidu.com/s/1bpl9jK7 密码: 7ugp (貌似不加密码很容易失效)

附2:编译好的shadowsocks
Dec 17

usbip小记 不指定

felix021 @ 2015-12-17 09:55 [IT » 硬件] 评论(2) , 引用(0) , 阅读(24784) | Via 本站原创
好早以前看到过这个项目,不过当时没有测试成功,昨天晚上看了一下,有点眉目了,先记录一点东西。

1. 项目主页:http://usbip.sourceforge.net/ ,但是这里实际上已经没有再维护了,内核模块已经merge到linux kernel(drivers/usb/usbip)。这里有提供经过ReactOS(这个神奇的项目)签名的windows驱动程序(windows下只有client,没有server),但是不知道四年过去了还能不能用……

2. ubuntu默认安装没有相关模块,需要安装 linux-image-extras ,然后 cd /lib/modules/[KERNEL_VER]/kernel/drivers/usb/usbip && sudo insmod *.ko

3. ubuntu源里的usbip包已经是很老的版本,无法利用新的内核模块,会提示“usbipd requires usbip_common_mod.ko and usbip.ko kernel modules”,实际上userspace tool也已经挪到kernel source里了,位于 linux-source/tools/usb/usbip,编译方法可参考该目录下的README文件,类似于:
引用
./autogen.sh
./configure --with-usbids-dir=/usr/share/misc/
sudo make install

但是我是直接下载的kernel source,没有安装在系统目录,所以在编译的时候会提示 libsrc/usbip_common.h 找不到 linux/usbip.h ,解决方法很简单,把那一行改为 #include "usbip.h" ,然后把 linux-source/include/uapi/linux/usbip.h 复制到 libsrc 目录,再编译就行了(对,就是这么粗暴简单)。

4. update@2015-12-25:在linux下测试成功。windows的driver废弃太久,已经不能支持新版代码的协议了。

p.s. 还有一个收费的商业项目 usb-over-ethernet ,有free trial版本,但是没尝试过。
p.s. 2. 还有一个开源的项目SPICE,有一个 usbredir 模块 http://www.spice-space.org/page/UsbRedir ,不过好像还不完善。
Jan 5
UPDATE@2014.02.19 升级到windows8.1以后似乎一切都正常了,买了个start8,慢慢习惯不习惯的地方吧……

最近给机器升级了CPU(i5 4570s)和主板(ASRock B85M-Pro4,C2步进),然后经常出现机器卡死的情况(一天一次的频率),有时候等上一两分钟还能活过来,有时候不行。事后查看windows事件查看器,没发现什么异常的地方。

升级之后的另一个蛋疼问题是,手头这块PLU ML-G3000青轴在打字的时候偶尔会出现几个随机按键(有次还“随机”到直接关机了)。频率也是一天1~2次的样子。前两天把键盘换成以前的Dell 8115以后暂时没有再出现,可能是键盘自己有点问题。

升级之前是AMD X3 450 + GigaByte 880GM-USB3,机箱内其他配件都没动(海盗船DDR3.1600[4G×2]、日立1TB、三星830.64G、TT XP420),升级之前系统相当正常,使用了2年几乎没遇到什么问题,用得挺爽的,平时中度使用,VBox虚拟机也常驻后台,机器是长期不关机,晚上都让它待机。

先怀疑是待机有问题(8系列主板C1步进的那个BUG也跟睡眠有关,但是我的主板是C2步进),这几天都没有用睡眠,但还是出现卡死的情况。

又怀疑硬盘出了问题,用HDTune的错误扫描把SSD和HDD都扫了一遍,全都是绿块很正常。

So,暂时不知道还可以做些什么,求建议。


== UPDATE@2014-01-05 23:59 ==
有人说可能跟Intel Rapid Storage Technology(就是Intel的SATA AHCI驱动)有关,在AS SSD Benchmark里面显示是iaStor,卸掉后变成了msahci(微软的驱动),但是刚刚还是假死了十几秒(然后恢复了)。

看到有人说到Windows 7 的这个BUG: “当你将磁盘设备使用的SATA模式更改为AHCI标准后,使用Windows 7和Server 2008 R2的计算机或某些应用程序会出现随机假死、60秒或更长时间没反应的情况。” 按照这个页面的说法,是M$的驱动有问题,我装了Intel的RST驱动应该正常了才对。搞不明白是咋回事啊……上面这个知识库里给的hotfix下载了提示“此更新不适用于您的计算机”……仔细看了下,这个页面提到的受影响的msahci.sys的文件日期是2009年的,我系统里的是2010的,可能已经修复了。

== UPDATE@2014-01-11 23:43 ==
升级到最新版的Intel RST驱动12.9.0.1001版以后,到目前为止没有再出现过假死的情况。

== UPDATE@2014-01-15 22:51 ==
又出现了一次,没死彻底,又恢复了。

@23:10 发现另外一个可能导致假死的BUG(win7/server 2008 r2,跟lsass有关的,但是同样提示“不适合我的计算机”,摔!
Dec 27

popobox折腾记 不指定

felix021 @ 2013-12-27 00:49 [IT » 硬件] 评论(0) , 引用(0) , 阅读(15050) | Via 本站原创
其实这货已经到手一个多月了,最初是在v2ex上看到这个帖子,发现它居然只要29块钱(其实是因为出了2代,1代亏本清仓),虽然CPU只是arm9 360MHz的,但是有256M内存、2GB Flash、原生Linux系统,这样一个嵌入式设备能做的事情也不少了,于是果断在京东下单。

11月12号到手,然后没几天各个地方就都卖断货了。外观上看起来做工还是可以的,大小像一般家用路由器一样,有2个USB口,其中一个是USB2.0,另一个官方说仅用于向该设备供电(这样就不需要电源适配器了),但是在扣扣群里看到帖子说是可以改造。可惜sandy那套螺丝刀工具套装找不到了,那个特殊的六角形螺丝拆不了,只能先折腾软件了。

popo里头内置了一套它们的云服务(用python写的,通过它的服务器中转,可以在公网上分享USB存储设备上的内容),并且默认启用了samba服务供内网访问,而且居然还启动了一个minidlna服务。不过这些东西都太耗内存了,怪不得这样一个设备需要256M的内存,直接被吃掉了一大半。全都停掉以后,内存占用只有17M,可用200多M,比外头的好多vps可是大多了(我现在就用着一个64M的openvz vps来翻墙)……预装的Linux里头有transmission,扣扣群里还流传着一个官方给2代提供的迅雷远程下载插件,在一代也可以用,不过其实没什么意思,自从买了迅雷会员以后,都是在迅雷离线下载好再直接下载到本地。。。

系统默认的ssh很奇怪,可能是精简得太厉害了,连scp都不支持,按照群里某教程换了个dropbear上去,然后参照Yongke同学的这篇Blog,给上面倒腾了一个chroot的debian,不过我没有蛋疼地搞一个loop的img,而是直接放在一个文件夹里,拷贝和解压的时候都省了好多时间,还免了挂载这一步。有了debian以后能做的事情就很多了,可是因为手头的mk802性能比它好得多,而且稳定运行了1年多时间(最长连续200+天,因意外被重启。。),所以好像也没什么需要它干的事情,所以就放着了。

第二天远程到公司,发现有个人在群共享里放了个kernel module,可以把boot所在的nand分区显示出来,这样就可以挂载了。然后我就2乎乎地用yaffs把那个分区挂载上去了……然后……实际上那个分区并不是那样的,但是yaffs可不管这个,挂载出了一个空分区,还自动创建了一个lost+found文件夹……当时我就快哭了。经过了多番折腾,把分区dd出来,然后再用别人dd出来的对比,修改,再mtd-utils工具包里的nandwrite写回去,最后终于……砖了。

于是很无耻地向京东申请换货,京东倒是很爽快,第二天就给换了一个。原样再倒腾一遍,然后就一直撂着了,直到上周,因为给电脑升级CPU(i5 4570s)买配件,顺便买了一套螺丝刀套装,19号到货以后,按照群里的图,把NR127和NR128两个口短接了(用的就是当时给机械键盘换轴的时候买的电烙铁套装),于是那个本来仅用于供电的USB口也可以被识别成一个USB1.1口了。

点击在新窗口中浏览此图片

然后想着干脆再折腾一下,于是在淘宝上下单买了个USB转TTL适配器,杜邦线,以及一堆导线什么的(最后没用上导线),23号收到以后当晚就开始折腾,搞得房间烟雾缭绕……其实松香的味道还是挺好闻的。倒腾了几次,在扣扣群里朋友的指导下,才搞清楚原来RX是要接TXD、TX是要接RXD。用putty连上对应的COM口,设置115200的Baud Rate,终于连上了它的console,以后瞎倒腾不愁变砖了。最后成品图如下,虽然焊点很难看,但是杜邦线从底部通风口引出去的设计不错吧XD,这样就可以在不给外壳动手术的情况下把外壳合上用TTL了。

点击在新窗口中浏览此图片

大概就是这样了,只是因为有mk802在先,好像这货还是不知道可以用来干啥。。。
Jul 3
先吐槽一下,顺便说下起因。

去年9月买的这个ML-G3000,青轴全无冲(回想起来有点2,青轴又不是拿来玩游戏的,买什么全无冲。。还贵了50块……),419入手的。它的键位基本上是标准的,但是R-Win变成了“禁用Win”功能键(直接在键盘电路逻辑里实现的,OS里检测不到keyCode的)、右键菜单(属性)键变成了功能键(配合Fx实现多媒体/音量控制什么的)。禁用Win对于游戏控来说是挺不错了,但是对于我这种几乎不怎么玩PC游戏的人来说就太废了点,而且还经常把这个当成Win键误按,例如我要Win+L锁屏,经常就变成了禁用Win,然后再换"左Win"+L,可是这时候Win已经被禁用了……各种抓狂。于是就用拔键器拔了一下,没想到键帽和轴结合太紧,直接把轴给拔坏了,里面弹簧蹦了出来。然后心里很不爽,就拿CapsLock开刀,果然又拔坏了……于是就成了这个样子:
Mar 23

mk802的wifi配置 不指定

felix021 @ 2013-3-23 16:21 [IT » 硬件] 评论(0) , 引用(0) , 阅读(16531) | Via 本站原创
本来这篇应该很早就写的,一直偷懒。今天简单记录一下吧。

其实很早就想买raspberry pi,但是代购的话比原价贵太多,不了了之。后来看到mk802,说是Arm Cortex A8 1GHz + 1GB Ram,性能远超树莓派,而且可以刷原生Linux(自带的是安卓),一冲动就买了。买回来才发现,mk802只有HDMI输出,用 hdmi 转 dvi 线连 dvi 显示器不行,所以刚买回来的时候蛋疼了两天。

首先是为内置的android配置wifi。幸亏默认是打开了USB调试的,连上PC,用类似腾讯手机管家这样的软件可以看到桌面截图,如果开启连续截图的话,就可以像幻灯片一样“远程桌面”。而mk802有一个标准usb host和一个mini usb otg,因此可以直接连接鼠标和键盘。主要问题是慢,相当慢。有耐心的话还是可以设置好的,甚至我把usb摄像头连上去,可以通过android qq跟电脑视频。

其次是刷Linux。这个才是重点——如果不是它可以刷原生Linux的话我就不会买了。从MiniAnd的这个帖子下载到了ubuntu的镜像包(直接dd写到tf卡),不过问题是Linux下面默认没办法看到桌面了(没有显示器,没有网络),所以只能通过不断修改配置文件的方式来尝试让它一启动就自动连接wifi。蛋疼了好久,不过还好最后问题解决了,而且解决办法也很简单,没兴趣看基本思路的同学可以直接跳到第3步。

基本思路是:

1. 挂载tf卡(拆下来在linux上挂载,或者也可以直接在mk802的android上挂载,通过adb shell连上去即可),修改 rc.local 或其他配置,让它在启动的时候自动执行一些命令,例如 ifconfig -a 和 iwconfig 、 iwscan 等。

2. 启动mk802,等待一段时间,让它把命令的输出并重定向到某个文件,然后关掉它,再次挂载tf,读取那些信息。由此可知它的网卡名字是 wlan0 ,并且可以搜到家里的wifi。

3. 挂载tf卡,修改 /etc/network/interfaces ,加入以下这一段配置(#号和它后面的就别加了),重启后它就自动连上wifi了:
引用
auto wlan0
iface wlan0 inet static
address 192.168.1.11
gateway 192.168.1.1
netmask 255.255.255.0
dns-nameservers 192.168.1.1
wpa-ssid OpenWrt_2E8B84 #这里是WIFI的SSID
wpa-psk password #这里是WIFI的密码
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
wpa-ap-scan 1
wpa-scan-ssid 1


后记:某次用一个5000mah的移动电源测试大约坚持了13个小时,推算功率大约是1.5w,后来它就一直开机,作为一个小vps用了。。。

后记@2014.10.12
引用
As root, create a file /etc/modprobe.d/8192cu.conf with the following contents:
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
This prevents the power down/up cycles of the 8192 wifi chip.

//from https://www.miniand.com/forums/forums/2/topics/82?page=9
分页: 1/6 第一页 1 2 3 4 5 6 下页 最后页 [ 显示模式: 摘要 | 列表 ]