From 94d50c2386e159a55fef0f8b77f77becacb7b14c Mon Sep 17 00:00:00 2001 From: orangepi-xunlong <258384131@qq.com> Date: Mon, 1 Apr 2024 09:19:48 +0800 Subject: [PATCH] Support Orange Pi 3 Plus --- external/cache/debs/arm64/wiringpi_2.51.deb | Bin 100656 -> 0 bytes external/cache/debs/arm64/wiringpi_2.52.deb | Bin 0 -> 98316 bytes external/config/boards/orangepi3plus.conf | 12 + external/config/bootenv/meson.txt | 3 + external/config/bootscripts/boot-meson64.cmd | 149 + .../kernel/linux-6.1-meson64-next.config | 10492 ++++++++++++++++ .../families/include/meson64_common.inc | 127 + .../config/sources/families/meson-sm1.conf | 179 + .../asound.state.orangepi3plus-next | 781 ++ .../orangepi/orangepi-hardware-optimization | 5 + .../overlays_s905d3/etc/docker/daemon.json | 5 + .../overlays_s905d3/usr/bin/auto_login_cli.sh | 29 + .../bsp/overlays_s905d3/usr/bin/create_ap | 1919 +++ .../overlays_s905d3/usr/bin/desktop_login.sh | 11 + .../usr/bin/disable_desktop_autologin.sh | 5 + .../overlays_s905d3/usr/bin/enable_docker.sh | 8 + .../bsp/overlays_s905d3/usr/bin/reset_ssh.sh | 4 + .../bsp/overlays_s905d3/usr/bin/spidev_test | Bin 0 -> 19672 bytes .../bsp/overlays_s905d3/usr/bin/tinycap | Bin 0 -> 14736 bytes .../bsp/overlays_s905d3/usr/bin/tinymix | Bin 0 -> 19448 bytes .../bsp/overlays_s905d3/usr/bin/tinypcminfo | Bin 0 -> 14440 bytes .../bsp/overlays_s905d3/usr/bin/tinyplay | Bin 0 -> 19048 bytes .../overlays_s905d3/usr/lib/libtinyalsa.so | Bin 0 -> 37480 bytes .../system/getty@.service.d/override.conf | 5 + .../serial-getty@.service.d/override.conf | 5 + scripts/general.sh | 4 +- scripts/main.sh | 1 + 27 files changed, 13743 insertions(+), 1 deletion(-) delete mode 100644 external/cache/debs/arm64/wiringpi_2.51.deb create mode 100644 external/cache/debs/arm64/wiringpi_2.52.deb create mode 100644 external/config/boards/orangepi3plus.conf create mode 100644 external/config/bootenv/meson.txt create mode 100644 external/config/bootscripts/boot-meson64.cmd create mode 100644 external/config/kernel/linux-6.1-meson64-next.config create mode 100644 external/config/sources/families/include/meson64_common.inc create mode 100644 external/config/sources/families/meson-sm1.conf create mode 100644 external/packages/blobs/asound.state/asound.state.orangepi3plus-next create mode 100644 external/packages/bsp/overlays_s905d3/etc/docker/daemon.json create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/auto_login_cli.sh create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/create_ap create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/desktop_login.sh create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/disable_desktop_autologin.sh create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/enable_docker.sh create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/reset_ssh.sh create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/spidev_test create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/tinycap create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/tinymix create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/tinypcminfo create mode 100755 external/packages/bsp/overlays_s905d3/usr/bin/tinyplay create mode 100755 external/packages/bsp/overlays_s905d3/usr/lib/libtinyalsa.so create mode 100644 external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/getty@.service.d/override.conf create mode 100644 external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/serial-getty@.service.d/override.conf diff --git a/external/cache/debs/arm64/wiringpi_2.51.deb b/external/cache/debs/arm64/wiringpi_2.51.deb deleted file mode 100644 index 5172f1211c1811f1c56ceb20e33321730ed4037b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100656 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
XHL((a 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

wAp4yYieQ4?MI*|r-xNmCC-CS;DSPu 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/dev/null 2>&1 + dd if=$1/u-boot.bin of=$2 bs=512 skip=1 seek=1 conv=fsync >/dev/null 2>&1 +} + +family_tweaks_bsp() { + mkdir -p $destination/etc/udev/rules.d + mkdir -p $destination/usr/local/bin + + mkdir -p "$destination"/etc/X11/xorg.conf.d + case "${BOARD}" in + "orangepi3plus") + cat <<- EOF > "$destination"/etc/X11/xorg.conf + Section "Device" + Identifier "DRM Graphics Acclerated" + + ## Use modesetting and glamor + Driver "modesetting" + Option "AccelMethod" "glamor" ### "glamor" to enable 3D acceleration, "none" to disable. + Option "DRI" "2" + Option "Dri2Vsync" "true" + Option "TripleBuffer" "True" + ## End glamor configuration + + EndSection + + Section "Screen" + Identifier "Default Screen" + SubSection "Display" + Depth 24 + EndSubSection + EndSection + EOF + ;; + esac +} + +# this helper function includes postprocess for u200 and its variants. +# $1 PATH for uboot blob repo +# $2 family g12a or g12b +uboot_g12_postprocess() { + mv -v u-boot.bin bl33.bin + + $1/blx_fix.sh $1/bl30.bin \ + zero_tmp \ + bl30_zero.bin \ + $1/bl301.bin \ + bl301_zero.bin \ + bl30_new.bin bl30 + + $1/blx_fix.sh $1/bl2.bin \ + zero_tmp \ + bl2_zero.bin \ + $1/acs.bin \ + bl21_zero.bin \ + bl2_new.bin bl2 + + $1/aml_encrypt_$2 --bl30sig \ + --input bl30_new.bin \ + --output bl30_new.bin.g12.enc \ + --level v3 + $1/aml_encrypt_$2 --bl3sig \ + --input bl30_new.bin.g12.enc \ + --output bl30_new.bin.enc \ + --level v3 --type bl30 + $1/aml_encrypt_$2 --bl3sig \ + --input $1/bl31.img \ + --output bl31.img.enc \ + --level v3 --type bl31 + $1/aml_encrypt_$2 --bl3sig \ + --input bl33.bin \ + --compress lz4 \ + --output bl33.bin.enc \ + --level v3 --type bl33 + $1/aml_encrypt_$2 --bl2sig \ + --input bl2_new.bin \ + --output bl2.n.bin.sig + if [ -e $1/lpddr3_1d.fw ]; then + $1/aml_encrypt_$2 --bootmk --output u-boot.bin \ + --bl2 bl2.n.bin.sig \ + --bl30 bl30_new.bin.enc \ + --bl31 bl31.img.enc \ + --bl33 bl33.bin.enc \ + --ddrfw1 $1/ddr4_1d.fw \ + --ddrfw2 $1/ddr4_2d.fw \ + --ddrfw3 $1/ddr3_1d.fw \ + --ddrfw4 $1/piei.fw \ + --ddrfw5 $1/lpddr4_1d.fw \ + --ddrfw6 $1/lpddr4_2d.fw \ + --ddrfw7 $1/diag_lpddr4.fw \ + --ddrfw8 $1/aml_ddr.fw \ + --ddrfw9 $1/lpddr3_1d.fw \ + --level v3 + else + $1/aml_encrypt_$2 --bootmk --output u-boot.bin \ + --bl2 bl2.n.bin.sig \ + --bl30 bl30_new.bin.enc \ + --bl31 bl31.img.enc \ + --bl33 bl33.bin.enc \ + --ddrfw1 $1/ddr4_1d.fw \ + --ddrfw2 $1/ddr4_2d.fw \ + --ddrfw3 $1/ddr3_1d.fw \ + --ddrfw4 $1/piei.fw \ + --ddrfw5 $1/lpddr4_1d.fw \ + --ddrfw6 $1/lpddr4_2d.fw \ + --ddrfw7 $1/diag_lpddr4.fw \ + --ddrfw8 $1/aml_ddr.fw \ + --level v3 + fi +} diff --git a/external/config/sources/families/meson-sm1.conf b/external/config/sources/families/meson-sm1.conf new file mode 100644 index 000000000000..b1b3c38bc940 --- /dev/null +++ b/external/config/sources/families/meson-sm1.conf @@ -0,0 +1,179 @@ +# +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com +# +# This file is a part of the Armbian Build Framework +# https://github.com/armbian/build/ +# +source "${BASH_SOURCE%/*}/include/meson64_common.inc" + +CPUMIN=667000 +CPUMAX=1800000 +GOVERNOR=ondemand + +case $BRANCH in + + #current) + + # UBOOT_TARGET_MAP=";;build/u-boot.bin.sd.bin:u-boot.bin" + # BOOTPATCHDIR="v2015.01" + # BOOTBRANCH='branch:u-boot-2015.01' + # UBOOT_COMPILER="aarch64-linux-gnu-" + # UBOOT_USE_GCC='< 5.0' + # UBOOT_TOOLCHAIN2='arm-none-eabi-:5.0' + + # KERNELBRANCH='branch:orange-pi-5.15-s905d3' + # KERNELPATCHDIR='rockchip-rk3588-legacy' + # LINUXCONFIG="linux-5.15-s905d3-current" + # KERNEL_USE_GCC='> 10.0' + + # BOOT_FDT_FILE="meson-sm1-orangepi-3-plus.dtb" + + # ;; + + next) + + UBOOT_TARGET_MAP="u-boot-dtb.img;;u-boot.bin.sd.bin:u-boot.bin u-boot-dtb.img u-boot-spi.bin:u-boot-spi.bin" + BOOTPATCHDIR="v2023.07-meson64" + BOOTBRANCH='branch:v2023.07-meson64' + + KERNELBRANCH='branch:orange-pi-6.1-meson64' + LINUXCONFIG="linux-6.1-meson64-next" + + #KERNELBRANCH='branch:orange-pi-6.5-meson64' + #LINUXCONFIG="linux-6.5-meson64-next" + + KERNELPATCHDIR='meson64-next' + KERNEL_USE_GCC='> 10.0' + ASOUND_STATE='asound.state.orangepi3plus-next' + + ;; +esac + +write_uboot_platform_mtd() { + dd if=$1/u-boot-spi.bin of=/dev/mtdblock0 +} + +family_tweaks() { + + #if [[ ${BRANCH} == current ]]; then + # sed -i 's/^debug_uart.*/debug_uart=ttyS0/' "${SDCARD}"/boot/orangepiEnv.txt + # SERIALCON="ttyS0" + #fi + + install_wiringop + + rsync -a --chown=root:root --exclude=etc/pulse "${EXTER}"/packages/bsp/overlays_s905d3/* ${SDCARD}/ + + chroot $SDCARD /bin/bash -c "apt-get -y -qq install usb-modeswitch tree dnsmasq v4l-utils swig python3-dev python3-setuptools bluez libncurses-dev" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + + #install_docker + #install_balenaEtcher +} + +uboot_custom_postprocess() { + + cd "${BOOTSOURCEDIR}" + + if [[ ${BOARD} == orangepi3plus && ${BRANCH} == next ]]; then + + # Preserve the u-boot produced (unsigned) u-boot.bin + cp -v u-boot.bin u-boot.bin.orig + + # Sign using the old FIP blobs (amlogic-boot-fip-vim3-spi), for use exclusively with SPI booting. + display_alert "Signing u-boot for SPI booting with old blobs" "${BOARD}" "info" + uboot_g12_postprocess "${EXTER}"/cache/sources/amlogic-boot-fip-spi/${BOARD} g12a + + # Once done, store the resulting u-boot.bin as u-boot-spi.bin referenced in the UBOOT_TARGET_MAP above. + cp -v u-boot.bin u-boot-spi.bin + + # Restore the original, so we can do everything again. + cp -v u-boot.bin.orig u-boot.bin + + # Do the normal signing, using the regular/updated FIP blobs. This is for eMMC booting. + display_alert "Signing u-boot for eMMC/SD booting with new blobs" "${BOARD}" "info" + uboot_g12_postprocess "${EXTER}"/cache/sources/amlogic-boot-fip/${BOARD} g12a + + display_alert "Done postprocessing u-boot with new/old FIP blobs" "${BOARD}" "info" + fi + + #if [[ ${BOARD} == orangepi3plus && ${BRANCH} == current ]]; then + + # UBOOT_SRC_FOLDER="${BOOTSOURCEDIR}" + + # source fip/variables.sh "${BOOTSOURCEDIR}" + # source fip/lib.sh + # source fip/build_bl2.sh + # source fip/build_bl30.sh + # source fip/build_bl31.sh + # source fip/build_bl32.sh + # source fip/build_bl33.sh + # source fip/build_bl40.sh + + # # Cleanup old binaries + # rm -rf ${FIP_BUILD_FOLDER} + + # # source uboot pre-build configs + # source ${SOURCE_FILE} + + # CUR_SOC=${CONFIG_SYS_SOC} + + # if [ "y" == "${CONFIG_NEED_BL32}" ]; then + # BLX_NEEDFUL[3]="true" + # fi + + # export_variables + + # source ${FIP_FOLDER}${CUR_SOC}/variable_soc.sh + + # # compile fip tools for ddr_parse and map_tool + # prepare_tools > /dev/null 2>&1 || true + + # # source soc package script + # source ${FIP_FOLDER}${CUR_SOC}/build.sh + + # # source configs + # source ${CONFIG_FILE} + # if [ "y" == "${CONFIG_SUPPORT_CUSOTMER_BOARD}" ]; then + # BOARD_DIR="customer/board/${CONFIG_SYS_BOARD}" + # else + # BOARD_DIR="${CONFIG_BOARDDIR}" + # fi + + # mkdir -p ${FIP_BUILD_FOLDER} + + # cp ${FIP_FOLDER}${CUR_SOC}/bl2.bin $FIP_BUILD_FOLDER + # cp ${FIP_FOLDER}${CUR_SOC}/bl30.bin $FIP_BUILD_FOLDER + # cp ${FIP_FOLDER}${CUR_SOC}/bl31.bin $FIP_BUILD_FOLDER + # cp ${FIP_FOLDER}${CUR_SOC}/bl31.img $FIP_BUILD_FOLDER + # #cp ${FIP_FOLDER}${CUR_SOC}/bl32.bin $FIP_BUILD_FOLDER + + # # cp bl33(uboot) + # copy_bl33 + + # # cp other firmwares(soc related) + # copy_other_soc + + # # package final bootloader + # package + + # if [ "y" != "${CONFIG_AML_SIGNED_UBOOT}" ]; then + # # copy bootloader to main folder + # mkdir -p ${BUILD_FOLDER} + # cp ${FIP_BUILD_FOLDER}u-boot.bin ${BUILD_FOLDER}u-boot.bin + # cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt ${BUILD_FOLDER}u-boot.bin.encrypt + # cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.efuse ${BUILD_FOLDER}u-boot.bin.encrypt.efuse + # cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.sd.bin ${BUILD_FOLDER}u-boot.bin.encrypt.sd.bin + # cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.usb.bl2 ${BUILD_FOLDER}u-boot.bin.encrypt.usb.bl2 + # cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.usb.tpl ${BUILD_FOLDER}u-boot.bin.encrypt.usb.tpl + # cp ${FIP_BUILD_FOLDER}u-boot.bin.sd.bin ${BUILD_FOLDER}u-boot.bin.sd.bin + # cp ${FIP_BUILD_FOLDER}u-boot.bin.usb.bl2 ${BUILD_FOLDER}u-boot.bin.usb.bl2 + # cp ${FIP_BUILD_FOLDER}u-boot.bin.usb.tpl ${BUILD_FOLDER}u-boot.bin.usb.tpl + + # if [ "y" == "${CONFIG_AML_CRYPTO_IMG}" ]; then + # cp ${FIP_BUILD_FOLDER}boot.img.encrypt ${BUILD_FOLDER}boot.img.encrypt + # fi + # fi + #fi +} diff --git a/external/packages/blobs/asound.state/asound.state.orangepi3plus-next b/external/packages/blobs/asound.state/asound.state.orangepi3plus-next new file mode 100644 index 000000000000..b9e4ac978383 --- /dev/null +++ b/external/packages/blobs/asound.state/asound.state.orangepi3plus-next @@ -0,0 +1,781 @@ +state.OPI3Plus { + control.1 { + iface MIXER + name 'TOACODEC Lane Select' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 3' + } + } + control.2 { + iface MIXER + name 'ACODEC Playback Channel Mode' + value Stereo + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Stereo + item.1 Mono + } + } + control.3 { + iface MIXER + name 'ACODEC Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.4 { + iface MIXER + name 'ACODEC Playback Volume' + value.0 255 + value.1 255 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + dbmin -9999999 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.5 { + iface MIXER + name 'ACODEC Ramp Rate' + value Fast + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Fast + item.1 Slow + } + } + control.6 { + iface MIXER + name 'ACODEC Volume Ramp Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.7 { + iface MIXER + name 'ACODEC Mute Ramp Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.8 { + iface MIXER + name 'ACODEC Unmute Ramp Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.9 { + iface MIXER + name 'TDMOUT_C Lane 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.10 { + iface MIXER + name 'TDMOUT_C Lane 1 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.11 { + iface MIXER + name 'TDMOUT_C Lane 2 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.12 { + iface MIXER + name 'TDMOUT_C Lane 3 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.13 { + iface MIXER + name 'TDMOUT_C Gain Enable Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.14 { + iface MIXER + name 'TDMOUT_B Lane 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.15 { + iface MIXER + name 'TDMOUT_B Lane 1 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.16 { + iface MIXER + name 'TDMOUT_B Lane 2 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.17 { + iface MIXER + name 'TDMOUT_B Lane 3 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 255' + } + } + control.18 { + iface MIXER + name 'TDMOUT_B Gain Enable Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.19 { + iface PCM + device 10 + name 'Playback Channel Map' + value.0 0 + value.1 0 + value.2 0 + value.3 0 + value.4 0 + value.5 0 + value.6 0 + value.7 0 + comment { + access read + type INTEGER + count 8 + range '0 - 36' + } + } + control.20 { + iface PCM + device 10 + name 'IEC958 Playback Mask' + value ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + comment { + access read + type IEC958 + count 1 + } + } + control.21 { + iface PCM + device 10 + name 'IEC958 Playback Default' + value '0400000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type IEC958 + count 1 + } + } + control.22 { + iface PCM + device 10 + name ELD + value '100008006a10000100000000000000004a84601541534d2d313536464354097f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read volatile' + type BYTES + count 128 + } + } + control.23 { + iface MIXER + name 'FRDDR_A SRC 1 EN Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.24 { + iface MIXER + name 'FRDDR_A SRC 2 EN Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.25 { + iface MIXER + name 'FRDDR_A SRC 3 EN Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.26 { + iface MIXER + name 'FRDDR_A SINK 1 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.27 { + iface MIXER + name 'FRDDR_A SINK 2 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.28 { + iface MIXER + name 'FRDDR_A SINK 3 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.29 { + iface MIXER + name 'FRDDR_B SRC 1 EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.30 { + iface MIXER + name 'FRDDR_B SRC 2 EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.31 { + iface MIXER + name 'FRDDR_B SRC 3 EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.32 { + iface MIXER + name 'FRDDR_B SINK 1 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.33 { + iface MIXER + name 'FRDDR_B SINK 2 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.34 { + iface MIXER + name 'FRDDR_B SINK 3 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.35 { + iface MIXER + name 'FRDDR_C SRC 1 EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.36 { + iface MIXER + name 'FRDDR_C SRC 2 EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.37 { + iface MIXER + name 'FRDDR_C SRC 3 EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.38 { + iface MIXER + name 'FRDDR_C SINK 1 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.39 { + iface MIXER + name 'FRDDR_C SINK 2 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.40 { + iface MIXER + name 'FRDDR_C SINK 3 SEL' + value 'OUT 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'OUT 0' + item.1 'OUT 1' + item.2 'OUT 2' + item.3 'OUT 3' + item.4 'OUT 4' + item.5 'OUT 5' + item.6 'OUT 6' + item.7 'OUT 7' + } + } + control.41 { + iface MIXER + name 'TODDR_A SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + item.5 'IN 5' + item.6 'IN 6' + item.7 'IN 7' + item.8 'IN 8' + item.9 'IN 9' + item.10 'IN 10' + item.11 'IN 11' + item.12 'IN 12' + item.13 'IN 13' + item.14 'IN 14' + item.15 'IN 15' + } + } + control.42 { + iface MIXER + name 'TODDR_B SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + item.5 'IN 5' + item.6 'IN 6' + item.7 'IN 7' + item.8 'IN 8' + item.9 'IN 9' + item.10 'IN 10' + item.11 'IN 11' + item.12 'IN 12' + item.13 'IN 13' + item.14 'IN 14' + item.15 'IN 15' + } + } + control.43 { + iface MIXER + name 'TODDR_C SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + item.5 'IN 5' + item.6 'IN 6' + item.7 'IN 7' + item.8 'IN 8' + item.9 'IN 9' + item.10 'IN 10' + item.11 'IN 11' + item.12 'IN 12' + item.13 'IN 13' + item.14 'IN 14' + item.15 'IN 15' + } + } + control.44 { + iface MIXER + name 'TOHDMITX I2S SRC' + value 'I2S B' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'I2S A' + item.1 'I2S B' + item.2 'I2S C' + } + } + control.45 { + iface MIXER + name 'TOHDMITX Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.46 { + iface MIXER + name 'TOHDMITX SPDIF SRC' + value 'SPDIF A' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'SPDIF A' + item.1 'SPDIF B' + } + } + control.47 { + iface MIXER + name 'TOACODEC SRC' + value 'I2S B' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'I2S A' + item.1 'I2S B' + item.2 'I2S C' + } + } + control.48 { + iface MIXER + name 'TOACODEC OUT EN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.49 { + iface MIXER + name 'ACODEC Right DAC Sel' + value Right + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Right + item.1 Left + } + } + control.50 { + iface MIXER + name 'ACODEC Left DAC Sel' + value Left + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.51 { + iface MIXER + name 'TDMIN_C SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + item.5 'IN 5' + item.6 'IN 6' + item.7 'IN 7' + item.8 'IN 8' + item.9 'IN 9' + item.10 'IN 10' + item.11 'IN 11' + item.12 'IN 12' + item.13 'IN 13' + item.14 'IN 14' + item.15 'IN 15' + } + } + control.52 { + iface MIXER + name 'TDMIN_B SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + item.5 'IN 5' + item.6 'IN 6' + item.7 'IN 7' + item.8 'IN 8' + item.9 'IN 9' + item.10 'IN 10' + item.11 'IN 11' + item.12 'IN 12' + item.13 'IN 13' + item.14 'IN 14' + item.15 'IN 15' + } + } + control.53 { + iface MIXER + name 'TDMIN_A SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + item.5 'IN 5' + item.6 'IN 6' + item.7 'IN 7' + item.8 'IN 8' + item.9 'IN 9' + item.10 'IN 10' + item.11 'IN 11' + item.12 'IN 12' + item.13 'IN 13' + item.14 'IN 14' + item.15 'IN 15' + } + } + control.54 { + iface MIXER + name 'TDMOUT_C SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + } + } + control.55 { + iface MIXER + name 'TDMOUT_B SRC SEL' + value 'IN 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IN 0' + item.1 'IN 1' + item.2 'IN 2' + item.3 'IN 3' + item.4 'IN 4' + } + } +} diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization b/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization index a3faef7847da..707792360958 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization @@ -336,6 +336,11 @@ prepare_board() { --baudrate 1500000 --patchram /lib/firmware/BCM4345C0.hcd /dev/ttyS1 & fi ;; + orangepi3plus) + gpio mode 28 in + gpio mode 28 up + gpio read 28 + ;; esac diff --git a/external/packages/bsp/overlays_s905d3/etc/docker/daemon.json b/external/packages/bsp/overlays_s905d3/etc/docker/daemon.json new file mode 100644 index 000000000000..fa5438ac536b --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/etc/docker/daemon.json @@ -0,0 +1,5 @@ +{ + "registry-mirrors": [ + "https://docker.mirrors.ustc.edu.cn" + ] +} diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/auto_login_cli.sh b/external/packages/bsp/overlays_s905d3/usr/bin/auto_login_cli.sh new file mode 100755 index 000000000000..4831bb2332b0 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/bin/auto_login_cli.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +if [[ -z $1 ]]; then + user=root +else + user=$1 +fi + +[[ -d /lib/systemd/system/getty@.service.d/ ]] && rm /lib/systemd/system/getty@.service.d/ -rf +[[ -f /lib/systemd/system/serial-getty@.service.d/override.conf ]] && rm /lib/systemd/system/serial-getty@.service.d/override.conf -f +[[ -d /etc/systemd/system/getty@.service.d/ ]] && rm /etc/systemd/system/getty@.service.d/ -rf +[[ -f /etc/systemd/system/serial-getty@.service.d/override.conf ]] && rm /etc/systemd/system/serial-getty@.service.d/override.conf -f + +if [[ $1 == "-d" ]]; then + exit +fi + +mkdir -p /etc/systemd/system/getty@.service.d/ +mkdir -p /etc/systemd/system/serial-getty@.service.d/ +cat <<-EOF > \ +/etc/systemd/system/serial-getty@.service.d/override.conf +[Service] +ExecStartPre=/bin/sh -c 'exec /bin/sleep 10' +ExecStart= +ExecStart=-/sbin/agetty --noissue --autologin ${user} %I \$TERM +Type=idle +EOF +cp /etc/systemd/system/serial-getty@.service.d/override.conf \ +/etc/systemd/system/getty@.service.d/override.conf diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/create_ap b/external/packages/bsp/overlays_s905d3/usr/bin/create_ap new file mode 100755 index 000000000000..e5b7a88e9d27 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/bin/create_ap @@ -0,0 +1,1919 @@ +#!/bin/bash + +# general dependencies: +# bash (to run this script) +# util-linux (for getopt) +# procps or procps-ng +# hostapd +# iproute2 +# iw +# iwconfig (you only need this if 'iw' can not recognize your adapter) +# haveged (optional) + +# dependencies for 'nat' or 'none' Internet sharing method +# dnsmasq +# iptables + +VERSION=0.4.6 +PROGNAME="$(basename $0)" + +# make sure that all command outputs are in english +# so we can parse them correctly +export LC_ALL=C + +# all new files and directories must be readable only by root. +# in special cases we must use chmod to give any other permissions. +SCRIPT_UMASK=0077 +umask $SCRIPT_UMASK + +usage() { + echo "Usage: "$PROGNAME" [options] [] [ []]" + echo + echo "Options:" + echo " -h, --help Show this help" + echo " --version Print version number" + echo " -c Channel number (default: 1)" + echo " -w Use 1 for WPA, use 2 for WPA2, use 1+2 for both (default: 1+2)" + echo " -n Disable Internet sharing (if you use this, don't pass" + echo " the argument)" + echo " -m Method for Internet sharing." + echo " Use: 'nat' for NAT (default)" + echo " 'bridge' for bridging" + echo " 'none' for no Internet sharing (equivalent to -n)" + echo " --psk Use 64 hex digits pre-shared-key instead of passphrase" + echo " --hidden Make the Access Point hidden (do not broadcast the SSID)" + echo " --mac-filter Enable MAC address filtering" + echo " --mac-filter-accept Location of MAC address filter list (defaults to /etc/hostapd/hostapd.accept)" + echo " --redirect-to-localhost If -n is set, redirect every web request to localhost (useful for public information networks)" + echo " --hostapd-debug With level between 1 and 2, passes arguments -d or -dd to hostapd for debugging." + echo " --isolate-clients Disable communication between clients" + echo " --ieee80211n Enable IEEE 802.11n (HT)" + echo " --ieee80211ac Enable IEEE 802.11ac (VHT)" + echo " --ht_capab HT capabilities (default: [HT40+])" + echo " --vht_capab VHT capabilities" + echo " --country Set two-letter country code for regularity (example: US)" + echo " --freq-band Set frequency band. Valid inputs: 2.4, 5 (default: 2.4)" + echo " --driver Choose your WiFi adapter driver (default: nl80211)" + echo " --no-virt Do not create virtual interface" + echo " --no-haveged Do not run 'haveged' automatically when needed" + echo " --fix-unmanaged If NetworkManager shows your interface as unmanaged after you" + echo " close create_ap, then use this option to switch your interface" + echo " back to managed" + echo " --mac Set MAC address" + echo " --dhcp-dns Set DNS returned by DHCP" + echo " --daemon Run create_ap in the background" + echo " --pidfile Save daemon PID to file" + echo " --logfile Save daemon messages to file" + echo " --stop Send stop command to an already running create_ap. For an " + echo " you can put the PID of create_ap or the WiFi interface. You can" + echo " get them with --list-running" + echo " --list-running Show the create_ap processes that are already running" + echo " --list-clients List the clients connected to create_ap instance associated with ." + echo " For an you can put the PID of create_ap or the WiFi interface." + echo " If virtual WiFi interface was created, then use that one." + echo " You can get them with --list-running" + echo " --mkconfig Store configs in conf_file" + echo " --config Load configs from conf_file" + echo + echo "Non-Bridging Options:" + echo " --no-dns Disable dnsmasq DNS server" + echo " --no-dnsmasq Disable dnsmasq server completely" + echo " -g IPv4 Gateway for the Access Point (default: 192.168.12.1)" + echo " -d DNS server will take into account /etc/hosts" + echo " -e DNS server will take into account additional hosts file" + echo + echo "Useful informations:" + echo " * If you're not using the --no-virt option, then you can create an AP with the same" + echo " interface you are getting your Internet connection." + echo " * You can pass your SSID and password through pipe or through arguments (see examples)." + echo " * On bridge method if the is not a bridge interface, then" + echo " a bridge interface is created automatically." + echo + echo "Examples:" + echo " "$PROGNAME" wlan0 eth0 MyAccessPoint MyPassPhrase" + echo " echo -e 'MyAccessPoint\nMyPassPhrase' | "$PROGNAME" wlan0 eth0" + echo " "$PROGNAME" wlan0 eth0 MyAccessPoint" + echo " echo 'MyAccessPoint' | "$PROGNAME" wlan0 eth0" + echo " "$PROGNAME" wlan0 wlan0 MyAccessPoint MyPassPhrase" + echo " "$PROGNAME" -n wlan0 MyAccessPoint MyPassPhrase" + echo " "$PROGNAME" -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase" + echo " "$PROGNAME" -m bridge wlan0 br0 MyAccessPoint MyPassPhrase" + echo " "$PROGNAME" --driver rtl871xdrv wlan0 eth0 MyAccessPoint MyPassPhrase" + echo " "$PROGNAME" --daemon wlan0 eth0 MyAccessPoint MyPassPhrase" + echo " "$PROGNAME" --stop wlan0" +} + +# Busybox polyfills +if cp --help 2>&1 | grep -q -- --no-clobber; then + cp_n() { + cp -n "$@" + } +else + cp_n() { + yes n | cp -i "$@" + } +fi + +# on success it echos a non-zero unused FD +# on error it echos 0 +get_avail_fd() { + local x + for x in $(seq 1 $(ulimit -n)); do + if [[ ! -a "/proc/$BASHPID/fd/$x" ]]; then + echo $x + return + fi + done + echo 0 +} + +# lock file for the mutex counter +COUNTER_LOCK_FILE=/tmp/create_ap.$$.lock + +cleanup_lock() { + rm -f $COUNTER_LOCK_FILE +} + +init_lock() { + local LOCK_FILE=/tmp/create_ap.all.lock + + # we initialize only once + [[ $LOCK_FD -ne 0 ]] && return 0 + + LOCK_FD=$(get_avail_fd) + [[ $LOCK_FD -eq 0 ]] && return 1 + + # open/create lock file with write access for all users + # otherwise normal users will not be able to use it. + # to avoid race conditions on creation, we need to + # use umask to set the permissions. + umask 0555 + eval "exec $LOCK_FD>$LOCK_FILE" > /dev/null 2>&1 || return 1 + umask $SCRIPT_UMASK + + # there is a case where lock file was created from a normal + # user. change the owner to root as soon as we can. + [[ $(id -u) -eq 0 ]] && chown 0:0 $LOCK_FILE + + # create mutex counter lock file + echo 0 > $COUNTER_LOCK_FILE + + return $? +} + +# recursive mutex lock for all create_ap processes +mutex_lock() { + local counter_mutex_fd + local counter + + # lock local mutex and read counter + counter_mutex_fd=$(get_avail_fd) + if [[ $counter_mutex_fd -ne 0 ]]; then + eval "exec $counter_mutex_fd<>$COUNTER_LOCK_FILE" + flock $counter_mutex_fd + read -u $counter_mutex_fd counter + else + echo "Failed to lock mutex counter" >&2 + return 1 + fi + + # lock global mutex and increase counter + [[ $counter -eq 0 ]] && flock $LOCK_FD + counter=$(( $counter + 1 )) + + # write counter and unlock local mutex + echo $counter > /proc/$BASHPID/fd/$counter_mutex_fd + eval "exec ${counter_mutex_fd}<&-" + return 0 +} + +# recursive mutex unlock for all create_ap processes +mutex_unlock() { + local counter_mutex_fd + local counter + + # lock local mutex and read counter + counter_mutex_fd=$(get_avail_fd) + if [[ $counter_mutex_fd -ne 0 ]]; then + eval "exec $counter_mutex_fd<>$COUNTER_LOCK_FILE" + flock $counter_mutex_fd + read -u $counter_mutex_fd counter + else + echo "Failed to lock mutex counter" >&2 + return 1 + fi + + # decrease counter and unlock global mutex + if [[ $counter -gt 0 ]]; then + counter=$(( $counter - 1 )) + [[ $counter -eq 0 ]] && flock -u $LOCK_FD + fi + + # write counter and unlock local mutex + echo $counter > /proc/$BASHPID/fd/$counter_mutex_fd + eval "exec ${counter_mutex_fd}<&-" + return 0 +} + +# it takes 2 arguments +# returns: +# 0 if v1 (1st argument) and v2 (2nd argument) are the same +# 1 if v1 is less than v2 +# 2 if v1 is greater than v2 +version_cmp() { + local V1 V2 VN x + [[ ! $1 =~ ^[0-9]+(\.[0-9]+)*$ ]] && die "Wrong version format!" + [[ ! $2 =~ ^[0-9]+(\.[0-9]+)*$ ]] && die "Wrong version format!" + + V1=( $(echo $1 | tr '.' ' ') ) + V2=( $(echo $2 | tr '.' ' ') ) + VN=${#V1[@]} + [[ $VN -lt ${#V2[@]} ]] && VN=${#V2[@]} + + for ((x = 0; x < $VN; x++)); do + [[ ${V1[x]} -lt ${V2[x]} ]] && return 1 + [[ ${V1[x]} -gt ${V2[x]} ]] && return 2 + done + + return 0 +} + +USE_IWCONFIG=0 + +is_interface() { + [[ -z "$1" ]] && return 1 + [[ -d "/sys/class/net/${1}" ]] +} + +is_wifi_interface() { + which iw > /dev/null 2>&1 && iw dev $1 info > /dev/null 2>&1 && return 0 + if which iwconfig > /dev/null 2>&1 && iwconfig $1 > /dev/null 2>&1; then + USE_IWCONFIG=1 + return 0 + fi + return 1 +} + +is_bridge_interface() { + [[ -z "$1" ]] && return 1 + [[ -d "/sys/class/net/${1}/bridge" ]] +} + +get_phy_device() { + local x + for x in /sys/class/ieee80211/*; do + [[ ! -e "$x" ]] && continue + if [[ "${x##*/}" = "$1" ]]; then + echo $1 + return 0 + elif [[ -e "$x/device/net/$1" ]]; then + echo ${x##*/} + return 0 + elif [[ -e "$x/device/net:$1" ]]; then + echo ${x##*/} + return 0 + else + if [[ -e "/sys/class/net/$1" ]]; then + phy=$(readlink -f /sys/class/net/$1/phy80211) + phy1=$(readlink -f $x) + if [[ $phy == $phy1 ]]; then + echo ${x##*/} + return 0 + fi + fi + fi + done + echo "Failed to get phy interface" >&2 + return 1 +} + +get_adapter_info() { + local PHY + PHY=$(get_phy_device "$1") + [[ $? -ne 0 ]] && return 1 + iw phy $PHY info +} + +get_adapter_kernel_module() { + local MODULE + MODULE=$(readlink -f "/sys/class/net/$1/device/driver/module") + echo ${MODULE##*/} +} + +can_be_sta_and_ap() { + # iwconfig does not provide this information, assume false + [[ $USE_IWCONFIG -eq 1 ]] && return 1 + if [[ "$(get_adapter_kernel_module "$1")" == "brcmfmac" ]]; then + echo "WARN: brmfmac driver doesn't work properly with virtual interfaces and" >&2 + echo " it can cause kernel panic. For this reason we disallow virtual" >&2 + echo " interfaces for your adapter." >&2 + echo " For more info: https://github.com/oblique/create_ap/issues/203" >&2 + return 1 + fi + get_adapter_info "$1" | grep -E '{.* managed.* AP.*}' > /dev/null 2>&1 && return 0 + get_adapter_info "$1" | grep -E '{.* AP.* managed.*}' > /dev/null 2>&1 && return 0 + return 1 +} + +can_be_ap() { + # iwconfig does not provide this information, assume true + [[ $USE_IWCONFIG -eq 1 ]] && return 0 + get_adapter_info "$1" | grep -E '\* AP$' > /dev/null 2>&1 && return 0 + return 1 +} + +can_transmit_to_channel() { + local IFACE CHANNEL_NUM CHANNEL_INFO + IFACE=$1 + CHANNEL_NUM=$2 + + if [[ $USE_IWCONFIG -eq 0 ]]; then + if [[ $FREQ_BAND == 2.4 ]]; then + CHANNEL_INFO=$(get_adapter_info ${IFACE} | grep " 24[0-9][0-9] MHz \[${CHANNEL_NUM}\]") + else + CHANNEL_INFO=$(get_adapter_info ${IFACE} | grep " \(49[0-9][0-9]\|5[0-9]\{3\}\) MHz \[${CHANNEL_NUM}\]") + fi + [[ -z "${CHANNEL_INFO}" ]] && return 1 + [[ "${CHANNEL_INFO}" == *no\ IR* ]] && return 1 + [[ "${CHANNEL_INFO}" == *disabled* ]] && return 1 + return 0 + else + CHANNEL_NUM=$(printf '%02d' ${CHANNEL_NUM}) + CHANNEL_INFO=$(iwlist ${IFACE} channel | grep -E "Channel[[:blank:]]${CHANNEL_NUM}[[:blank:]]?:") + [[ -z "${CHANNEL_INFO}" ]] && return 1 + return 0 + fi +} + +# taken from iw/util.c +ieee80211_frequency_to_channel() { + local FREQ=$1 + if [[ $FREQ -eq 2484 ]]; then + echo 14 + elif [[ $FREQ -lt 2484 ]]; then + echo $(( ($FREQ - 2407) / 5 )) + elif [[ $FREQ -ge 4910 && $FREQ -le 4980 ]]; then + echo $(( ($FREQ - 4000) / 5 )) + elif [[ $FREQ -le 45000 ]]; then + echo $(( ($FREQ - 5000) / 5 )) + elif [[ $FREQ -ge 58320 && $FREQ -le 64800 ]]; then + echo $(( ($FREQ - 56160) / 2160 )) + else + echo 0 + fi +} + +is_5ghz_frequency() { + [[ $1 =~ ^(49[0-9]{2})|(5[0-9]{3})$ ]] +} + +is_wifi_connected() { + if [[ $USE_IWCONFIG -eq 0 ]]; then + iw dev "$1" link 2>&1 | grep -E '^Connected to' > /dev/null 2>&1 && return 0 + else + iwconfig "$1" 2>&1 | grep -E 'Access Point: [0-9a-fA-F]{2}:' > /dev/null 2>&1 && return 0 + fi + return 1 +} + +is_macaddr() { + echo "$1" | grep -E "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$" > /dev/null 2>&1 +} + +is_unicast_macaddr() { + local x + is_macaddr "$1" || return 1 + x=$(echo "$1" | cut -d: -f1) + x=$(printf '%d' "0x${x}") + [[ $(expr $x % 2) -eq 0 ]] +} + +get_macaddr() { + is_interface "$1" || return + cat "/sys/class/net/${1}/address" +} + +get_mtu() { + is_interface "$1" || return + cat "/sys/class/net/${1}/mtu" +} + +alloc_new_iface() { + local prefix=$1 + local i=0 + + mutex_lock + while :; do + if ! is_interface $prefix$i && [[ ! -f $COMMON_CONFDIR/ifaces/$prefix$i ]]; then + mkdir -p $COMMON_CONFDIR/ifaces + touch $COMMON_CONFDIR/ifaces/$prefix$i + echo $prefix$i + mutex_unlock + return + fi + i=$((i + 1)) + done + mutex_unlock +} + +dealloc_iface() { + rm -f $COMMON_CONFDIR/ifaces/$1 +} + +get_all_macaddrs() { + cat /sys/class/net/*/address +} + +get_new_macaddr() { + local OLDMAC NEWMAC LAST_BYTE i + OLDMAC=$(get_macaddr "$1") + LAST_BYTE=$(printf %d 0x${OLDMAC##*:}) + mutex_lock + for i in {1..255}; do + NEWMAC="${OLDMAC%:*}:$(printf %02x $(( ($LAST_BYTE + $i) % 256 )))" + (get_all_macaddrs | grep "$NEWMAC" > /dev/null 2>&1) || break + done + mutex_unlock + echo $NEWMAC +} + +# start haveged when needed +haveged_watchdog() { + local show_warn=1 + while :; do + mutex_lock + if [[ $(cat /proc/sys/kernel/random/entropy_avail) -lt 1000 ]]; then + if ! which haveged > /dev/null 2>&1; then + if [[ $show_warn -eq 1 ]]; then + echo "WARN: Low entropy detected. We recommend you to install \`haveged'" + show_warn=0 + fi + elif ! pidof haveged > /dev/null 2>&1; then + echo "Low entropy detected, starting haveged" + # boost low-entropy + haveged -w 1024 -p $COMMON_CONFDIR/haveged.pid + fi + fi + mutex_unlock + sleep 2 + done +} + +NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf +NM_OLDER_VERSION=1 + +networkmanager_exists() { + local NM_VER + which nmcli > /dev/null 2>&1 || return 1 + NM_VER=$(nmcli -v | grep -m1 -oE '[0-9]+(\.[0-9]+)*\.[0-9]+') + version_cmp $NM_VER 0.9.9 + if [[ $? -eq 1 ]]; then + NM_OLDER_VERSION=1 + else + NM_OLDER_VERSION=0 + fi + return 0 +} + +networkmanager_is_running() { + local NMCLI_OUT + networkmanager_exists || return 1 + if [[ $NM_OLDER_VERSION -eq 1 ]]; then + NMCLI_OUT=$(nmcli -t -f RUNNING nm 2>&1 | grep -E '^running$') + else + NMCLI_OUT=$(nmcli -t -f RUNNING g 2>&1 | grep -E '^running$') + fi + [[ -n "$NMCLI_OUT" ]] +} + +networkmanager_knows_iface() { + # check if the interface $1 is known to NetworkManager + # an interface may exist but may not be known to NetworkManager if it is in a different network namespace than NetworkManager + nmcli -t -f DEVICE d 2>&1 | grep -Fxq "$1" +} + +networkmanager_iface_is_unmanaged() { + is_interface "$1" || return 2 + networkmanager_knows_iface "$1" || return 0 + (nmcli -t -f DEVICE,STATE d 2>&1 | grep -E "^$1:unmanaged$" > /dev/null 2>&1) || return 1 +} + +ADDED_UNMANAGED= + +networkmanager_add_unmanaged() { + local MAC UNMANAGED WAS_EMPTY x + networkmanager_exists || return 1 + + [[ -d ${NETWORKMANAGER_CONF%/*} ]] || mkdir -p ${NETWORKMANAGER_CONF%/*} + [[ -f ${NETWORKMANAGER_CONF} ]] || touch ${NETWORKMANAGER_CONF} + + if [[ $NM_OLDER_VERSION -eq 1 ]]; then + if [[ -z "$2" ]]; then + MAC=$(get_macaddr "$1") + else + MAC="$2" + fi + [[ -z "$MAC" ]] && return 1 + fi + + mutex_lock + UNMANAGED=$(grep -m1 -Eo '^unmanaged-devices=[[:alnum:]:;,-]*' /etc/NetworkManager/NetworkManager.conf) + + WAS_EMPTY=0 + [[ -z "$UNMANAGED" ]] && WAS_EMPTY=1 + UNMANAGED=$(echo "$UNMANAGED" | sed 's/unmanaged-devices=//' | tr ';,' ' ') + + # if it exists, do nothing + for x in $UNMANAGED; do + if [[ $x == "mac:${MAC}" ]] || + [[ $NM_OLDER_VERSION -eq 0 && $x == "interface-name:${1}" ]]; then + mutex_unlock + return 2 + fi + done + + if [[ $NM_OLDER_VERSION -eq 1 ]]; then + UNMANAGED="${UNMANAGED} mac:${MAC}" + else + UNMANAGED="${UNMANAGED} interface-name:${1}" + fi + + UNMANAGED=$(echo $UNMANAGED | sed -e 's/^ //') + UNMANAGED="${UNMANAGED// /;}" + UNMANAGED="unmanaged-devices=${UNMANAGED}" + + if ! grep -E '^\[keyfile\]' ${NETWORKMANAGER_CONF} > /dev/null 2>&1; then + echo -e "\n\n[keyfile]\n${UNMANAGED}" >> ${NETWORKMANAGER_CONF} + elif [[ $WAS_EMPTY -eq 1 ]]; then + sed -e "s/^\(\[keyfile\].*\)$/\1\n${UNMANAGED}/" -i ${NETWORKMANAGER_CONF} + else + sed -e "s/^unmanaged-devices=.*/${UNMANAGED}/" -i ${NETWORKMANAGER_CONF} + fi + + ADDED_UNMANAGED="${ADDED_UNMANAGED} ${1} " + mutex_unlock + + local nm_pid=$(pidof NetworkManager) + [[ -n "$nm_pid" ]] && kill -HUP $nm_pid + + return 0 +} + +networkmanager_rm_unmanaged() { + local MAC UNMANAGED + networkmanager_exists || return 1 + [[ ! -f ${NETWORKMANAGER_CONF} ]] && return 1 + + if [[ $NM_OLDER_VERSION -eq 1 ]]; then + if [[ -z "$2" ]]; then + MAC=$(get_macaddr "$1") + else + MAC="$2" + fi + [[ -z "$MAC" ]] && return 1 + fi + + mutex_lock + UNMANAGED=$(grep -m1 -Eo '^unmanaged-devices=[[:alnum:]:;,-]*' /etc/NetworkManager/NetworkManager.conf | sed 's/unmanaged-devices=//' | tr ';,' ' ') + + if [[ -z "$UNMANAGED" ]]; then + mutex_unlock + return 1 + fi + + [[ -n "$MAC" ]] && UNMANAGED=$(echo $UNMANAGED | sed -e "s/mac:${MAC}\( \|$\)//g") + UNMANAGED=$(echo $UNMANAGED | sed -e "s/interface-name:${1}\( \|$\)//g") + UNMANAGED=$(echo $UNMANAGED | sed -e 's/ $//') + + if [[ -z "$UNMANAGED" ]]; then + sed -e "/^unmanaged-devices=.*/d" -i ${NETWORKMANAGER_CONF} + else + UNMANAGED="${UNMANAGED// /;}" + UNMANAGED="unmanaged-devices=${UNMANAGED}" + sed -e "s/^unmanaged-devices=.*/${UNMANAGED}/" -i ${NETWORKMANAGER_CONF} + fi + + ADDED_UNMANAGED="${ADDED_UNMANAGED/ ${1} /}" + mutex_unlock + + local nm_pid=$(pidof NetworkManager) + [[ -n "$nm_pid" ]] && kill -HUP $nm_pid + + return 0 +} + +networkmanager_fix_unmanaged() { + [[ -f ${NETWORKMANAGER_CONF} ]] || return + + mutex_lock + sed -e "/^unmanaged-devices=.*/d" -i ${NETWORKMANAGER_CONF} + mutex_unlock + + local nm_pid=$(pidof NetworkManager) + [[ -n "$nm_pid" ]] && kill -HUP $nm_pid +} + +networkmanager_rm_unmanaged_if_needed() { + [[ $ADDED_UNMANAGED =~ .*\ ${1}\ .* ]] && networkmanager_rm_unmanaged $1 $2 +} + +networkmanager_wait_until_unmanaged() { + local RES + networkmanager_is_running || return 1 + while :; do + networkmanager_iface_is_unmanaged "$1" + RES=$? + [[ $RES -eq 0 ]] && break + [[ $RES -eq 2 ]] && die "Interface '${1}' does not exist. + It's probably renamed by a udev rule." + sleep 1 + done + sleep 2 + return 0 +} + + +CHANNEL=default +GATEWAY=192.168.12.1 +WPA_VERSION=1+2 +ETC_HOSTS=0 +ADDN_HOSTS= +DHCP_DNS=gateway +NO_DNS=0 +NO_DNSMASQ=0 +DNS_PORT= +HIDDEN=0 +MAC_FILTER=0 +MAC_FILTER_ACCEPT=/etc/hostapd/hostapd.accept +ISOLATE_CLIENTS=0 +SHARE_METHOD=nat +IEEE80211N=0 +IEEE80211AC=0 +HT_CAPAB='[HT40+]' +VHT_CAPAB= +DRIVER=nl80211 +NO_VIRT=0 +COUNTRY= +FREQ_BAND=2.4 +NEW_MACADDR= +DAEMONIZE=0 +DAEMON_PIDFILE= +DAEMON_LOGFILE=/dev/null +NO_HAVEGED=0 +USE_PSK=0 + +HOSTAPD_DEBUG_ARGS= +REDIRECT_TO_LOCALHOST=0 + +CONFIG_OPTS=(CHANNEL GATEWAY WPA_VERSION ETC_HOSTS DHCP_DNS NO_DNS NO_DNSMASQ HIDDEN MAC_FILTER MAC_FILTER_ACCEPT ISOLATE_CLIENTS + SHARE_METHOD IEEE80211N IEEE80211AC HT_CAPAB VHT_CAPAB DRIVER NO_VIRT COUNTRY FREQ_BAND + NEW_MACADDR DAEMONIZE DAEMON_PIDFILE DAEMON_LOGFILE NO_HAVEGED WIFI_IFACE INTERNET_IFACE + SSID PASSPHRASE USE_PSK) + +FIX_UNMANAGED=0 +LIST_RUNNING=0 +STOP_ID= +LIST_CLIENTS_ID= + +STORE_CONFIG= +LOAD_CONFIG= + +CONFDIR= +WIFI_IFACE= +VWIFI_IFACE= +INTERNET_IFACE= +BRIDGE_IFACE= +OLD_MACADDR= +IP_ADDRS= +ROUTE_ADDRS= + +HAVEGED_WATCHDOG_PID= + +_cleanup() { + local PID x + + trap "" SIGINT SIGUSR1 SIGUSR2 EXIT + mutex_lock + disown -a + + # kill haveged_watchdog + [[ -n "$HAVEGED_WATCHDOG_PID" ]] && kill $HAVEGED_WATCHDOG_PID + + # kill processes + for x in $CONFDIR/*.pid; do + # even if the $CONFDIR is empty, the for loop will assign + # a value in $x. so we need to check if the value is a file + [[ -f $x ]] && kill -9 $(cat $x) + done + + rm -rf $CONFDIR + + local found=0 + for x in $(list_running_conf); do + if [[ -f $x/nat_internet_iface && $(cat $x/nat_internet_iface) == $INTERNET_IFACE ]]; then + found=1 + break + fi + done + + if [[ $found -eq 0 ]]; then + cp -f $COMMON_CONFDIR/${INTERNET_IFACE}_forwarding \ + /proc/sys/net/ipv4/conf/$INTERNET_IFACE/forwarding + rm -f $COMMON_CONFDIR/${INTERNET_IFACE}_forwarding + fi + + # if we are the last create_ap instance then set back the common values + if ! has_running_instance; then + # kill common processes + for x in $COMMON_CONFDIR/*.pid; do + [[ -f $x ]] && kill -9 $(cat $x) + done + + # set old ip_forward + if [[ -f $COMMON_CONFDIR/ip_forward ]]; then + cp -f $COMMON_CONFDIR/ip_forward /proc/sys/net/ipv4 + rm -f $COMMON_CONFDIR/ip_forward + fi + + # set old bridge-nf-call-iptables + if [[ -f $COMMON_CONFDIR/bridge-nf-call-iptables ]]; then + if [[ -e /proc/sys/net/bridge/bridge-nf-call-iptables ]]; then + cp -f $COMMON_CONFDIR/bridge-nf-call-iptables /proc/sys/net/bridge + fi + rm -f $COMMON_CONFDIR/bridge-nf-call-iptables + fi + + rm -rf $COMMON_CONFDIR + fi + + if [[ "$SHARE_METHOD" != "none" ]]; then + if [[ "$SHARE_METHOD" == "nat" ]]; then + iptables -w -t nat -D POSTROUTING -s ${GATEWAY%.*}.0/24 ! -o ${WIFI_IFACE} -j MASQUERADE + iptables -w -D FORWARD -i ${WIFI_IFACE} -s ${GATEWAY%.*}.0/24 -j ACCEPT + iptables -w -D FORWARD -i ${INTERNET_IFACE} -d ${GATEWAY%.*}.0/24 -j ACCEPT + elif [[ "$SHARE_METHOD" == "bridge" ]]; then + if ! is_bridge_interface $INTERNET_IFACE; then + ip link set dev $BRIDGE_IFACE down + ip link set dev $INTERNET_IFACE down + ip link set dev $INTERNET_IFACE promisc off + ip link set dev $INTERNET_IFACE nomaster + ip link delete $BRIDGE_IFACE type bridge + ip addr flush $INTERNET_IFACE + ip link set dev $INTERNET_IFACE up + dealloc_iface $BRIDGE_IFACE + + for x in "${IP_ADDRS[@]}"; do + x="${x/inet/}" + x="${x/secondary/}" + x="${x/dynamic/}" + x=$(echo $x | sed 's/\([0-9]\)sec/\1/g') + x="${x/${INTERNET_IFACE}/}" + ip addr add $x dev $INTERNET_IFACE + done + + ip route flush dev $INTERNET_IFACE + + for x in "${ROUTE_ADDRS[@]}"; do + [[ -z "$x" ]] && continue + [[ "$x" == default* ]] && continue + ip route add $x dev $INTERNET_IFACE + done + + for x in "${ROUTE_ADDRS[@]}"; do + [[ -z "$x" ]] && continue + [[ "$x" != default* ]] && continue + ip route add $x dev $INTERNET_IFACE + done + + networkmanager_rm_unmanaged_if_needed $INTERNET_IFACE + fi + fi + fi + + if [[ "$SHARE_METHOD" != "bridge" ]]; then + if [[ $NO_DNS -eq 0 ]]; then + iptables -w -D INPUT -p tcp -m tcp --dport $DNS_PORT -j ACCEPT + iptables -w -D INPUT -p udp -m udp --dport $DNS_PORT -j ACCEPT + iptables -w -t nat -D PREROUTING -s ${GATEWAY%.*}.0/24 -d ${GATEWAY} \ + -p tcp -m tcp --dport 53 -j REDIRECT --to-ports $DNS_PORT + iptables -w -t nat -D PREROUTING -s ${GATEWAY%.*}.0/24 -d ${GATEWAY} \ + -p udp -m udp --dport 53 -j REDIRECT --to-ports $DNS_PORT + fi + iptables -w -D INPUT -p udp -m udp --dport 67 -j ACCEPT + fi + + if [[ $NO_VIRT -eq 0 ]]; then + if [[ -n "$VWIFI_IFACE" ]]; then + ip link set down dev ${VWIFI_IFACE} + ip addr flush ${VWIFI_IFACE} + networkmanager_rm_unmanaged_if_needed ${VWIFI_IFACE} ${OLD_MACADDR} + iw dev ${VWIFI_IFACE} del + dealloc_iface $VWIFI_IFACE + fi + else + ip link set down dev ${WIFI_IFACE} + ip addr flush ${WIFI_IFACE} + if [[ -n "$NEW_MACADDR" ]]; then + ip link set dev ${WIFI_IFACE} address ${OLD_MACADDR} + fi + networkmanager_rm_unmanaged_if_needed ${WIFI_IFACE} ${OLD_MACADDR} + fi + + mutex_unlock + cleanup_lock + + if [[ $RUNNING_AS_DAEMON -eq 1 && -n "$DAEMON_PIDFILE" && -f "$DAEMON_PIDFILE" ]]; then + rm $DAEMON_PIDFILE + fi +} + +cleanup() { + echo + echo -n "Doing cleanup.. " + _cleanup > /dev/null 2>&1 + echo "done" +} + +die() { + [[ -n "$1" ]] && echo -e "\nERROR: $1\n" >&2 + # send die signal to the main process + [[ $BASHPID -ne $$ ]] && kill -USR2 $$ + # we don't need to call cleanup because it's traped on EXIT + exit 1 +} + +clean_exit() { + # send clean_exit signal to the main process + [[ $BASHPID -ne $$ ]] && kill -USR1 $$ + # we don't need to call cleanup because it's traped on EXIT + exit 0 +} + +list_running_conf() { + local x + mutex_lock + for x in /tmp/create_ap.*; do + if [[ -f $x/pid && -f $x/wifi_iface && -d /proc/$(cat $x/pid) ]]; then + echo $x + fi + done + mutex_unlock +} + +list_running() { + local IFACE wifi_iface x + mutex_lock + for x in $(list_running_conf); do + IFACE=${x#*.} + IFACE=${IFACE%%.*} + wifi_iface=$(cat $x/wifi_iface) + + if [[ $IFACE == $wifi_iface ]]; then + echo $(cat $x/pid) $IFACE + else + echo $(cat $x/pid) $IFACE '('$(cat $x/wifi_iface)')' + fi + done + mutex_unlock +} + +get_wifi_iface_from_pid() { + list_running | awk '{print $1 " " $NF}' | tr -d '\(\)' | grep -E "^${1} " | cut -d' ' -f2 +} + +get_pid_from_wifi_iface() { + list_running | awk '{print $1 " " $NF}' | tr -d '\(\)' | grep -E " ${1}$" | cut -d' ' -f1 +} + +get_confdir_from_pid() { + local IFACE x + mutex_lock + for x in $(list_running_conf); do + if [[ $(cat $x/pid) == "$1" ]]; then + echo $x + break + fi + done + mutex_unlock +} + +print_client() { + local line ipaddr hostname + local mac="$1" + + if [[ -f $CONFDIR/dnsmasq.leases ]]; then + line=$(grep " $mac " $CONFDIR/dnsmasq.leases | tail -n 1) + ipaddr=$(echo $line | cut -d' ' -f3) + hostname=$(echo "$line" | cut -d' ' -f4) + fi + + [[ -z "$ipaddr" ]] && ipaddr="*" + [[ -z "$hostname" ]] && hostname="*" + + printf "%-20s %-18s %s\n" "$mac" "$ipaddr" "$hostname" +} + +list_clients() { + local wifi_iface pid + + # If PID is given, get the associated wifi iface + if [[ "$1" =~ ^[1-9][0-9]*$ ]]; then + pid="$1" + wifi_iface=$(get_wifi_iface_from_pid "$pid") + [[ -z "$wifi_iface" ]] && die "'$pid' is not the pid of a running $PROGNAME instance." + fi + + [[ -z "$wifi_iface" ]] && wifi_iface="$1" + is_wifi_interface "$wifi_iface" || die "'$wifi_iface' is not a WiFi interface." + + [[ -z "$pid" ]] && pid=$(get_pid_from_wifi_iface "$wifi_iface") + [[ -z "$pid" ]] && die "'$wifi_iface' is not used from $PROGNAME instance.\n\ + Maybe you need to pass the virtual interface instead.\n\ + Use --list-running to find it out." + [[ -z "$CONFDIR" ]] && CONFDIR=$(get_confdir_from_pid "$pid") + + if [[ $USE_IWCONFIG -eq 0 ]]; then + local awk_cmd='($1 ~ /Station$/) {print $2}' + local client_list=$(iw dev "$wifi_iface" station dump | awk "$awk_cmd") + + if [[ -z "$client_list" ]]; then + echo "No clients connected" + return + fi + + printf "%-20s %-18s %s\n" "MAC" "IP" "Hostname" + + local mac + for mac in $client_list; do + print_client $mac + done + else + die "This option is not supported for the current driver." + fi +} + +has_running_instance() { + local PID x + + mutex_lock + for x in /tmp/create_ap.*; do + if [[ -f $x/pid ]]; then + PID=$(cat $x/pid) + if [[ -d /proc/$PID ]]; then + mutex_unlock + return 0 + fi + fi + done + mutex_lock + + return 1 +} + +is_running_pid() { + list_running | grep -E "^${1} " > /dev/null 2>&1 +} + +send_stop() { + local x + + mutex_lock + # send stop signal to specific pid + if is_running_pid $1; then + kill -USR1 $1 + mutex_unlock + return + fi + + # send stop signal to specific interface + for x in $(list_running | grep -E " \(?${1}( |\)?\$)" | cut -f1 -d' '); do + kill -USR1 $x + done + mutex_unlock +} + +# Storing configs +write_config() { + local i=1 + + if ! eval 'echo -n > "$STORE_CONFIG"' > /dev/null 2>&1; then + echo "ERROR: Unable to create config file $STORE_CONFIG" >&2 + exit 1 + fi + + WIFI_IFACE=$1 + if [[ "$SHARE_METHOD" == "none" ]]; then + SSID="$2" + PASSPHRASE="$3" + else + INTERNET_IFACE="$2" + SSID="$3" + PASSPHRASE="$4" + fi + + for config_opt in "${CONFIG_OPTS[@]}"; do + eval echo $config_opt=\$$config_opt + done >> "$STORE_CONFIG" + + echo -e "Config options written to '$STORE_CONFIG'" + exit 0 +} + +is_config_opt() { + local elem opt="$1" + + for elem in "${CONFIG_OPTS[@]}"; do + if [[ "$elem" == "$opt" ]]; then + return 0 + fi + done + return 1 +} + +# Load options from config file +read_config() { + local opt_name opt_val line + + while read line; do + # Read switches and their values + opt_name="${line%%=*}" + opt_val="${line#*=}" + if is_config_opt "$opt_name" ; then + eval $opt_name="\$opt_val" + else + echo "WARN: Unrecognized configuration entry $opt_name" >&2 + fi + done < "$LOAD_CONFIG" +} + + +ARGS=( "$@" ) + +# Preprocessing for --config before option-parsing starts +for ((i=0; i<$#; i++)); do + if [[ "${ARGS[i]}" = "--config" ]]; then + if [[ -f "${ARGS[i+1]}" ]]; then + LOAD_CONFIG="${ARGS[i+1]}" + read_config + else + echo "ERROR: No config file found at given location" >&2 + exit 1 + fi + break + fi +done + +GETOPT_ARGS=$(getopt -o hc:w:g:de:nm: -l "help","hidden","hostapd-debug:","redirect-to-localhost","mac-filter","mac-filter-accept:","isolate-clients","ieee80211n","ieee80211ac","ht_capab:","vht_capab:","driver:","no-virt","fix-unmanaged","country:","freq-band:","mac:","dhcp-dns:","daemon","pidfile:","logfile:","stop:","list","list-running","list-clients:","version","psk","no-haveged","no-dns","no-dnsmasq","mkconfig:","config:" -n "$PROGNAME" -- "$@") +[[ $? -ne 0 ]] && exit 1 +eval set -- "$GETOPT_ARGS" + +while :; do + case "$1" in + -h|--help) + usage + exit 0 + ;; + --version) + echo $VERSION + exit 0 + ;; + --hidden) + shift + HIDDEN=1 + ;; + --mac-filter) + shift + MAC_FILTER=1 + ;; + --mac-filter-accept) + shift + MAC_FILTER_ACCEPT="$1" + shift + ;; + --isolate-clients) + shift + ISOLATE_CLIENTS=1 + ;; + -c) + shift + CHANNEL="$1" + shift + ;; + -w) + shift + WPA_VERSION="$1" + [[ "$WPA_VERSION" == "2+1" ]] && WPA_VERSION=1+2 + shift + ;; + -g) + shift + GATEWAY="$1" + shift + ;; + -d) + shift + ETC_HOSTS=1 + ;; + -e) + shift + ADDN_HOSTS="$1" + shift + ;; + -n) + shift + SHARE_METHOD=none + ;; + -m) + shift + SHARE_METHOD="$1" + shift + ;; + --ieee80211n) + shift + IEEE80211N=1 + ;; + --ieee80211ac) + shift + IEEE80211AC=1 + ;; + --ht_capab) + shift + HT_CAPAB="$1" + shift + ;; + --vht_capab) + shift + VHT_CAPAB="$1" + shift + ;; + --driver) + shift + DRIVER="$1" + shift + ;; + --no-virt) + shift + NO_VIRT=1 + ;; + --fix-unmanaged) + shift + FIX_UNMANAGED=1 + ;; + --country) + shift + COUNTRY="$1" + shift + ;; + --freq-band) + shift + FREQ_BAND="$1" + shift + ;; + --mac) + shift + NEW_MACADDR="$1" + shift + ;; + --dhcp-dns) + shift + DHCP_DNS="$1" + shift + ;; + --daemon) + shift + DAEMONIZE=1 + ;; + --pidfile) + shift + DAEMON_PIDFILE="$1" + shift + ;; + --logfile) + shift + DAEMON_LOGFILE="$1" + shift + ;; + --stop) + shift + STOP_ID="$1" + shift + ;; + --list) + shift + LIST_RUNNING=1 + echo -e "WARN: --list is deprecated, use --list-running instead.\n" >&2 + ;; + --list-running) + shift + LIST_RUNNING=1 + ;; + --list-clients) + shift + LIST_CLIENTS_ID="$1" + shift + ;; + --no-haveged) + shift + NO_HAVEGED=1 + ;; + --psk) + shift + USE_PSK=1 + ;; + --no-dns) + shift + NO_DNS=1 + ;; + --no-dnsmasq) + shift + NO_DNSMASQ=1 + ;; + --redirect-to-localhost) + shift + REDIRECT_TO_LOCALHOST=1 + ;; + --hostapd-debug) + shift + if [ "x$1" = "x1" ]; then + HOSTAPD_DEBUG_ARGS="-d" + elif [ "x$1" = "x2" ]; then + HOSTAPD_DEBUG_ARGS="-dd" + else + printf "Error: argument for --hostapd-debug expected 1 or 2, got %s\n" "$1" + exit 1 + fi + shift + ;; + --mkconfig) + shift + STORE_CONFIG="$1" + shift + ;; + --config) + shift + shift + ;; + --) + shift + break + ;; + esac +done + +# Load positional args from config file, if needed +if [[ -n "$LOAD_CONFIG" && $# -eq 0 ]]; then + i=0 + # set arguments in order + for x in WIFI_IFACE INTERNET_IFACE SSID PASSPHRASE; do + if eval "[[ -n \"\$${x}\" ]]"; then + eval "set -- \"\${@:1:$i}\" \"\$${x}\"" + ((i++)) + fi + # we unset the variable to avoid any problems later + eval "unset $x" + done +fi + +# Check if required number of positional args are present +if [[ $# -lt 1 && $FIX_UNMANAGED -eq 0 && -z "$STOP_ID" && + $LIST_RUNNING -eq 0 && -z "$LIST_CLIENTS_ID" ]]; then + usage >&2 + exit 1 +fi + +# Set NO_DNS, if dnsmasq is disabled +if [[ $NO_DNSMASQ -eq 1 ]]; then + NO_DNS=1 +fi + +trap "cleanup_lock" EXIT + +if ! init_lock; then + echo "ERROR: Failed to initialize lock" >&2 + exit 1 +fi + +# if the user press ctrl+c or we get USR1 signal +# then run clean_exit() +trap "clean_exit" SIGINT SIGUSR1 +# if we get USR2 signal then run die(). +trap "die" SIGUSR2 + +[[ -n "$STORE_CONFIG" ]] && write_config "$@" + +if [[ $LIST_RUNNING -eq 1 ]]; then + echo -e "List of running $PROGNAME instances:\n" + list_running + exit 0 +fi + +if [[ -n "$LIST_CLIENTS_ID" ]]; then + list_clients "$LIST_CLIENTS_ID" + exit 0 +fi + +if [[ $(id -u) -ne 0 ]]; then + echo "You must run it as root." >&2 + exit 1 +fi + +if [[ -n "$STOP_ID" ]]; then + echo "Trying to kill $PROGNAME instance associated with $STOP_ID..." + send_stop "$STOP_ID" + exit 0 +fi + +if [[ $FIX_UNMANAGED -eq 1 ]]; then + echo "Trying to fix unmanaged status in NetworkManager..." + networkmanager_fix_unmanaged + exit 0 +fi + +if [[ $DAEMONIZE -eq 1 && $RUNNING_AS_DAEMON -eq 0 ]]; then + # Assume we're running underneath a service manager if PIDFILE is set + # and don't clobber it's output with a useless message + if [ -z "$DAEMON_PIDFILE" ]; then + echo "Running as Daemon..." + fi + # run a detached create_ap + RUNNING_AS_DAEMON=1 setsid "$0" "${ARGS[@]}" >>$DAEMON_LOGFILE 2>&1 & + exit 0 +elif [[ $RUNNING_AS_DAEMON -eq 1 && -n "$DAEMON_PIDFILE" ]]; then + echo $$ >$DAEMON_PIDFILE +fi + +if [[ $FREQ_BAND != 2.4 && $FREQ_BAND != 5 ]]; then + echo "ERROR: Invalid frequency band" >&2 + exit 1 +fi + +if [[ $CHANNEL == default ]]; then + if [[ $FREQ_BAND == 2.4 ]]; then + CHANNEL=1 + else + CHANNEL=36 + fi +fi + +if [[ $FREQ_BAND != 5 && $CHANNEL -gt 14 ]]; then + echo "Channel number is greater than 14, assuming 5GHz frequency band" + FREQ_BAND=5 +fi + +WIFI_IFACE=$1 + +if ! is_wifi_interface ${WIFI_IFACE}; then + echo "ERROR: '${WIFI_IFACE}' is not a WiFi interface" >&2 + exit 1 +fi + +if ! can_be_ap ${WIFI_IFACE}; then + echo "ERROR: Your adapter does not support AP (master) mode" >&2 + exit 1 +fi + +if ! can_be_sta_and_ap ${WIFI_IFACE}; then + if is_wifi_connected ${WIFI_IFACE}; then + echo "ERROR: Your adapter can not be a station (i.e. be connected) and an AP at the same time" >&2 + exit 1 + elif [[ $NO_VIRT -eq 0 ]]; then + echo "WARN: Your adapter does not fully support AP virtual interface, enabling --no-virt" >&2 + NO_VIRT=1 + fi +fi + +HOSTAPD=$(which hostapd) + +if [[ ! -x "$HOSTAPD" ]]; then + echo "ERROR: hostapd not found." >&2 + exit 1 +fi + +if [[ $(get_adapter_kernel_module ${WIFI_IFACE}) =~ ^(8192[cd][ue]|8723a[sue])$ ]]; then + if ! strings "$HOSTAPD" | grep -m1 rtl871xdrv > /dev/null 2>&1; then + echo "ERROR: You need to patch your hostapd with rtl871xdrv patches." >&2 + exit 1 + fi + + if [[ $DRIVER != "rtl871xdrv" ]]; then + echo "WARN: Your adapter needs rtl871xdrv, enabling --driver=rtl871xdrv" >&2 + DRIVER=rtl871xdrv + fi +fi + +if [[ "$SHARE_METHOD" != "nat" && "$SHARE_METHOD" != "bridge" && "$SHARE_METHOD" != "none" ]]; then + echo "ERROR: Wrong Internet sharing method" >&2 + echo + usage >&2 + exit 1 +fi + +if [[ -n "$NEW_MACADDR" ]]; then + if ! is_macaddr "$NEW_MACADDR"; then + echo "ERROR: '${NEW_MACADDR}' is not a valid MAC address" >&2 + exit 1 + fi + + if ! is_unicast_macaddr "$NEW_MACADDR"; then + echo "ERROR: The first byte of MAC address (${NEW_MACADDR}) must be even" >&2 + exit 1 + fi + + if [[ $(get_all_macaddrs | grep -c ${NEW_MACADDR}) -ne 0 ]]; then + echo "WARN: MAC address '${NEW_MACADDR}' already exists. Because of this, you may encounter some problems" >&2 + fi +fi + +if [[ "$SHARE_METHOD" != "none" ]]; then + MIN_REQUIRED_ARGS=2 +else + MIN_REQUIRED_ARGS=1 +fi + +if [[ $# -gt $MIN_REQUIRED_ARGS ]]; then + if [[ "$SHARE_METHOD" != "none" ]]; then + if [[ $# -ne 3 && $# -ne 4 ]]; then + usage >&2 + exit 1 + fi + INTERNET_IFACE="$2" + SSID="$3" + PASSPHRASE="$4" + else + if [[ $# -ne 2 && $# -ne 3 ]]; then + usage >&2 + exit 1 + fi + SSID="$2" + PASSPHRASE="$3" + fi +else + if [[ "$SHARE_METHOD" != "none" ]]; then + if [[ $# -ne 2 ]]; then + usage >&2 + exit 1 + fi + INTERNET_IFACE="$2" + fi + if tty -s; then + while :; do + read -p "SSID: " SSID + if [[ ${#SSID} -lt 1 || ${#SSID} -gt 32 ]]; then + echo "ERROR: Invalid SSID length ${#SSID} (expected 1..32)" >&2 + continue + fi + break + done + while :; do + if [[ $USE_PSK -eq 0 ]]; then + read -p "Passphrase: " -s PASSPHRASE + echo + if [[ ${#PASSPHRASE} -gt 0 && ${#PASSPHRASE} -lt 8 ]] || [[ ${#PASSPHRASE} -gt 63 ]]; then + echo "ERROR: Invalid passphrase length ${#PASSPHRASE} (expected 8..63)" >&2 + continue + fi + read -p "Retype passphrase: " -s PASSPHRASE2 + echo + if [[ "$PASSPHRASE" != "$PASSPHRASE2" ]]; then + echo "Passphrases do not match." + else + break + fi + else + read -p "PSK: " PASSPHRASE + echo + if [[ ${#PASSPHRASE} -gt 0 && ${#PASSPHRASE} -ne 64 ]]; then + echo "ERROR: Invalid pre-shared-key length ${#PASSPHRASE} (expected 64)" >&2 + continue + fi + fi + done + else + read SSID + read PASSPHRASE + fi +fi + +if [[ "$SHARE_METHOD" != "none" ]] && ! is_interface $INTERNET_IFACE; then + echo "ERROR: '${INTERNET_IFACE}' is not an interface" >&2 + exit 1 +fi + +if [[ ${#SSID} -lt 1 || ${#SSID} -gt 32 ]]; then + echo "ERROR: Invalid SSID length ${#SSID} (expected 1..32)" >&2 + exit 1 +fi + +if [[ $USE_PSK -eq 0 ]]; then + if [[ ${#PASSPHRASE} -gt 0 && ${#PASSPHRASE} -lt 8 ]] || [[ ${#PASSPHRASE} -gt 63 ]]; then + echo "ERROR: Invalid passphrase length ${#PASSPHRASE} (expected 8..63)" >&2 + exit 1 + fi +elif [[ ${#PASSPHRASE} -gt 0 && ${#PASSPHRASE} -ne 64 ]]; then + echo "ERROR: Invalid pre-shared-key length ${#PASSPHRASE} (expected 64)" >&2 + exit 1 +fi + +if [[ $(get_adapter_kernel_module ${WIFI_IFACE}) =~ ^rtl[0-9].*$ ]]; then + if [[ -n "$PASSPHRASE" ]]; then + echo "WARN: Realtek drivers usually have problems with WPA1, enabling -w 2" >&2 + WPA_VERSION=2 + fi + echo "WARN: If AP doesn't work, please read: howto/realtek.md" >&2 +fi + +if [[ $NO_VIRT -eq 1 && "$WIFI_IFACE" == "$INTERNET_IFACE" ]]; then + echo -n "ERROR: You can not share your connection from the same" >&2 + echo " interface if you are using --no-virt option." >&2 + exit 1 +fi + +mutex_lock +trap "cleanup" EXIT +CONFDIR=$(mktemp -d /tmp/create_ap.${WIFI_IFACE}.conf.XXXXXXXX) +echo "Config dir: $CONFDIR" +echo "PID: $$" +echo $$ > $CONFDIR/pid + +# to make --list-running work from any user, we must give read +# permissions to $CONFDIR and $CONFDIR/pid +chmod 755 $CONFDIR +chmod 444 $CONFDIR/pid + +COMMON_CONFDIR=/tmp/create_ap.common.conf +mkdir -p $COMMON_CONFDIR + +if [[ "$SHARE_METHOD" == "nat" ]]; then + echo $INTERNET_IFACE > $CONFDIR/nat_internet_iface + cp_n /proc/sys/net/ipv4/conf/$INTERNET_IFACE/forwarding \ + $COMMON_CONFDIR/${INTERNET_IFACE}_forwarding +fi +cp_n /proc/sys/net/ipv4/ip_forward $COMMON_CONFDIR +if [[ -e /proc/sys/net/bridge/bridge-nf-call-iptables ]]; then + cp_n /proc/sys/net/bridge/bridge-nf-call-iptables $COMMON_CONFDIR +fi +mutex_unlock + +if [[ "$SHARE_METHOD" == "bridge" ]]; then + if is_bridge_interface $INTERNET_IFACE; then + BRIDGE_IFACE=$INTERNET_IFACE + else + BRIDGE_IFACE=$(alloc_new_iface br) + fi +fi + +if [[ $USE_IWCONFIG -eq 0 ]]; then + iw dev ${WIFI_IFACE} set power_save off +fi + +if [[ $NO_VIRT -eq 0 ]]; then + VWIFI_IFACE=$(alloc_new_iface ap) + + # in NetworkManager 0.9.9 and above we can set the interface as unmanaged without + # the need of MAC address, so we set it before we create the virtual interface. + if networkmanager_is_running && [[ $NM_OLDER_VERSION -eq 0 ]]; then + echo -n "Network Manager found, set ${VWIFI_IFACE} as unmanaged device... " + networkmanager_add_unmanaged ${VWIFI_IFACE} + # do not call networkmanager_wait_until_unmanaged because interface does not + # exist yet + echo "DONE" + fi + + if is_wifi_connected ${WIFI_IFACE}; then + WIFI_IFACE_FREQ=$(iw dev ${WIFI_IFACE} link | grep -i freq | awk '{print $2}') + WIFI_IFACE_CHANNEL=$(ieee80211_frequency_to_channel ${WIFI_IFACE_FREQ}) + echo -n "${WIFI_IFACE} is already associated with channel ${WIFI_IFACE_CHANNEL} (${WIFI_IFACE_FREQ} MHz)" + if is_5ghz_frequency $WIFI_IFACE_FREQ; then + FREQ_BAND=5 + else + FREQ_BAND=2.4 + fi + if [[ $WIFI_IFACE_CHANNEL -ne $CHANNEL ]]; then + echo ", fallback to channel ${WIFI_IFACE_CHANNEL}" + CHANNEL=$WIFI_IFACE_CHANNEL + else + echo + fi + fi + + VIRTDIEMSG="Maybe your WiFi adapter does not fully support virtual interfaces. + Try again with --no-virt." + echo -n "Creating a virtual WiFi interface... " + + if iw dev ${WIFI_IFACE} interface add ${VWIFI_IFACE} type __ap; then + # now we can call networkmanager_wait_until_unmanaged + networkmanager_is_running && [[ $NM_OLDER_VERSION -eq 0 ]] && networkmanager_wait_until_unmanaged ${VWIFI_IFACE} + echo "${VWIFI_IFACE} created." + else + VWIFI_IFACE= + die "$VIRTDIEMSG" + fi + OLD_MACADDR=$(get_macaddr ${VWIFI_IFACE}) + if [[ -z "$NEW_MACADDR" && $(get_all_macaddrs | grep -c ${OLD_MACADDR}) -ne 1 ]]; then + NEW_MACADDR=$(get_new_macaddr ${VWIFI_IFACE}) + fi + WIFI_IFACE=${VWIFI_IFACE} +else + OLD_MACADDR=$(get_macaddr ${WIFI_IFACE}) +fi + +mutex_lock +echo $WIFI_IFACE > $CONFDIR/wifi_iface +chmod 444 $CONFDIR/wifi_iface +mutex_unlock + +if [[ -n "$COUNTRY" && $USE_IWCONFIG -eq 0 ]]; then + iw reg set "$COUNTRY" +fi + +can_transmit_to_channel ${WIFI_IFACE} ${CHANNEL} || die "Your adapter can not transmit to channel ${CHANNEL}, frequency band ${FREQ_BAND}GHz." + +if networkmanager_exists && ! networkmanager_iface_is_unmanaged ${WIFI_IFACE}; then + echo -n "Network Manager found, set ${WIFI_IFACE} as unmanaged device... " + networkmanager_add_unmanaged ${WIFI_IFACE} + + if networkmanager_is_running; then + networkmanager_wait_until_unmanaged ${WIFI_IFACE} + fi + + echo "DONE" +fi + +[[ $HIDDEN -eq 1 ]] && echo "Access Point's SSID is hidden!" + +[[ $MAC_FILTER -eq 1 ]] && echo "MAC address filtering is enabled!" + +[[ $ISOLATE_CLIENTS -eq 1 ]] && echo "Access Point's clients will be isolated!" + +# hostapd config +cat << EOF > $CONFDIR/hostapd.conf +beacon_int=100 +ssid=${SSID} +interface=${WIFI_IFACE} +driver=${DRIVER} +channel=${CHANNEL} +ctrl_interface=$CONFDIR/hostapd_ctrl +ctrl_interface_group=0 +ignore_broadcast_ssid=$HIDDEN +ap_isolate=$ISOLATE_CLIENTS +EOF + +if [[ -n "$COUNTRY" ]]; then + cat << EOF >> $CONFDIR/hostapd.conf +country_code=${COUNTRY} +ieee80211d=1 +EOF +fi + +if [[ $FREQ_BAND == 2.4 ]]; then + echo "hw_mode=g" >> $CONFDIR/hostapd.conf +else + echo "hw_mode=a" >> $CONFDIR/hostapd.conf +fi + +if [[ $MAC_FILTER -eq 1 ]]; then + cat << EOF >> $CONFDIR/hostapd.conf +macaddr_acl=${MAC_FILTER} +accept_mac_file=${MAC_FILTER_ACCEPT} +EOF +fi + +if [[ $IEEE80211N -eq 1 ]]; then + cat << EOF >> $CONFDIR/hostapd.conf +ieee80211n=1 +ht_capab=${HT_CAPAB} +EOF +fi + +if [[ $IEEE80211AC -eq 1 ]]; then + echo "ieee80211ac=1" >> $CONFDIR/hostapd.conf +fi + +if [[ -n "$VHT_CAPAB" ]]; then + echo "vht_capab=${VHT_CAPAB}" >> $CONFDIR/hostapd.conf +fi + +if [[ $IEEE80211N -eq 1 ]] || [[ $IEEE80211AC -eq 1 ]]; then + echo "wmm_enabled=1" >> $CONFDIR/hostapd.conf +fi + +if [[ -n "$PASSPHRASE" ]]; then + [[ "$WPA_VERSION" == "1+2" ]] && WPA_VERSION=3 + if [[ $USE_PSK -eq 0 ]]; then + WPA_KEY_TYPE=passphrase + else + WPA_KEY_TYPE=psk + fi + cat << EOF >> $CONFDIR/hostapd.conf +wpa=${WPA_VERSION} +wpa_${WPA_KEY_TYPE}=${PASSPHRASE} +wpa_key_mgmt=WPA-PSK +wpa_pairwise=TKIP CCMP +rsn_pairwise=CCMP +EOF +fi + +if [[ "$SHARE_METHOD" == "bridge" ]]; then + echo "bridge=${BRIDGE_IFACE}" >> $CONFDIR/hostapd.conf +elif [[ $NO_DNSMASQ -eq 0 ]]; then + # dnsmasq config (dhcp + dns) + DNSMASQ_VER=$(dnsmasq -v | grep -m1 -oE '[0-9]+(\.[0-9]+)*\.[0-9]+') + version_cmp $DNSMASQ_VER 2.63 + if [[ $? -eq 1 ]]; then + DNSMASQ_BIND=bind-interfaces + else + DNSMASQ_BIND=bind-dynamic + fi + if [[ "$DHCP_DNS" == "gateway" ]]; then + DHCP_DNS="$GATEWAY" + fi + cat << EOF > $CONFDIR/dnsmasq.conf +listen-address=${GATEWAY} +${DNSMASQ_BIND} +dhcp-range=${GATEWAY%.*}.1,${GATEWAY%.*}.254,255.255.255.0,24h +dhcp-option-force=option:router,${GATEWAY} +dhcp-option-force=option:dns-server,${DHCP_DNS} +EOF + MTU=$(get_mtu $INTERNET_IFACE) + [[ -n "$MTU" ]] && echo "dhcp-option-force=option:mtu,${MTU}" >> $CONFDIR/dnsmasq.conf + [[ $ETC_HOSTS -eq 0 ]] && echo no-hosts >> $CONFDIR/dnsmasq.conf + [[ -n "$ADDN_HOSTS" ]] && echo "addn-hosts=${ADDN_HOSTS}" >> $CONFDIR/dnsmasq.conf + if [[ "$SHARE_METHOD" == "none" && "$REDIRECT_TO_LOCALHOST" == "1" ]]; then + cat << EOF >> $CONFDIR/dnsmasq.conf +address=/#/$GATEWAY +EOF + fi +fi + +# initialize WiFi interface +if [[ $NO_VIRT -eq 0 && -n "$NEW_MACADDR" ]]; then + ip link set dev ${WIFI_IFACE} address ${NEW_MACADDR} || die "$VIRTDIEMSG" +fi + +ip link set down dev ${WIFI_IFACE} || die "$VIRTDIEMSG" +ip addr flush ${WIFI_IFACE} || die "$VIRTDIEMSG" + +if [[ $NO_VIRT -eq 1 && -n "$NEW_MACADDR" ]]; then + ip link set dev ${WIFI_IFACE} address ${NEW_MACADDR} || die +fi + +if [[ "$SHARE_METHOD" != "bridge" ]]; then + ip link set up dev ${WIFI_IFACE} || die "$VIRTDIEMSG" + ip addr add ${GATEWAY}/24 broadcast ${GATEWAY%.*}.255 dev ${WIFI_IFACE} || die "$VIRTDIEMSG" +fi + +# enable Internet sharing +if [[ "$SHARE_METHOD" != "none" ]]; then + echo "Sharing Internet using method: $SHARE_METHOD" + if [[ "$SHARE_METHOD" == "nat" ]]; then + iptables -w -t nat -I POSTROUTING -s ${GATEWAY%.*}.0/24 ! -o ${WIFI_IFACE} -j MASQUERADE || die + iptables -w -I FORWARD -i ${WIFI_IFACE} -s ${GATEWAY%.*}.0/24 -j ACCEPT || die + iptables -w -I FORWARD -i ${INTERNET_IFACE} -d ${GATEWAY%.*}.0/24 -j ACCEPT || die + echo 1 > /proc/sys/net/ipv4/conf/$INTERNET_IFACE/forwarding || die + echo 1 > /proc/sys/net/ipv4/ip_forward || die + # to enable clients to establish PPTP connections we must + # load nf_nat_pptp module + modprobe nf_nat_pptp > /dev/null 2>&1 + elif [[ "$SHARE_METHOD" == "bridge" ]]; then + # disable iptables rules for bridged interfaces + if [[ -e /proc/sys/net/bridge/bridge-nf-call-iptables ]]; then + echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables + fi + + # to initialize the bridge interface correctly we need to do the following: + # + # 1) save the IPs and route table of INTERNET_IFACE + # 2) if NetworkManager is running set INTERNET_IFACE as unmanaged + # 3) create BRIDGE_IFACE and attach INTERNET_IFACE to it + # 4) set the previously saved IPs and route table to BRIDGE_IFACE + # + # we need the above because BRIDGE_IFACE is the master interface from now on + # and it must know where is connected, otherwise connection is lost. + if ! is_bridge_interface $INTERNET_IFACE; then + echo -n "Create a bridge interface... " + OLD_IFS="$IFS" + IFS=$'\n' + + IP_ADDRS=( $(ip addr show $INTERNET_IFACE | grep -A 1 -E 'inet[[:blank:]]' | paste - -) ) + ROUTE_ADDRS=( $(ip route show dev $INTERNET_IFACE) ) + + IFS="$OLD_IFS" + + if networkmanager_is_running; then + networkmanager_add_unmanaged $INTERNET_IFACE + networkmanager_wait_until_unmanaged $INTERNET_IFACE + fi + + # create bridge interface + ip link add name $BRIDGE_IFACE type bridge || die + ip link set dev $BRIDGE_IFACE up || die + # set 0ms forward delay + echo -n 0 > /sys/class/net/$BRIDGE_IFACE/bridge/forward_delay + + # attach internet interface to bridge interface + ip link set dev $INTERNET_IFACE promisc on || die + ip link set dev $INTERNET_IFACE up || die + ip link set dev $INTERNET_IFACE master $BRIDGE_IFACE || die + + ip addr flush $INTERNET_IFACE + for x in "${IP_ADDRS[@]}"; do + x="${x/inet/}" + x="${x/secondary/}" + x="${x/dynamic/}" + x=$(echo $x | sed 's/\([0-9]\)sec/\1/g') + x="${x/${INTERNET_IFACE}/}" + ip addr add $x dev $BRIDGE_IFACE || die + done + + # remove any existing entries that were added from 'ip addr add' + ip route flush dev $INTERNET_IFACE + ip route flush dev $BRIDGE_IFACE + + # we must first add the entries that specify the subnets and then the + # gateway entry, otherwise 'ip addr add' will return an error + for x in "${ROUTE_ADDRS[@]}"; do + [[ "$x" == default* ]] && continue + ip route add $x dev $BRIDGE_IFACE || die + done + + for x in "${ROUTE_ADDRS[@]}"; do + [[ "$x" != default* ]] && continue + ip route add $x dev $BRIDGE_IFACE || die + done + + echo "$BRIDGE_IFACE created." + fi + fi +else + echo "No Internet sharing" +fi + +# start dhcp + dns (optional) +if [[ "$SHARE_METHOD" != "bridge" ]]; then + if [[ $NO_DNS -eq 0 ]]; then + DNS_PORT=5353 + iptables -w -I INPUT -p tcp -m tcp --dport $DNS_PORT -j ACCEPT || die + iptables -w -I INPUT -p udp -m udp --dport $DNS_PORT -j ACCEPT || die + iptables -w -t nat -I PREROUTING -s ${GATEWAY%.*}.0/24 -d ${GATEWAY} \ + -p tcp -m tcp --dport 53 -j REDIRECT --to-ports $DNS_PORT || die + iptables -w -t nat -I PREROUTING -s ${GATEWAY%.*}.0/24 -d ${GATEWAY} \ + -p udp -m udp --dport 53 -j REDIRECT --to-ports $DNS_PORT || die + else + DNS_PORT=0 + fi + + if [[ $NO_DNSMASQ -eq 0 ]]; then + iptables -w -I INPUT -p udp -m udp --dport 67 -j ACCEPT || die + + if which complain > /dev/null 2>&1; then + # openSUSE's apparmor does not allow dnsmasq to read files. + # remove restriction. + complain dnsmasq + fi + + umask 0033 + dnsmasq -C $CONFDIR/dnsmasq.conf -x $CONFDIR/dnsmasq.pid -l $CONFDIR/dnsmasq.leases -p $DNS_PORT || die + umask $SCRIPT_UMASK + fi +fi + +# start access point +echo "hostapd command-line interface: hostapd_cli -p $CONFDIR/hostapd_ctrl" + +if [[ $NO_HAVEGED -eq 0 ]]; then + haveged_watchdog & + HAVEGED_WATCHDOG_PID=$! +fi + +# start hostapd (use stdbuf when available for no delayed output in programs that redirect stdout) +STDBUF_PATH=`which stdbuf` +if [ $? -eq 0 ]; then + STDBUF_PATH=$STDBUF_PATH" -oL" +fi +$STDBUF_PATH $HOSTAPD $HOSTAPD_DEBUG_ARGS $CONFDIR/hostapd.conf & +HOSTAPD_PID=$! +echo $HOSTAPD_PID > $CONFDIR/hostapd.pid + +if ! wait $HOSTAPD_PID; then + echo -e "\nError: Failed to run hostapd, maybe a program is interfering." >&2 + if networkmanager_is_running; then + echo "If an error like 'n80211: Could not configure driver mode' was thrown" >&2 + echo "try running the following before starting create_ap:" >&2 + if [[ $NM_OLDER_VERSION -eq 1 ]]; then + echo " nmcli nm wifi off" >&2 + else + echo " nmcli r wifi off" >&2 + fi + echo " rfkill unblock wlan" >&2 + fi + die +fi + +clean_exit + +# Local Variables: +# tab-width: 4 +# indent-tabs-mode: nil +# End: + +# vim: et sts=4 sw=4 diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/desktop_login.sh b/external/packages/bsp/overlays_s905d3/usr/bin/desktop_login.sh new file mode 100755 index 000000000000..92b298f07802 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/bin/desktop_login.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +if [[ -z $1 ]]; then + user=root +else + user=$1 +fi + +sudo sed -i '/autologin-user=/d' /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf +sudo echo autologin-user=${user} >> /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf +sudo sed -i 's/root/anything/' /etc/pam.d/lightdm-autologin diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/disable_desktop_autologin.sh b/external/packages/bsp/overlays_s905d3/usr/bin/disable_desktop_autologin.sh new file mode 100755 index 000000000000..430e9b21b104 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/bin/disable_desktop_autologin.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +sudo sed -i \ +"s/autologin-user=.*/#&/" \ +/etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/enable_docker.sh b/external/packages/bsp/overlays_s905d3/usr/bin/enable_docker.sh new file mode 100755 index 000000000000..c2cfd98e823c --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/bin/enable_docker.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +if [[ $(uname -r) == 5.4.* ]]; then + echo 1 | sudo update-alternatives --config iptables > /dev/null +fi + +sudo systemctl enable docker.service +sudo systemctl start docker.service diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/reset_ssh.sh b/external/packages/bsp/overlays_s905d3/usr/bin/reset_ssh.sh new file mode 100755 index 000000000000..29d6f6d32d85 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/bin/reset_ssh.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo rm /etc/ssh/ssh_host_* +sudo dpkg-reconfigure openssh-server diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/spidev_test b/external/packages/bsp/overlays_s905d3/usr/bin/spidev_test new file mode 100755 index 0000000000000000000000000000000000000000..22eaf574673ae8cd17ddaa5ff668304ea8e3bc1e GIT binary patch literal 19672 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 literal 0 HcmV?d00001 diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/tinycap b/external/packages/bsp/overlays_s905d3/usr/bin/tinycap new file mode 100755 index 0000000000000000000000000000000000000000..479635764a6f174e830d6ff1a5309c2b3bf69217 GIT binary patch literal 14736 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 TOW)ng>94C*5uW|B;q%)rb9189lp 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 KC}1gAtolEU%&+wT literal 0 HcmV?d00001 diff --git a/external/packages/bsp/overlays_s905d3/usr/bin/tinyplay b/external/packages/bsp/overlays_s905d3/usr/bin/tinyplay new file mode 100755 index 0000000000000000000000000000000000000000..f6d95e43ae103837b786b3e240bbd0cd6359108a GIT binary patch literal 19048 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 NqbH<*OTop8{{w=C5J&(3 literal 0 HcmV?d00001 diff --git a/external/packages/bsp/overlays_s905d3/usr/lib/libtinyalsa.so b/external/packages/bsp/overlays_s905d3/usr/lib/libtinyalsa.so new file mode 100755 index 0000000000000000000000000000000000000000..8211f50784a68e5560c90839c02c0797ba930ed0 GIT binary patch literal 37480 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 I|9bQPA3HKw2LJ#7 literal 0 HcmV?d00001 diff --git a/external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/getty@.service.d/override.conf b/external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/getty@.service.d/override.conf new file mode 100644 index 000000000000..da9dce6cf1d9 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/getty@.service.d/override.conf @@ -0,0 +1,5 @@ +[Service] +ExecStartPre=/bin/sh -c 'exec /bin/sleep 10' +ExecStart= +ExecStart=-/sbin/agetty --noissue --autologin orangepi %I $TERM +Type=idle diff --git a/external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/serial-getty@.service.d/override.conf b/external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/serial-getty@.service.d/override.conf new file mode 100644 index 000000000000..da9dce6cf1d9 --- /dev/null +++ b/external/packages/bsp/overlays_s905d3/usr/lib/systemd/system/serial-getty@.service.d/override.conf @@ -0,0 +1,5 @@ +[Service] +ExecStartPre=/bin/sh -c 'exec /bin/sleep 10' +ExecStart= +ExecStart=-/sbin/agetty --noissue --autologin orangepi %I $TERM +Type=idle diff --git a/scripts/general.sh b/scripts/general.sh index 370ce9394aa0..a493973af428 100755 --- a/scripts/general.sh +++ b/scripts/general.sh @@ -1869,7 +1869,7 @@ show_checklist_variables () install_wiringop() { - install_deb_chroot "$EXTER/cache/debs/arm64/wiringpi_2.51.deb" + install_deb_chroot "$EXTER/cache/debs/arm64/wiringpi_2.52.deb" chroot "${SDCARD}" /bin/bash -c "apt-mark hold wiringpi" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 if [[ ${IGNORE_UPDATES} != yes ]]; then @@ -1881,6 +1881,8 @@ install_wiringop() cp ${EXTER}/cache/sources/wiringOP/next ${SDCARD}/usr/src/wiringOP -rfa cp ${EXTER}/cache/sources/wiringOP-Python/next ${SDCARD}/usr/src/wiringOP-Python -rfa + + rm $SDCARD/root/*.deb >/dev/null 2>&1 } install_docker() { diff --git a/scripts/main.sh b/scripts/main.sh index adf12338c823..887342f22028 100755 --- a/scripts/main.sh +++ b/scripts/main.sh @@ -244,6 +244,7 @@ if [[ -z $BOARD ]]; then options+=("orangepicm4" "Rockchip RK3566 quad core 2-8GB RAM GBE eMMC USB3 NvMe WiFi/BT") options+=("orangepi3b" "Rockchip RK3566 quad core 2-8GB RAM GBE eMMC USB3 NvMe WiFi/BT") #options+=("orangepir1plus" "Rockchip RK3328 quad core 1GB RAM 2xGBE USB2 SPI") + #options+=("orangepi3plus" "Amlogic S905D3 quad core 2/4GB RAM SoC eMMC GBE USB3 SPI WiFi/BT") menustr="Please choose a Board." BOARD=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \