[[http://tmade.de|Home tmade.de]] [[http://wiki.tmade.de|Home Wiki]] ===== RaspBerry Pi ===== ====Version==== To get the hardware-version ("Model"): cat /proc/cpuinfo cat /proc/cpuinfo | grep Model ==== Config ==== Run on raspian the following command to start a gui-based configuration tool: raspi-config System time and language: dpkg-reconfigure tzdata #timezone set dpkg-reconfigure locales #system language dpkg-reconfigure keyboard-configuration #Change keyboard Keyboard language (/etc/default/keyboard): # KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="de" XKBVARIANT="" XKBOPTIONS="" BACKSPACE="guess" **Note:** Reboot required to take effect! ==== alias ==== alias ls='ls --color=auto' alias ll='ls -alh' alias ..='cd ..' alias ...='cd ../..' alias ss='sudo su -' ==== Temperature ==== vcgencmd measure_temp #show cpu temperature ==== Partitioning ==== Create aditional custom partition: fdisk -u -c /dev/mmcblk0 Aferwards format new partitions: mkfs.ext4 -Ltmp /dev/mmcblk0p3 mkfs.ext4 -Ldata /dev/mmcblk0p4 ==== Resize "/" ==== Reisize "/" (on /dev/mmcblk0p2) to 8GB: Old size: root@raspberry-test:~# df -h Filesystem Size Used Avail Use% Mounted on rootfs 2.9G 2.3G 433M 85% / /dev/root 2.9G 2.3G 433M 85% / devtmpfs 215M 0 215M 0% /dev tmpfs 44M 224K 44M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 88M 0 88M 0% /run/shm /dev/mmcblk0p1 56M 9.7M 47M 18% /boot Prepare to enlarge: root@raspberry-test:~# fdisk -u -c /dev/mmcblk0 Command (m for help): p Disk /dev/mmcblk0: 32.1 GB, 32127320064 bytes 4 heads, 16 sectors/track, 980448 cylinders, total 62748672 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: 0x00090806 Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) /dev/mmcblk0p2 122880 6399999 3138560 83 Linux Command (m for help): d Partition number (1-4): 2 Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): Using default value 2 First sector (2048-62748671, default 2048): 122880 Last sector, +sectors or +size{K,M,G} (122880-62748671, default 62748671): +8G Command (m for help): p Disk /dev/mmcblk0: 32.1 GB, 32127320064 bytes 4 heads, 16 sectors/track, 980448 cylinders, total 62748672 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: 0x00090806 Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) /dev/mmcblk0p2 122880 16900095 8388608 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. Reboot System: root@raspberry-test:~# init 6 Check filesystem and partitions: root@raspberry-test:~# cat /proc/partitions major minor #blocks name 179 0 31374336 mmcblk0 179 1 57344 mmcblk0p1 179 2 8388608 mmcblk0p2 root@raspberry-test:~# df -h Filesystem Size Used Avail Use% Mounted on rootfs 2.9G 2.3G 433M 85% / /dev/root 2.9G 2.3G 433M 85% / devtmpfs 215M 0 215M 0% /dev tmpfs 44M 224K 44M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 88M 0 88M 0% /run/shm /dev/mmcblk0p1 56M 9.7M 47M 18% /boot Enlarge root-fs: root@raspberry-test:~# resize2fs /dev/mmcblk0p mmcblk0p1 mmcblk0p2 root@raspberry-test:~# resize2fs /dev/mmcblk0p2 resize2fs 1.42.5 (29-Jul-2012) Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mmcblk0p2 is now 2097152 blocks long. root@raspberry-test:~# df -h Filesystem Size Used Avail Use% Mounted on rootfs 7.9G 2.3G 5.2G 31% / /dev/root 7.9G 2.3G 5.2G 31% / devtmpfs 215M 0 215M 0% /dev tmpfs 44M 224K 44M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 88M 0 88M 0% /run/shm /dev/mmcblk0p1 56M 9.7M 47M 18% /boot Now you are able to add partitions to the disk or other device with "fdisk" and "mkfs.(ext4)": fdisk -u -c /dev/mmcblk0 Aferwards format new partitions: mkfs.ext4 -Ltmp /dev/mmcblk0p3 mkfs.ext4 -Ldata /dev/mmcblk0p4 ==== Overclocking ==== Check maximum CPU frequence (e.g. when your CPU is under load): sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq Check minimum CPU frequence (when your CPU is idle): sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq Check current CPU frequence: sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq ==== Time ==== Sync time via ntpdate: Uninstall ntp (ressources!). apt-get purge ntp Install ntpdate apt-get install ntpdate #timeserver Create a file vi /etc/cron.d/general and add content (or similar): */20 * * * * root /usr/sbin/ntpdate -s 0.de.pool.ntp.org The cronjob now syncs the system-time. ==== Routing ==== Routing wlan0 (inside) and eth1 (inside) to eth0 (outside): Change "/etc/sysctl.conf" #net.ipv4.ip_forward=1 to net.ipv4.ip_forward=1 and save it. To update the setting: sysctl -p /etc/sysctl.conf The following command will check forwarding: sysctl net.ipv4.ip_forward Temporary for testing isues and not permanent: echo "1" > /proc/sys/net/ipv4/ip_forward Switch of forwarding: echo "0" > /proc/sys/net/ipv4/ip_forward **Much better way concering security** Don´t set "net.ipv4.ip_forward=1" inside "/etc/sysctl.conf" and load it instead a (init)script with command: echo "1" > /proc/sys/net/ipv4/ip_forward **Hint: Check "restore-iptables" and "iptables initscript" below. Make sure to load iptables first!** Iptables: sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT Block icmp (ping) on eth0: iptables -A INPUT -i eth0 -p ICMP --icmp-type 8 -j DROP NAT: sudo iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -o wlan0 -j SNAT --to-source 192.168.1.2 sudo iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -o eth1 -j SNAT --to-source 192.168.1.2 Check also: http://www.thegeekstuff.com/scripts/iptables-rules iptables-save: iptables-save > /etc/iptables iptables-restore: Create a executable file (e.g. 700) such as "/etc/network/if-pre-up.d/iptables" with following content: #!/bin/sh iptables-restore < /etc/iptables echo "1" > /proc/sys/net/ipv4/ip_forward ==iptables initscript== #! /bin/bash ### BEGIN INIT INFO # Provides: iptables # Required-Start: mountkernfs $local_fs # Required-Stop: mountkernfs $local_fs # X-Start-Before: networking # X-Stop-After: networking # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Iptables # Description: Init script for iptables ### END INIT INFO . /lib/lsb/init-functions CONFIG_FILE=/etc/iptables #CONFIG_FILE=/etc/iptables.conf function do_start { if [ -e "${CONFIG_FILE}" ]; then log_daemon_msg "Starting iptables service" "iptables" /sbin/iptables-restore < ${CONFIG_FILE} echo "1" > /proc/sys/net/ipv4/ip_forward log_end_msg $? else log_action_msg "No rules saved for iptables" fi } function do_stop { log_daemon_msg "Stopping iptables service" "iptables" echo "0" > /proc/sys/net/ipv4/ip_forward /sbin/iptables -F /sbin/iptables -X /sbin/iptables -t nat -F /sbin/iptables -t nat -X /sbin/iptables -t mangle -F /sbin/iptables -t mangle -X /sbin/iptables -P INPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -P OUTPUT ACCEPT log_end_msg $? } function do_save { log_daemon_msg "Saving iptables rules" "iptables" /sbin/iptables-save > ${CONFIG_FILE} log_end_msg $? } function do_status { log_daemon_msg "Running iptables rules" "iptables" /sbin/iptables -L log_end_msg $? } case "$1" in start) do_start ;; stop) do_stop ;; status) do_status ;; save) do_save ;; restart) do_stop do_start ;; *) echo "Usage: /etc/init.d/iptables {start|stop|status|restart|save}" exit 1 ;; esac exit 0 ==== LTE Modem === Sakis/ Keepalive: http://www.sakis3g.com/7 umtskeeper: http://mintakaconciencia.net/squares/umtskeeper/ === modemmanager, networkmanager (mmcli, nmcli) === Great Tutorial: https://boundarydevices.com/cellular-modems-on-i-mx6-boards/ Related: https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/debugging-3g/modem-debugging-with-mmcli http://www.freedesktop.org/wiki/Software/ModemManager/Debugging/ apt-get install modemmanager network-manager uuid apt-get remove modemmanager network-manager uuid mmcli -L #lists devices sudo mmcli -m 0 #show information about the specific modem mmcli -m 0 --simple-connect="user=eplus,apn=internet.eplus.de" #connect http://blog.unixweb.de/usb-stick-lte-telekom-magenta-eins-huawei-e398-modem-raspberry-pi/ https://www.thefanclub.co.za/how-to/how-setup-usb-3g-modem-raspberry-pi-using-usbmodeswitch-and-wvdial Config wvdial: http://nvdcstuff.blogspot.de/2015/04/huawei-e3372-in-linux-raspberry-pi.html Test: Die Ursache für den Absturz des /dev/ttyUSB* Devices war die zu geringe Stromleistung von 600mA an dem USB-Port. Für die Einwahl wird richtig Saft aus dem USB-Port gezogen. Umgehen kann man das Problem, wenn man in der Datei “/boot/config.txt” einen zusätzlichen Parameter einträgt. Achtung geht nur bei Raspberry PI Modell B+ und PI2 ! max_usb_current=1 This commands adds a loadable kernel module to recognize your device. Straight after you run it, your system should automatically detect your device and you can proceed with configuring your internet dongle: modprobe usbserial vendor=0x0b3c product=0xc005 This commands adds a loadable kernel module to recognize your device. Straight after you run it, your system should automatically detect your device and you can proceed with configuring your internet dongle. ==== Links ==== http://jankarres.de/2012/08/raspberry-pi-raspbian-installieren/ http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=46255 http://www.karesyk.de/webcam-server-einrichten/ http://elinux.org/R-Pi_Troubleshooting#Troubleshooting_power_problems http://elinux.org/R-Pi_Troubleshooting http://www.forum-raspberrypi.de/Thread-tutorial-bewegungserkennung-mit-dem-raspberry-camera-modul-und-motion https://elinux.org/RPi_Hardware#How_can_I_tell_if_the_power_supply_is_inadequate.3F #ifplugd: http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=28335 #ifplugd problem wlan0: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-3b/ #Convert HiLink to Modem-Mode/ Firmwareupdate: http://blog.asiantuntijakaveri.fi/2015/07/convert-huawei-e3372h-153-from.html #nmcli: http://elviskapllaj.jimdo.com/tutorials/raspberry-pi/raspberry-pi-3g-and-wi-fi-based-on-nmcli/ #libqmi https://guytp.wordpress.com/2015/05/01/using-raspberry-pi-as-a-carputer-and-wifi-4g-hotspot/ ==== Swap ==== sudo su - echo "CONF_SWAPSIZE=1024" > /etc/dphys-swapfile dphys-swapfile setup dphys-swapfile swapon ==== Network ==== Static configuration example. "wlan0" is primary NIC (also loaded without link on eth0): auto lo iface lo inet loopback auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.1.77 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 #gateway 192.168.1.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.1.1 #wpa-ap-scan 1 #wpa-scan-ssid 1 wpa-ssid "ssid_name" wpa-psk "password" auto eth0 iface eth0 inet static #iface eth0 inet dhcp address 192.168.1.66 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.1.1 #dns-search my-domain.local ==== Adapter Priority ==== The priority of networkadapters can be setup/ changed in /etc/udev/rules.d/70-persistent-net.rules This file isn´t created on default. To create the file edit: /lib/udev/rules.d/75-persistent-net-generator.rules Change # device name whitelist KERNEL!="ath*|msh*|ra*|sta*|ctc*|lcs*|hsi*", \ GOTO="persistent_net_generator_end" to # device name whitelist KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", \ GOTO="persistent_net_generator_end" The file /etc/udev/rules.d/70-persistent-net.rules has been created after a reboot. ==== WLAN ==== ===Scan wlan=== iwlist wlan0 scan Get wlan-configuration info: iwconfig Generate WLAN-Key (to avoid plain-text password): test@raspberrypi ~ $ wpa_passphrase MY_SSID MY_WPA_KEY network={ ssid="MY_SSID" #psk="MY_WPA_KEY" psk=aebd5aac8952e0ed73f797b9bfe074bcc008e045a5a7028a6dec342f9c } Afterwards you have to replace "wpa-psk" within "/etc/network/interfaces": wpa-psk "aebd5aac8952e0ed73f797b9bfe074bcc008e045a5a7028a6dec342f9c" Config-file: /etc/network/interfaces Config (DHCP): auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ap-scan 1 wpa-scan-ssid 1 wpa-ssid "YOUR-SSID" wpa-psk "YOUR-PASSWORD" Config (static): auto lo iface lo inet loopback auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.1.X netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.1 wireless-power off broadcast 192.168.1.255 dns-nameservers 192.168.1.1 dns-search HOME #auto wlan0 #allow-hotplug wlan0 #iface wlan0 inet dhcp wpa-ap-scan 1 wpa-scan-ssid 1 wpa-ssid "YOUR-SSID" wpa-psk "YOUR-PASSWORD" === Power saving === Add wireless-power off to /etc/network/interfaces and reboot your system. Check wlan adapter and driver with: /sbin/iwconfig and cat /sys/module/8192cu/parameters/rtw_power_mgnt **Fix problems** with power saving for 8192cu wireless chip (e. g. TP-Link TL-WN823N WLAN USB-Adapter Mini , 300Mbit/s, WPS, which is quite fast and recomandable for raspberry pi): dmesg | grep "usbcore: registered new interface driver*" Output (or similar): usbcore: registered new interface driver rtl8192cu Create a file (containing "8192cu") such as: /etc/modprobe.d/8192cu.conf with following content # Disable power saving and USB autosuspend options 8192cu rtw_power_mgnt=0 rtw_enusbss=0 Reboot your system and check settings: /sbin/iwconfig Power Management:off ====Disable wlan0==== Edit /boot/config.txt or /boot/firmware/config.txt #on newer raspis such as raspi 4 and add: [all] # turn wifi and bluetooth off dtoverlay=pi3-disable-wifi dtoverlay=pi3-disable-bt or [all] # turn wifi and bluetooth off dtoverlay=disable-wifi dtoverlay=disable-bt on Rapberry Pi 4. ==== (W)LAN Adapter check ==== Cronjob examples: */2 * * * * root /scripts/check_wlan0.sh >/dev/null 2>&1 */20 * * * * root /scripts/ping_gw.sh >/dev/null 2>&1 Script to check adapter status ("/scripts/check_wlan0.sh"): [[shell:scripts#w_lan_check]] ==== Autostart Services ==== Add a script like the following to "/etc/init.d/script.sh" #! /bin/sh ### BEGIN INIT INFO # Provides: mjpg_streamer # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Should-Start: # Should-Stop: # Short-Description: start mjpg_streamer ### END INIT INFO # /etc/init.d/mjpg_streamer # # Carry out specific functions when asked to by the system case "$1" in start) export LD_LIBRARY_PATH="/usr/local/lib" #### option "-b" = background/ deamon mode#### /usr/local/bin/mjpg_streamer -b -i "input_raspicam.so -fps 25 -ex night -x 640 -y 480" -o "output_http.so -p 8082 -w /srv/www -c user:password" >> /var/log/mjpg_streamer.log 2>&1 echo "Starting mjpg_streamer" ;; stop) pkill mjpg_streamer echo "mjpg_streamer has been stopped (didn't double check though)" ;; restart) #PID=`ps -ef |grep mjpg_streamer | cut -d " " -f6 | sed -n "1"p` #kill $PID kill -9 `pidof mjpg_streamer` echo "mjpg_streamer has been stopped" sleep 2 echo "Starting mjpg_streamer" export LD_LIBRARY_PATH="/usr/local/lib" /usr/local/bin/mjpg_streamer -b -i "input_raspicam.so -fps 25 -ex night -x 640 -y 480" -o "output_http.so -p 8082 -w /srv/www -c user:password" >> /var/log/mjpg_streamer.log 2>&1 ;; *) echo "Usage: /etc/init.d/mjpg_streamer {start|stop|restart}" exit 1 ;; esac exit 0 To add the service "script.sh" to system autostart: sudo update-rc.d script.sh defaults To remove the service/script.sh from autostart: update-rc.d -f script.sh remove ==== Update ==== sudo apt-get update sudo apt-get upgrade -y sudo apt-get install git-core -y sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update sudo chmod +x /usr/bin/rpi-update sudo rpi-update sudo raspi-config ==== DHCP ==== === Dnsmasq === https://wiki.ubuntuusers.de/Dnsmasq/ sudo dnsmasq --test #check config Leases are stored in: /var/lib/misc/dnsmasq.leases Test config: /usr/sbin/dnsmasq --test Config: /etc/dnsmasq.conf Konfigure dnsmasq to use another DNS-Server: localise-queries server=/test.local/10.20.1.94 server=/test.local/10.20.1.98 Reverse-DNS: # Example of routing PTR queries to nameservers: this will send all # address->name queries for 192.168.3/24 to nameserver 10.1.2.3 #server=/3.168.192.in-addr.arpa/10.1.2.3 server=/0.168.192.in-addr.arpa/10.1.2.3 Request from e. g. "192.168.0.x" will be forwarded to Nameserver 10.1.2.3. Check it with nslookup IP Logrotate: Add log-facility=/var/log/dnsmasq.log to /etc/dnsmasq.conf Add /etc/logrotate.d/dnsmasq with content /var/log/dnsmasq.log { size 100M weekly rotate 7 compress missingok notifempty postrotate systemctl restart dnsmasq.service endscript } === ISC-DHCP-SERVER === Install isc-dhcp-server: apt-get install isc-dhcp-server Run it/ status: service isc-dhcp-server start systemctl status isc-dhcp-server.service Configuration files: /etc/dhcp/dhcpd.conf /etc/default/isc-dhcp-server Example "/etc/dhcp/dhcpd.conf": # Sample configuration file for ISC dhcpd for Debian # # # The ddns-updates-style parameter controls whether or not the server will # attempt to do a DNS update when a lease is confirmed. We default to the # behavior of the version 2 packages ('none', since DHCP v2 didn't # have support for DDNS.) ddns-update-style none; # option definitions common to all supported networks... #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; #wlan0: subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.2 192.168.2.10; range 192.168.2.150 192.168.2.200; option broadcast-address 192.168.2.255; option routers 192.168.2.254; option domain-name "local"; #option domain-name-servers 8.8.8.8, 8.8.4.4; option domain-name-servers 192.168.1.1; # host hostname { # hardware ethernet 00:22:5D:2H:E2:F9; # fixed-address 192.168.2.5; # server-name "hostname"; # } } #eth1: subnet 192.168.3.0 netmask 255.255.255.0 { default-lease-time 600; max-lease-time 7200; range 192.168.3.2 192.168.3.10; range 192.168.3.150 192.168.3.200; option broadcast-address 192.168.3.255; option routers 192.168.3.254; #option subnet-mask 255.255.255.0; option domain-name "local"; option domain-name-servers 192.168.1.1; host hostname { hardware ethernet 01:22:16:92:A2:C5; fixed-address 192.168.3.4; server-name "hostname"; } } Example "/etc/default/isc-dhcp-server": # Defaults for isc-dhcp-server initscript # sourced by /etc/init.d/isc-dhcp-server # installed at /etc/default/isc-dhcp-server by the maintainer scripts # # This is a POSIX shell fragment # # Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). #DHCPD_CONF=/etc/dhcp/dhcpd.conf # Path to dhcpd's PID file (default: /var/run/dhcpd.pid). #DHCPD_PID=/var/run/dhcpd.pid # Additional options to start dhcpd with. # Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead #OPTIONS="" # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="wlan0 eth1" === Logging === sudo touch /var/log/dhcpd.log In "/etc/rsyslog.conf" edit as follows: *.*;auth,authpriv.none; to *.*;auth,authpriv.none;local7.none -/var/log/syslog Finally service isc-dhcp-server restart Show leases: cat /var/lib/dhcp/dhcpd.leases ==== HOSTAPD ==== Install: apt-get install hostapd Start, stop, restart hostapd: /etc/init.d/hostapd start Check if interface works in AP mode and which channels: apt-get install iw iw list | grep AP iwlist chan === Conf === Example "/etc/default/hostapd": # Defaults for hostapd initscript # # See /usr/share/doc/hostapd/README.Debian for information about alternative # methods of managing hostapd. # # Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration # file and hostapd will be started during system boot. An example configuration # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # RUN_DAEMON=yes DAEMON_CONF="/etc/hostapd/hostapd.conf" #DAEMON_CONF="" # Additional daemon options to be appended to hostapd command:- # -d show more debug messages (-dd for even more) # -K include key data in debug messages # -t include timestamps in some debug messages # # Note that -B (daemon mode) and -P (pidfile) options are automatically # configured by the init.d script and must not be added to DAEMON_OPTS. # #DAEMON_OPTS="" Configuration example "hostapd.conf": # Nur fuer den Bridge-Betrieb, fuer AP auskommentieren #bridge=br0 # # Schnittstelle und Treiber interface=wlan0 #driver=rtl8192cu #works for rtl8192cu: driver=rtl871xdrv #driver=nl80211 #driver=rtl871xdrv # # WLAN-Konfiguration ssid=RaspberryAPi channel=11 # # ESSID sichtbar ignore_broadcast_ssid=0 # # Läereinstellungen country_code=DE ieee80211d=1 # # Üertragungsmodus hw_mode=g # # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # # Draft-N Modus aktivieren / optional nur füsprechende Karten ieee80211n=1 # # wmm-Funktionalitä(fuer draft-n) wmm_enabled=1 # # Üertragungsmodus / Bandbreite 40MHz / siehe iw list # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # # Beacons beacon_int=100 dtim_period=2 # # MAC-Authentifizierung macaddr_acl=0 # # max. Anzahl der Clients max_num_sta=20 # # Gröder Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # # temporary configurationsfile dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # # Authentifizierungsoptionen auth_algs=3 # # Verschlüng / hier rein WPA2 wpa=2 #rsn_preauth=1 #rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # # Schlüntervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 # # Zugangsschlü(PSK) / hier in Klartext (ASCII) wpa_passphrase=xxxxxxxx === Compile Realtek Hostapd === Go to the Realtek downloads page: http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8192CU http://152.104.125.41/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8192CU *Download linux 4.0.2_9000 or above *Copy the zip to the SD card using any computer which will place it in the Pi's /boot directory (or somehow get that file onto your Pi) *Boot the Pi from the SD card *sudo mv /boot/RTL8192xC_USB_linux_v4.0.2_9000.20121105.zip *unzip RTL8192xC_USB_linux_v4.0.2_9000.20121105.zip *mv RTL8188C_8192C_USB_linux_v4.0.2_9000.20121105/ rtl *cd rtl *cd wpa_supplicant_hostapd *unzip wpa_supplicant_hostapd-0.8_rtw_20120803.zip *cd wpa_supplicant_hostapd-0.8/ *cd hostapd *make *when done, hostapd binary is in the directory "/usr/sbin/hostapd" === hostadp init-script === #! /bin/sh ### BEGIN INIT INFO # Provides: hostapd # Required-Start: $isc-dhcp-server # Required-Stop: # X-Start-Before: rmnologin # Default-Start: 2 3 4 5 # Default-Stop: 1 6 # Short-Description: Provide limited super user privileges to specific users # Description: Provide limited super user privileges to specific users. ### END INIT INFO start() { /usr/sbin/hostapd -dd -B -P /var/run/hostapd.pid /etc/hostapd/hostapd.conf } stop() { PID=`cat /var/run/hostapd.pid` kill $PID } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; stop|reload|restart|force-reload|status) ;; *) echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0 ===== Raspberry Pi Cam ===== Interesting: http://www.lavrsen.dk/foswiki/bin/view/Motion/LoopbackDevice http://www.forum-raspberrypi.de/Thread-tutorial-bewegungserkennung-mit-dem-raspberry-camera-modul-und-motion http://www.afraidofsunlight.co.uk/weather/index.php?page=trailcam #python! raspistill -o test.jpg #create image "test.jpg" raspivid -o testvideo.h264 -t 10000 #create 10 sec. video "testvideo.h264" Convert file "testvideo.h264" to *.mp4: sudo apt-get update sudo apt-get install gpac MP4Box -add testvideo.h264 testvideo.mp4 To disable the raspi-cam LED edit "/boot/config.txt": disable_camera_led=1 === Problems === Enable raspicam, if you get "Failed to open video device /dev/video0: No such file or directory" in motion: echo "bcm2835-v4l2" | tee -a /etc/modules sudo modprobe bcm2835-v4l2 === Live HLS streaming === https://github.com/AndyA/psips ==== Motion ==== Init-Script "/etc/init.d/motion": #!/bin/sh -e # # /etc/init.d/motion: Start the motion detection # ### BEGIN INIT INFO # Provides: motion # Required-Start: $local_fs $syslog $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Motion detection # Description: loads motion and assigns privileges ### END INIT INFO # Ported to new debian way using sh and /lib/lsb/init-functions # by Angel Carpintero # Modified by : Juan Angulo Moreno # Eddy Petrisor # ArAge NAME=motion PATH_BIN=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/bin/motion #DAEMON_OPTS='-n' DAEMON_OPTS="-c /etc/motion/motion.conf" PIDFILE=/var/run/$NAME.pid DEFAULTS=/etc/default/$NAME DESC="motion detection daemon" ENV="env -i LANG=C PATH=$PATH_BIN" . /lib/lsb/init-functions test -x $DAEMON || exit 0 RET=0 [ -r "$DEFAULTS" ] && . "$DEFAULTS" || start_motion_daemon=yes check_daemon_enabled () { if [ "$start_motion_daemon" = "yes" ] ; then return 0 else log_warning_msg "Not starting $NAME daemon, disabled via /etc/default/$NAME" return 1 fi } case "$1" in start) if check_daemon_enabled ; then if ! [ -d /var/run/motion ]; then mkdir /var/run/motion fi chown motion:motion /var/run/motion log_daemon_msg "Starting $DESC" "$NAME" if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion -- $DAEMON_OPTS; then #if start-stop-daemon --start --oknodo --exec $DAEMON $DAEMON_OPTS -b --chuid motion ; then log_end_msg 0 else log_end_msg 1 RET=1 fi fi ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" if start-stop-daemon --stop --oknodo --exec $DAEMON --retry 30 ; then log_end_msg 0 else log_end_msg 1 RET=1 fi ;; reload|force-reload) log_daemon_msg "Reloading $NAME configuration" if start-stop-daemon --stop --signal HUP --exec $DAEMON ; then log_end_msg 0 else log_end_msg 1 RET=1 fi ;; restart-motion) if check_daemon_enabled ; then log_action_begin_msg "Restarting $NAME" if $0 stop && $0 start ; then log_action_end_msg 0 else log_action_cont_msg "(failed)" RET=1 fi fi ;; restart) $0 restart-motion ;; *) echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload}" RET=1 ;; esac exit $RET === Motion Config === http://www.lunetikk.de/doku.php?id=linux:raspberry:picam:motion ==== XBMC ==== SSH login user: pi Default password: raspberry "/boot/config.txt" settings: http://raspberrypi.stackexchange.com/tags/config.txt/info Backup: http://wiki.xbmc.org/index.php?title=Add-on:XBMC_Backup