Raspberry Pi 入手小记

最近看到Raspberry Pi很火爆,便跟风入了一个国行红色版。

卖家发的顺丰,从深圳到北京,前晚发货,第二天下午4点顺丰网站上显示还在北京集散点,所以我以为第三天上午才能到,也就没操心。下午6:05无意中发现5点多已经配送成功了,而传达室的大叔此时已经下班闪人了,结果还是第三天上午才拿到 🙁

闲话少扯,说说入手的折腾。

开整RPi

由于之前对这个小玩意了解了比较多,所以准备也比较充分,网线,HDMI,8G SD卡,还有一套雷柏的无线键鼠。选用无线键鼠套装是因为共用一个usb发射器,能省一个口是一个呗。

第一步,烧录/配置系统。

网上这个教程比较多了,官方的系统下载地址是: http://www.raspberrypi.org/downloads

目前系统一共分4个: Raspbian, soft-float Debian, Arch Linux和Risc OS.

Raspbian :基于Debian的官方版本,没啥特殊需求的直接用这个。

Soft-float Debian :和Raspbian一样,只是采用了软件模拟的浮点运算,如果需要使用某些无法使用硬件浮点预算器ARM-FPU的软件(如 Oracle-JVM),采用这个版本。

我使用的是Raspbian.

先找出SD卡在什么地方。

# sudo fdisk -l

在输出的结果中会出现类似如下的信息

Disk /dev/mmcblk0: 1977 MB, 1977614336 bytes
62 heads, 61 sectors/track, 1021 cylinders, total 3862528 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1             135     3862527     1931196+   6  FAT16

其中/dev/mmcblk0就是sd卡 /dev/mmcblk0p1是sd卡上的分区,需要注意分区可能有多个。

由于就要将系统的镜像烧录到这个sd卡上面,所以需要将SD卡上的所有分区卸载掉才行,这里我就忘记卸载了,结果RPi插入SD卡后引导不起来,只能重来了一次。卸载命令如下,如果有多个,需要全部卸载完。

# sudo umount /dev/mmcblk0p1

下载系统镜像压缩包

# wget http://downloads.raspberrypi.org/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip

解压

# unzip 2013-02-09-wheezy-raspbian.zip

烧录到SD卡

# dd if=2013-02-09-wheezy-raspbian.img of=/dev/mmcblk0

正常情况下,插入RPi,加电后应该就能启动了。

第一次启动成功后进入了raspi-config进行配置,首先将分区拓展到整个SD卡,而后选定键盘布局为105键美国布局,语言为en_US.UTF8,时区为Asia/Shanghai。显存为32M。重启后终于看到了可爱的树梅派桌面。当然设置错了或者中途想改也没问题,随时可以通过运行sudo raspi-config来重新设置。

————

我遇到的问题:

1,HDMI屏幕显示问题

第一次加电之后能看到SD卡的灯闪,但是屏幕没反应(HDMI转DVI接DELL U2312HM)。
在网上找了一下,说是将/boot/config.txt的HDMI_SAFE的注释删掉就好了,于是照做。发现显示器能亮了,但是只有640*480的 分辨率。再经过若干折腾,发现将HDMI_SAFE还是注掉,将hdmi_force_hotplug=1打开就可以完美1080p了。不过用hdmi接 电视的时候需要再关上。

———–

2.无线键盘响应不灵敏或者重复输入问题

进入系统后,发现键盘的问题非常严重,不是按了没反应就是一下子出来一排,查了官网的trouble shooting,说是因为供电不足,换了有源的usb hub后问题解决。

———–

3.无线网卡驱动问题(Problem Solving for wireless card TL-WN725N RTL8188EU driver in raspberry pi)

由于在网上看到一个哥们(这货的链接)说自己的RPi在用无线网卡(TP LINK TL-WN725N),我也入了一个同型号的,装上后发现没有那么顺利,我的芯片并非是文中所说的RTL8188CUS,而是RTL8188EU,而系统也已经更新到了3.6.11+,所以驱动需要自己编译。
当然,我已经编译完了,你可以直接下载 8188eu.ko(download),放入/lib/modules/3.6.11+/kernel/drivers/net/wireless/,直接跳到第6节挂载一下即可。

You can download the driver 8188eu.ko which I’ve got directly (download) and put it to the folder “/lib/modules/3.6.11+/kernel/drivers/net/wireless/”, jump to section 6–“Edit /etc/modules”. Or DIY with following the next steps.

喜欢自己折腾的,具体操作如下:

1) save the follow codes as downkernel.sh

cd /usr/src
wget -O rpi.tar.gz https://github.com/raspberrypi/linux/tarball/rpi-3.6.y
tar xzf ./rpi.tar.gz
KVER=`uname -r`
mv raspberrypi-linux-* linux-$KVER
cd linux-$KVER/
sed -i 's/EXTRAVERSION =.*/EXTRAVERSION = +/' Makefile
zcat /proc/config.gz > .config
wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
make oldconfig
make modules_prepare
ln -s /usr/src/linux-$KVER /usr/src/linux
ln -s /usr/src/linux-$KVER /lib/modules/$KVER/source
ln -s /usr/src/linux-$KVER /lib/modules/$KVER/build

2) run downkernel.sh

sudo sh downkernel.sh

3)Download RTL8188EU driver(https://github.com/Red54/linux-shumeipai2/tree/sunxi-3.0/drivers/net/wireless/rtl8188eu),or download from this blog(download),uncompress & enter the folder rtl8188eu。

tar xvf rtl8188eu.tar.gz
cd rtl8188eu

4)Modify file Makefile

Before :

...
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ANDROID_X86 = n
...

After:

...
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_BCM2708 = y
CONFIG_PLATFORM_ANDROID_X86 = n
...

and find :

...
ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
KVER  := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif

ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
CROSS_COMPILE := arm-eabi-
KSRC := $(shell pwd)/../../../Android/kernel
ARCH := arm
endif
...

change to:

...
ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
KVER  := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif

ifeq ($(CONFIG_PLATFORM_BCM2708), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE :=
KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless
INSTALL_PREFIX :=
MODULE_NAME := 8188eu
endif

ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
CROSS_COMPILE := arm-eabi-
KSRC := $(shell pwd)/../../../Android/kernel
ARCH := arm
endif
...

5)Compile codes and install 8188eu.ko

sudo make && make install

6)由于得到的rtl8188.ko并没有编译进内核,所以还需要挂载一下,
Edit file /etc/modules,append “8188eu” to the end,after that , the file will looks like this:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
8188eu

reboot and have fun 🙂

此过程参考了如下两篇文章:

http://www.tuicool.com/articles/jYreMf

http://blog.elevendroids.com/2012/12/building-tp-link-tl-wn725n-wifi-usb-adapter-driver-for-raspberry-pi/#more-107