diff --git a/firmware/Makefile b/firmware/Makefile
new file mode 100644
index 0000000..79481fd
--- /dev/null
+++ b/firmware/Makefile
@@ -0,0 +1,305 @@
+
+#VIVADO_VERSION ?= 2020.1
+VIVADO_VERSION ?= 2022.2
+#VIVADO_VERSION ?= 2023.1
+export ADI_IGNORE_VERSION_CHECK = 1
+SKIP_LEGAL=1
+# Use Buildroot External Linaro GCC 7.3-2018.05 arm-linux-gnueabihf Toolchain
+#CROSS_COMPILE = arm-linux-gnueabihf-
+CROSS_COMPILE = arm-none-linux-gnueabihf-
+TOOLS_PATH = PATH="$(CURDIR)/buildroot/output/host/bin:$(CURDIR)/buildroot/output/host/sbin:$(PATH)"
+TOOLCHAIN = $(CURDIR)/buildroot/output/host/bin/$(CROSS_COMPILE)gcc
+ABSOLUTE_PATH=$(shell cd `dirname "${BASH_SOURCE[0]}"` && pwd)
+BOARD=$(ABSOLUTE_PATH/board)/ori/board
+BR2_EXTERNAL=$(ABSOLUTE_PATH)/ori
+BR2_PACKAGE_BUSYBOX_CONFIG=$(BR2_EXTERNAL)/ori/board/pluto/busybox-1.25.0.config
+
+BR2_EXTERNAL_PLUTOSDR_PATH=$(shell cd `dirname "${BASH_SOURCE[0]}"` && pwd)/ori
+NCORES = $(shell grep -c ^processor /proc/cpuinfo)
+VIVADO_SETTINGS ?= /opt/Xilinx/Vivado/$(VIVADO_VERSION)/settings64.sh
+VSUBDIRS = buildroot linux u-boot-xlnx
+
+VERSION=$(shell git describe --abbrev=4 --always --tags)
+PATCH=$(shell cd ori && ./applypatch.sh )
+$(shell git log --pretty=format:"%h - %ad : %s" > ori/board/pluto/overlay/root/fwhistory.txt)
+#LATEST_TAG=$(shell git describe --abbrev=0 --tags)
+UBOOT_VERSION=$(shell echo -n "PlutoSDR " && cd u-boot-xlnx && git describe --abbrev=0 --dirty --always --tags)
+HAVE_VIVADO= $(shell bash -c "source $(VIVADO_SETTINGS) > /dev/null 2>&1 && vivado -version > /dev/null 2>&1 && echo 1 || echo 0")
+#XSA_URL ?= http://github.com/maia-sdr/plutosdr-fw/releases/download/${LATEST_TAG}/system_top.xsa
+
+ifeq (1, ${HAVE_VIVADO})
+ VIVADO_INSTALL= $(shell bash -c "source $(VIVADO_SETTINGS) > /dev/null 2>&1 && vivado -version | head -1 | awk '{print $2}'")
+ ifeq (, $(findstring $(VIVADO_VERSION), $(VIVADO_INSTALL)))
+$(warning *** This repository has only been tested with $(VIVADO_VERSION),)
+$(warning *** and you have $(VIVADO_INSTALL))
+$(warning *** Please 1] set the path to Vivado $(VIVADO_VERSION) OR)
+$(warning *** 2] remove $(VIVADO_INSTALL) from the path OR)
+$(error " 3] export VIVADO_VERSION=v20xx.x")
+ endif
+endif
+
+##PATCH COMMAND NEED TO BE INVOCATED
+ifneq (1, ${PATCH})
+ $(warning patch granted $(PATCH))
+endif
+
+TARGET ?= pluto
+SUPPORTED_TARGETS:=pluto plutoplus e200
+#XSA_FILE ?= ori/bitstream/${TARGET}/system_top.xsa
+
+$(warning *** Building target $(TARGET),)
+
+# Include target specific constants
+include scripts/$(TARGET).mk
+
+ifeq (, $(shell which dfu-suffix))
+$(warning "No dfu-utils in PATH consider doing: sudo apt-get install dfu-util")
+TARGETS = build/pluto.frm build/boot.frm
+else
+TARGETS = build/$(TARGET).dfu build/uboot-env.dfu build/pluto.frm build/boot.dfu build/boot.frm
+endif
+
+ifeq ($(findstring $(TARGET),$(SUPPORTED_TARGETS)),)
+all:
+ @echo "Invalid `TARGET variable ; valid values are: pluto, sidekiqz2, plutoplus" &&
+ exit 1
+else
+all: clean-build $(TARGETS) zip-all legal-info
+endif
+
+.NOTPARALLEL: all
+
+TARGET_DTS_FILES:=$(foreach dts,$(TARGET_DTS_FILES),build/$(dts))
+
+TOOLCHAIN:
+ make BR2_EXTERNAL=$(ABSOLUTE_PATH)/ori -C buildroot ARCH=arm zynq_pluto_ori_defconfig
+ make -C buildroot toolchain
+
+build:
+ mkdir -p $@
+
+%: build/%
+ cp $< $@
+
+
+### u-boot ###
+
+u-boot-xlnx/u-boot u-boot-xlnx/tools/mkimage: TOOLCHAIN
+# $(TOOLS_PATH) make -C u-boot-xlnx ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zynq_$(TARGET)_defconfig
+ $(TOOLS_PATH) make -C u-boot-xlnx ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zynq_$(TARGET)_defconfig
+ $(TOOLS_PATH) make -C u-boot-xlnx ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) UBOOTVERSION="$(UBOOT_VERSION)"
+
+.PHONY: u-boot-xlnx/u-boot
+
+build/u-boot.elf: u-boot-xlnx/u-boot | build
+ cp $< $@
+
+build/uboot-env.txt: u-boot-xlnx/u-boot TOOLCHAIN | build
+ $(TOOLS_PATH) CROSS_COMPILE=$(CROSS_COMPILE) scripts/get_default_envs.sh > $@
+
+build/uboot-env.bin: build/uboot-env.txt
+ u-boot-xlnx/tools/mkenvimage -s 0x20000 -o $@ $<
+
+### Linux ###
+
+linux/arch/arm/boot/zImage: TOOLCHAIN
+ $(TOOLS_PATH) make -C linux -j $(NCORES) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zynq_$(TARGET)_linux_defconfig zImage UIMAGE_LOADADDR=0x8000
+ $(TOOLS_PATH) make -C linux -j $(NCORES) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zynq_$(TARGET)_linux_defconfig uImage UIMAGE_LOADADDR=0x8000
+## $(TOOLS_PATH) make -C linux ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) defconfig zynq_$(TARGET)_defconfig
+##$(TOOLS_PATH) make BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(ABSOLUTE_PATH)/datv/configs/zynq_$(TARGET)datv_linux_defconfig -C linux -j $(NCORES) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zImage UIMAGE_LOADADDR=0x8000
+
+.PHONY: linux/arch/arm/boot/zImage
+.PHONY: linux/arch/arm/boot/uImage
+
+build/zImage: linux/arch/arm/boot/zImage | build
+ cp $< $@
+
+build/uImage: linux/arch/arm/boot/uImage | build
+ cp $< $@
+
+
+### Device Tree ###
+
+linux/arch/arm/boot/dts/%.dtb: TOOLCHAIN linux/arch/arm/boot/dts/%.dts linux/arch/arm/boot/dts/zynq-pluto-sdr.dtsi linux/arch/arm/boot/dts/zynq-pluto-sdr.dtsi
+ $(TOOLS_PATH) DTC_FLAGS=-@ make -C linux -j $(NCORES) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) $(notdir $@)
+
+build/%.dtb: linux/arch/arm/boot/dts/%.dtb | build
+ dtc -q -@ -I dtb -O dts $< | sed 's/axi {/amba {/g' | dtc -q -@ -I dts -O dtb -o $@
+
+
+
+### Buildroot ###
+
+buildroot/output/images/rootfs.cpio.gz:
+ @echo device-fw $(VERSION)> $(BR2_EXTERNAL)/board/pluto/VERSIONS
+ @$(foreach dir,$(VSUBDIRS),echo $(dir) $(shell cd $(dir) && git describe --abbrev=4 --dirty --always --tags) >> $(BR2_EXTERNAL)/board/pluto/VERSIONS;)
+ make BR2_EXTERNAL=$(ABSOLUTE_PATH)/ori -C buildroot ARCH=arm zynq_pluto_ori_defconfig
+## make -C buildroot ARCH=arm zynq_$(TARGET)_defconfig
+
+ifneq (1, ${SKIP_LEGAL})
+ make -C buildroot legal-info
+ scripts/legal_info_html.sh "$(COMPLETE_NAME)" "$(CURDIR)/buildroot/board/pluto/VERSIONS"
+ cp build/LICENSE.html buildroot/board/pluto/msd/LICENSE.html
+endif
+
+ make -C buildroot BUSYBOX_CONFIG_FILE=$(BR2_EXTERNAL)/board/pluto/busybox-1.25.0.config all
+
+.PHONY: buildroot/output/images/rootfs.cpio.gz
+
+
+## Invoke again buildroot to add datv bin in rootfs
+build/rootfs.cpio.gz: buildroot/output/images/rootfs.cpio.gz | build
+ make -C buildroot BUSYBOX_CONFIG_FILE=$(BR2_EXTERNAL)/board/pluto/busybox-1.25.0.config all
+ cp $< $@
+
+build/$(TARGET).itb: u-boot-xlnx/tools/mkimage build/zImage build/rootfs.cpio.gz $(TARGET_DTS_FILES) build/system_top.bit
+ u-boot-xlnx/tools/mkimage -f scripts/$(TARGET).its $@
+
+build/system_top.xsa: | build
+ifneq ($(XSA_FILE),)
+ cp $(XSA_FILE) $@
+else ifneq ($(XSA_URL),)
+ wget -T 3 -t 1 -N --directory-prefix build $(XSA_URL)
+else ifeq (1, ${HAVE_VIVADO})
+#bash -c "source $(VIVADO_SETTINGS) && make -C maia-sdr/maia-hdl/projects/$(TARGET) && cp maia-sdr/maia-hdl/projects/$(TARGET)/$(TARGET).sdk/system_top.xsa $@"
+#unzip -l $@ | grep -q ps7_init || cp maia-sdr/maia-hdl/projects/$(TARGET)/$(TARGET).srcs/sources_1/bd/system/ip/system_sys_ps7_0/ps7_init* build/
+ifeq ($(TARGET),pluto)
+ bash -c "source $(VIVADO_SETTINGS) && make -C ../projects/pluto && cp ../projects/pluto/pluto.sdk/system_top.xsa $@"
+ unzip -l $@ | grep -q ps7_init || cp ../projects/pluto/pluto.srcs/sources_1/bd/system/ip/system_sys_ps7_0/ps7_init* build/
+endif
+ifeq ($(TARGET),plutoplus)
+ bash -c "source $(VIVADO_SETTINGS) && make -C ../hdl/projects/pluto-ori-plus && cp ../hdl/projects/pluto-ori-plus/pluto.sdk/system_top.xsa $@"
+ unzip -l $@ | grep -q ps7_init || cp ../hdl/projects/pluto-ori-plus/pluto.srcs/sources_1/bd/system/ip/system_sys_ps7_0/ps7_init* build/
+endif
+ifeq ($(TARGET),e200)
+ bash -c "source $(VIVADO_SETTINGS) && make -C ../hdl/projects/pluto-ori-e200 && cp ../hdl/projects/pluto-ori-e200/e200.sdk/system_top.xsa $@"
+ unzip -l $@ | grep -q ps7_init || cp ../hdl/projects/pluto-ori-e200/e200.srcs/sources_1/bd/system/ip/system_sys_ps7_0/ps7_init* build/
+endif
+#bash -c "source $(VIVADO_SETTINGS) && make -C ../hdl/projects/pluto-ori-plus"
+endif
+
+### TODO: Build system_top.xsa from src if dl fails ...
+
+build/fsbl.elf build/system_top.bit : build/system_top.xsa
+ rm -Rf build/sdk
+ifeq (1, ${HAVE_VIVADO})
+ bash -c "source $(VIVADO_SETTINGS) && xsct scripts/create_fsbl_project.tcl"
+else
+ unzip -o build/system_top.xsa system_top.bit -d build
+endif
+
+build/boot.bin: build/fsbl.elf build/u-boot.elf
+ @echo img:{[bootloader] $^ } > build/boot.bif
+ifeq (1, ${HAVE_VIVADO})
+ cp build/sdk/fsbl/Release/fsbl.elf build/fsbl.elf
+ bash -c "source $(VIVADO_SETTINGS) && bootgen -image build/boot.bif -w -o $@"
+else
+ cp ori/bitstream/$(TARGET)/fsbl.elf build/fsbl.elf
+ bash -c "bootgen -image build/boot.bif -w -o $@"
+endif
+### MSD update firmware file ###
+
+build/pluto.frm: build/$(TARGET).itb
+ md5sum $< | cut -d ' ' -f 1 > $@.md5
+ cat $< $@.md5 > $@
+
+build/boot.frm: build/boot.bin build/uboot-env.bin scripts/target_mtd_info.key
+ cat $^ | tee $@ | md5sum | cut -d ' ' -f1 | tee -a $@
+
+### DFU update firmware file ###
+
+build/%.dfu: build/%.bin
+ cp $< $<.tmp
+ dfu-suffix -a $<.tmp -v $(DEVICE_VID) -p $(DEVICE_PID)
+ mv $<.tmp $@
+
+build/$(TARGET).dfu: build/$(TARGET).itb
+ cp $< $<.tmp
+ dfu-suffix -a $<.tmp -v $(DEVICE_VID) -p $(DEVICE_PID)
+ mv $<.tmp $@
+
+SDIMGDIR = build/sdimg
+sdimg: build | build/rootfs.cpio.gz
+ mkdir -p $(SDIMGDIR)
+ cp ori/bitstream/$(TARGET)/fsbl.elf $(SDIMGDIR)/fsbl.elf
+ cp build/system_top.bit $(SDIMGDIR)/system_top.bit
+ cp build/u-boot.elf $(SDIMGDIR)/u-boot.elf
+ cp linux/arch/arm/boot/uImage $(SDIMGDIR)/uImage
+
+ifeq ($(TARGET),pluto)
+ cp build/zynq-pluto-sdr.dtb $(SDIMGDIR)/devicetree.dtb
+endif
+ifeq ($(TARGET),plutoplus)
+ cp build/zynq-plutoplus-maiasdr.dtb $(SDIMGDIR)/devicetree.dtb
+endif
+ifeq ($(TARGET),e200)
+ cp build/zynq-e200.dtb $(SDIMGDIR)/devicetree.dtb
+endif
+ cp build/uboot-env.txt $(SDIMGDIR)/uEnv.txt
+ cp build/rootfs.cpio.gz $(SDIMGDIR)/ramdisk.image.gz
+ mkimage -A arm -T ramdisk -C gzip -d $(SDIMGDIR)/ramdisk.image.gz $(SDIMGDIR)/uramdisk.image.gz
+ touch $(SDIMGDIR)/boot.bif
+ echo "img : {[bootloader] $(SDIMGDIR)/fsbl.elf $(SDIMGDIR)/system_top.bit $(SDIMGDIR)/u-boot.elf}" > $(SDIMGDIR)/boot.bif
+ bootgen -image $(SDIMGDIR)/boot.bif -w -o i $(SDIMGDIR)/BOOT.bin
+ rm $(SDIMGDIR)/fsbl.elf
+ rm $(SDIMGDIR)/system_top.bit
+ rm $(SDIMGDIR)/u-boot.elf
+ rm $(SDIMGDIR)/ramdisk.image.gz
+ rm $(SDIMGDIR)/boot.bif
+
+
+clean-build:
+ rm -f $(notdir $(wildcard build/*))
+ rm -rf build/*
+
+clean:
+ make -C u-boot-xlnx clean
+ make -C linux clean
+ make -C buildroot clean
+ rm -f $(notdir $(wildcard build/*))
+ rm -rf build/*
+
+zip-all: $(TARGETS)
+ mkdir -p Release && cd build && zip -r ../Release/$(ZIP_ARCHIVE_PREFIX)-fw-$(VERSION).zip *.dfu *.frm
+
+dfu-$(TARGET): build/$(TARGET).dfu
+ dfu-util -D build/$(TARGET).dfu -a firmware.dfu
+ dfu-util -e
+
+dfu-sf-uboot: build/boot.dfu build/uboot-env.dfu
+ echo "Erasing u-boot be careful - Press Return to continue... " && read key && \
+ dfu-util -D build/boot.dfu -a boot.dfu && \
+ dfu-util -D build/uboot-env.dfu -a uboot-env.dfu
+ dfu-util -e
+
+dfu-all: build/$(TARGET).dfu build/boot.dfu build/uboot-env.dfu
+ echo "Erasing u-boot be careful - Press Return to continue... " && read key && \
+ dfu-util -D build/$(TARGET).dfu -a firmware.dfu && \
+ dfu-util -D build/boot.dfu -a boot.dfu && \
+ dfu-util -D build/uboot-env.dfu -a uboot-env.dfu
+ dfu-util -e
+
+dfu-ram: build/$(TARGET).dfu
+ sshpass -p analog ssh root@$(TARGET) '/usr/sbin/device_reboot ram;'
+ sleep 7
+ dfu-util -D build/$(TARGET).dfu -a firmware.dfu
+ dfu-util -e
+
+jtag-bootstrap: build/u-boot.elf build/ps7_init.tcl build/system_top.bit scripts/run.tcl scripts/run-xsdb.tcl
+ $(TOOLS_PATH) $(CROSS_COMPILE)strip build/u-boot.elf
+ zip -j build/$(ZIP_ARCHIVE_PREFIX)-$@-$(VERSION).zip $^
+
+sysroot: buildroot/output/images/rootfs.cpio.gz
+ tar czfh build/sysroot-$(VERSION).tar.gz --hard-dereference --exclude=usr/share/man --exclude=dev --exclude=etc -C buildroot/output staging
+
+legal-info: buildroot/output/images/rootfs.cpio.gz
+ifneq (1, ${SKIP_LEGAL})
+ tar czvf build/legal-info-$(VERSION).tar.gz -C buildroot/output legal-info
+endif
+
+
+git-update-all:
+ git submodule update --recursive --remote
+
+git-pull:
+ git pull --recurse-submodules
diff --git a/firmware/download_and_test.sh b/firmware/download_and_test.sh
new file mode 100755
index 0000000..4cd279c
--- /dev/null
+++ b/firmware/download_and_test.sh
@@ -0,0 +1,35 @@
+#~/bin/sh
+# This resets a connected pluto, loads firmware into ram, and boots it
+#
+
+#default IP address
+ipaddr=192.168.2.1
+
+if [ ! -f ./build/pluto.dfu ] ; then
+ echo no file to upload
+ exit
+fi
+
+ssh_cmd()
+{
+ sshpass -v -panalog ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oCheckHostIP=no root@${ipaddr} "$1" 2>/dev/null
+ if [ "$?" -ne "0" ] ; then
+ echo ssh command $1 failed
+ exit
+ fi
+}
+ssh_cmd "device_reboot ram"
+
+lines=0
+attempt=0
+while [ "${lines}" -le "8" -a "${attempt}" -le "10" ]
+do
+ lines=$(sudo dfu-util -l -d 0456:b673,0456:b674 | wc -l)
+ if [ "${lines}" -le "8" ] ; then
+ sleep 1
+ fi
+ ((attempt++))
+done
+
+# -R resets/terminates the dfu after we are done
+sudo dfu-util -R -d 0456:b673,0456:b674 -D ./build/pluto.dfu -a firmware.dfu
diff --git a/firmware/ori/Config.in b/firmware/ori/Config.in
new file mode 100644
index 0000000..282657c
--- /dev/null
+++ b/firmware/ori/Config.in
@@ -0,0 +1,29 @@
+#source pluto_cc.sh
+menu "SKRORG"
+
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/libfec/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/libtuntap/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/lamableu-apps/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/rtl-433/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/rtlsdr-airband/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/luaradio-basic/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/multimonng/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/libdvbmod/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/dvb2iq/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/suscan/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/sigutils/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/soapysdr/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/soapyplutosdr/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/soapyremote/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/rxtools/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/tx-tools/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/csdr/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/dump1090-pluto/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/civetwebws/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/soapysdr-master/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/soapyplutosdr-master/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/libgse/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/satdump/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/nng/Config.in"
+ source "$BR2_EXTERNAL_PLUTOSDR_PATH/package/srt/Config.in"
+endmenu
diff --git a/firmware/ori/applypatch.sh b/firmware/ori/applypatch.sh
new file mode 100755
index 0000000..a494e00
--- /dev/null
+++ b/firmware/ori/applypatch.sh
@@ -0,0 +1,33 @@
+#Extend frequencies
+cp patches/linux/ad9361* ../linux/drivers/iio/adc/
+## Replace mosquitoo 2.0.17 (segfault) with 20.0.18
+cp patches/mosquitto/* ../buildroot/package/mosquitto/
+
+## LINUX DTS
+
+
+
+
+### LINUX CONFIGS #####
+cp configs/zynq_pluto_linux_defconfig ../linux/arch/arm/configs/
+cp configs/zynq_plutoplus_linux_defconfig ../linux/arch/arm/configs/
+cp configs/zynq_e200_linux_defconfig ../linux/arch/arm/configs/
+
+####### E200 #################
+
+cp patches/e200/linux/ad5660_mp.c ../linux/drivers/iio/adc/
+cp patches/e200/linux/Kconfig ../linux/drivers/iio/adc/
+cp patches/e200/linux/Makefile ../linux/drivers/iio/adc/
+cp patches/e200/linux/core.c ../linux/drivers/mtd/spi-nor/
+cp patches/e200/linux/zynq-e200.dts ../linux/arch/arm/boot/dts/
+cp patches/e200/linux/zynq-e200.dtsi ../linux/arch/arm/boot/dts/
+#replace axis by amba
+cp patches/e200/linux/zynq-7000.dtsi ../linux/arch/arm/boot/dts/
+
+## Customize u-boot env
+cp patches/u-boot/zynq-common.h ../u-boot-xlnx/include/configs/
+cp patches/u-boot/zynq-plutoplus.dts ../u-boot-xlnx/arch/arm/dts/
+cp patches/u-boot/zynq-e200-sdr.dts ../u-boot-xlnx/arch/arm/dts/
+cp patches/u-boot/zynq_plutoplus_defconfig ../u-boot-xlnx/configs/
+cp patches/u-boot/zynq_e200_defconfig ../u-boot-xlnx/configs/
+cp patches/u-boot/Makefile ../u-boot-xlnx/arch/arm/dts/
diff --git a/firmware/ori/bitstream/e200/fsbl.elf b/firmware/ori/bitstream/e200/fsbl.elf
new file mode 100755
index 0000000..fa9d75d
Binary files /dev/null and b/firmware/ori/bitstream/e200/fsbl.elf differ
diff --git a/firmware/ori/bitstream/e200/system_top.xsa b/firmware/ori/bitstream/e200/system_top.xsa
new file mode 100644
index 0000000..da3e7a2
Binary files /dev/null and b/firmware/ori/bitstream/e200/system_top.xsa differ
diff --git a/firmware/ori/bitstream/pluto/fsbl.elf b/firmware/ori/bitstream/pluto/fsbl.elf
new file mode 100755
index 0000000..fc7520c
Binary files /dev/null and b/firmware/ori/bitstream/pluto/fsbl.elf differ
diff --git a/firmware/ori/bitstream/pluto/system_top.xsa b/firmware/ori/bitstream/pluto/system_top.xsa
new file mode 100644
index 0000000..35510ce
Binary files /dev/null and b/firmware/ori/bitstream/pluto/system_top.xsa differ
diff --git a/firmware/ori/bitstream/plutoplus/fsbl.elf b/firmware/ori/bitstream/plutoplus/fsbl.elf
new file mode 100755
index 0000000..5f1af53
Binary files /dev/null and b/firmware/ori/bitstream/plutoplus/fsbl.elf differ
diff --git a/firmware/ori/bitstream/plutoplus/system_top.xsa b/firmware/ori/bitstream/plutoplus/system_top.xsa
new file mode 100644
index 0000000..569290d
Binary files /dev/null and b/firmware/ori/bitstream/plutoplus/system_top.xsa differ
diff --git a/firmware/ori/board/pluto/S10mdev b/firmware/ori/board/pluto/S10mdev
new file mode 100644
index 0000000..aea3d7d
--- /dev/null
+++ b/firmware/ori/board/pluto/S10mdev
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Start mdev....
+#
+
+case "$1" in
+ start)
+ echo -n "Starting mdev: "
+ echo /sbin/mdev >/proc/sys/kernel/hotplug
+ /sbin/mdev -s
+ # coldplug modules
+ # find /sys/ -name modalias -print0 | xargs -0 sort -u -z | xargs -0 modprobe -abq
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+ ;;
+ restart|reload)
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/firmware/ori/board/pluto/S15watchdog b/firmware/ori/board/pluto/S15watchdog
new file mode 100644
index 0000000..fdb9860
--- /dev/null
+++ b/firmware/ori/board/pluto/S15watchdog
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# Start watchdog
+#
+
+case "$1" in
+ start)
+ echo -n "Starting watchdog: "
+ watchdog -t 5 -T 10 /dev/watchdog
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+ ;;
+ restart|reload)
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/firmware/ori/board/pluto/S20urandom b/firmware/ori/board/pluto/S20urandom
new file mode 100644
index 0000000..94551f8
--- /dev/null
+++ b/firmware/ori/board/pluto/S20urandom
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# urandom This script saves the random seed between reboots.
+# It is called from the boot, halt and reboot scripts.
+#
+# Version: @(#)urandom 1.33 22-Jun-1998 miquels@cistron.nl
+#
+
+[ -c /dev/urandom ] || exit 0
+#. /etc/default/rcS
+
+case "$1" in
+ start|"")
+ echo -n "Starting initializing random number generator: "
+
+ # Load and then save 512 bytes,
+ # which is the size of the entropy pool
+
+ dmesg | sha512sum > /dev/urandom
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+
+ ;;
+ *)
+ echo "Usage: urandom {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/firmware/ori/board/pluto/S21misc b/firmware/ori/board/pluto/S21misc
new file mode 100644
index 0000000..28c5739
--- /dev/null
+++ b/firmware/ori/board/pluto/S21misc
@@ -0,0 +1,36 @@
+#! /bin/sh
+
+xo_correction() {
+
+ XO_ENV_VAL=`fw_printenv -n xo_correction 2> /dev/null`
+ if [ $? -eq 0 ]; then
+
+ for dev in /sys/bus/iio/devices/*; do
+ [ `cat ${dev}/name` == "ad9361-phy" ] && DEV_NAME=`basename ${dev}`
+ done
+
+ echo ${XO_ENV_VAL} > /sys/bus/iio/devices/${DEV_NAME}/xo_correction
+ fi
+}
+
+
+case "$1" in
+ start|"")
+ echo -n "Starting miscellaneous setup: "
+ # Restore saved password and Dropbear keys
+ [[ -d /mnt/jffs2/etc ]] && cd /mnt/jffs2/etc && md5sum -s -c password.md5 && cp passwd shadow group /etc
+ [[ -d /mnt/jffs2/etc/dropbear ]] && cd /mnt/jffs2/etc/dropbear && md5sum -s -c keys.md5 && cp dropbear* /etc/dropbear/
+ [[ -d /mnt/jffs2/root/.ssh ]] && cd /mnt/jffs2/root/.ssh && md5sum -s -c keys.md5 && mkdir /root/.ssh && cp authorized_keys /root/.ssh
+ xo_correction
+ MAX_BS=`fw_printenv -n iio_max_block_size 2> /dev/null || echo 67108864`
+ echo ${MAX_BS} > /sys/module/industrialio_buffer_dma/parameters/max_block_size
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+
+ ;;
+ *)
+ echo "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/firmware/ori/board/pluto/S23udc b/firmware/ori/board/pluto/S23udc
new file mode 100644
index 0000000..23ff09c
--- /dev/null
+++ b/firmware/ori/board/pluto/S23udc
@@ -0,0 +1,209 @@
+#!/bin/sh
+
+source /etc/device_config
+
+CONFIGFS=/sys/kernel/config/usb_gadget
+GADGET=$CONFIGFS/composite_gadget
+IIOD_OPTS="-D -n $ENDPOINTS -F /dev/iio_ffs"
+UDC_HANDLE_SUSPEND=`fw_printenv -n udc_handle_suspend 2> /dev/null || echo 0`
+USB_ETH_MODE=`fw_printenv -n usb_ethernet_mode 2> /dev/null || echo rndis`
+USB_AUDIO_GADGET=`fw_printenv -n audio_gadget 2> /dev/null`
+
+if [ "$USB_ETH_MODE" == "ncm" ]
+then
+ USB_NET_FUNCTION=ncm.usb0
+elif [ "$USB_ETH_MODE" == "ecm" ]
+then
+ USB_NET_FUNCTION=ecm.usb0
+else
+ USB_NET_FUNCTION=rndis.0
+fi
+
+echo "Usb gagdet : $USB_NET_FUNCTION"
+
+create_iiod_context_attributes() {
+ model=$1
+ serial=$2
+ model_variant=$3
+
+ if [ "$USBPID" == "0xb673" ]; then
+ # ADALM-PLUTO
+ for dev in /sys/bus/iio/devices/*; do
+ [ `cat ${dev}/name` == "ad9361-phy" ] && DEV_NAME=`basename ${dev}`
+ done
+
+ AD936X_TYPE=$(cat /sys/bus/iio/devices/${DEV_NAME}/of_node/compatible | sed 's/adi,//g')
+ AD936X_TYPE_CAP=$(echo $AD936X_TYPE | tr a-z A-Z)
+ MODEL=$(echo $model | sed "s/AD936[34]/$AD936X_TYPE_CAP/")
+ else
+ MODEL=$model
+ fi
+
+ echo "[Context Attributes]" > /etc/libiio.ini
+ echo "hw_model=$MODEL" >> /etc/libiio.ini
+
+ if [ "$model_variant" == "n25q256a" ]
+ then
+ echo "hw_model_variant=0" >> /etc/libiio.ini
+ else
+ echo "hw_model_variant=1" >> /etc/libiio.ini
+ fi
+
+ echo -e "hw_serial=$serial\n" >> /etc/libiio.ini
+ echo "fw_version=`grep device-fw /opt/VERSIONS | cut -d ' ' -f 2`" >> /etc/libiio.ini
+ if [ "$USBPID" == "0xb673" ]; then
+ echo ad9361-phy,xo_correction=`cat /sys/bus/iio/devices/${DEV_NAME}/xo_correction` >> /etc/libiio.ini
+ echo ad9361-phy,model=$AD936X_TYPE >> /etc/libiio.ini
+
+ elif [ "$USBPID" == "0xb672" ]; then
+ cat /opt/${CALIBFILENAME} | grep ^cal,* >> /etc/libiio.ini
+ cat /opt/${CALIBFILENAME_TEMP_LUT} | grep ^cal,* >> /etc/libiio.ini
+ fi
+}
+
+case "$1" in
+ start)
+ echo -n "Starting UDC Gadgets: "
+ mount configfs -t configfs /sys/kernel/config 2> /dev/null
+
+ mkdir -p $GADGET
+
+ model=`cat /sys/firmware/devicetree/base/model | tr / -`
+ model_variant=`dmesg | grep m25p80 | grep Kbytes | cut -d ' ' -f 3`
+
+ serial=`dmesg | grep SPI-NOR-UniqueID`
+ serial=${serial#*SPI-NOR-UniqueID }
+
+ create_iiod_context_attributes "$model" "$serial" "$model_variant"
+
+ echo $serial > /etc/serial
+ sha1=`echo $serial | sha1sum`
+
+ echo 0x0456 > $GADGET/idVendor
+ echo $USBPID > $GADGET/idProduct
+
+ mkdir -p $GADGET/strings/0x409
+ echo "Analog Devices Inc." > $GADGET/strings/0x409/manufacturer
+ echo $PRODUCT > $GADGET/strings/0x409/product
+ echo $serial > $GADGET/strings/0x409/serialnumber
+
+ mkdir -p $GADGET/functions/ffs.iio_ffs
+ mkdir -p $GADGET/functions/acm.usb0
+ mkdir -p $GADGET/functions/$USB_NET_FUNCTION
+ mkdir -p $GADGET/functions/mass_storage.0
+
+ if [ "$USB_AUDIO_GADGET" == "1" ]; then
+ mkdir -p $GADGET/functions/uac2.usb0
+ mkdir -p $GADGET/functions/uac2.usb1
+ fi
+
+# echo /opt/vfat.img > $GADGET/functions/mass_storage.0/lun.0/file
+ echo Y > $GADGET/functions/mass_storage.0/lun.0/removable
+
+ host_addr=`echo -n 00:E0:22; echo $sha1 | dd bs=1 count=6 2>/dev/null | hexdump -v -e '/1 ":%01c""%c"'`
+ dev_addr=`echo -n 00:05:F7; echo $sha1 | dd bs=1 count=6 skip=6 2>/dev/null | hexdump -v -e '/1 ":%01c""%c"'`
+
+ echo $host_addr > $GADGET/functions/$USB_NET_FUNCTION/host_addr
+ echo $dev_addr > $GADGET/functions/$USB_NET_FUNCTION/dev_addr
+
+ mkdir -p $GADGET/configs/c.1
+ mkdir -p $GADGET/configs/c.1/strings/0x409
+ echo "RNDIS/MSD/ACM/IIOUSBD" > $GADGET/configs/c.1/strings/0x409/configuration
+
+ # In case the M2k is powered via the Power USB, advertise low power on the DATA USB
+ if [ "$TARGET" == "m2k" ]; then
+ echo 905 > /sys/class/gpio/export
+ [ "`cat /sys/class/gpio/gpio905/value`" == "1" ] && echo 4 > $GADGET/configs/c.1/MaxPower || echo 500 > $GADGET/configs/c.1/MaxPower
+ else
+ echo 500 > $GADGET/configs/c.1/MaxPower
+ fi
+
+ if [ "$USB_AUDIO_GADGET" == "1" ]; then
+
+ echo "1" > $GADGET/functions/uac2.usb0/c_chmask
+ echo "1" > $GADGET/functions/uac2.usb0/p_chmask
+ echo "48000" > $GADGET/functions/uac2.usb0/c_srate
+ echo "48000" > $GADGET/functions/uac2.usb0/p_srate
+ echo "2" > $GADGET/functions/uac2.usb0/c_ssize
+ echo "2" > $GADGET/functions/uac2.usb0/p_ssize
+
+ echo "1" > $GADGET/functions/uac2.usb1/c_chmask
+ echo "1" > $GADGET/functions/uac2.usb1/p_chmask
+ echo "22050" > $GADGET/functions/uac2.usb1/c_srate
+ echo "22050" > $GADGET/functions/uac2.usb1/p_srate
+ echo "2" > $GADGET/functions/uac2.usb1/c_ssize
+ echo "2" > $GADGET/functions/uac2.usb1/p_ssize
+ fi
+ ln -s $GADGET/functions/$USB_NET_FUNCTION $GADGET/configs/c.1
+ ln -s $GADGET/functions/mass_storage.0 $GADGET/configs/c.1
+ ln -s $GADGET/functions/acm.usb0 $GADGET/configs/c.1
+ ln -s $GADGET/functions/ffs.iio_ffs $GADGET/configs/c.1/ffs.iio_ffs
+ if [ "$USB_AUDIO_GADGET" == "1" ]; then
+ ln -s $GADGET/functions/uac2.usb0 $GADGET/configs/c.1
+ ln -s $GADGET/functions/uac2.usb1 $GADGET/configs/c.1
+ fi
+ mkdir -p /dev/iio_ffs
+ mount iio_ffs -t functionfs /dev/iio_ffs 2> /dev/null
+
+ start-stop-daemon -S -b -q -m -p /var/run/iiod.pid -x /usr/sbin/iiod -- $IIOD_OPTS
+ sleep 0.2
+
+ echo ci_hdrc.0 > $GADGET/UDC
+
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+
+ if [ "$UDC_HANDLE_SUSPEND" == "1" ]; then
+ start-stop-daemon -S -b -q -m -p /var/run/udc_handle_suspend.pid -x /sbin/udc_handle_suspend.sh
+ fi
+
+ ;;
+ stop)
+ echo "Stopping UDC Gadgets"
+
+ if [ "$UDC_HANDLE_SUSPEND" == "1" ]; then
+ start-stop-daemon -K -q -p /var/run/udc_handle_suspend.pid 2>/dev/null
+ fi
+
+ echo "" > $GADGET/UDC
+ start-stop-daemon -K -q -p /var/run/iiod.pid 2>/dev/null
+
+ rm $GADGET/configs/c.1/$USB_NET_FUNCTION
+ rm $GADGET/configs/c.1/mass_storage.0
+ rm $GADGET/configs/c.1/acm.usb0
+ rm $GADGET/configs/c.1/ffs.iio_ffs
+ if [ "$USB_AUDIO_GADGET" == "1" ]; then
+ rm $GADGET/configs/c.1/uac2.usb0
+ rm $GADGET/configs/c.1/uac2.usb1
+ fi
+ rmdir $GADGET/strings/0x409
+ rmdir $GADGET/configs/c.1/strings/0x409
+ rmdir $GADGET/configs/c.1
+
+ rmdir $GADGET/functions/ffs.iio_ffs
+ #rmdir $GADGET/functions/acm.usb0
+ rmdir $GADGET/functions/$USB_NET_FUNCTION
+ rmdir $GADGET/functions/mass_storage.0
+ if [ "$USB_AUDIO_GADGET" == "1" ]; then
+ rm $GADGET/functions/uac2.usb0
+ rm $GADGET/functions/uac2.usb1
+ fi
+
+ rmdir $GADGET 2> /dev/null
+
+ ;;
+ restart|reload)
+ "$0" stop
+ "$0" start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
+
+
+
+
+
+
diff --git a/firmware/ori/board/pluto/S40network b/firmware/ori/board/pluto/S40network
new file mode 100755
index 0000000..338a076
--- /dev/null
+++ b/firmware/ori/board/pluto/S40network
@@ -0,0 +1,189 @@
+#!/bin/sh
+#
+# Start the network....
+#
+
+# Debian ifupdown needs the /run/network lock directory
+
+source /etc/device_config
+
+create_system_files () {
+
+ UDHCPD_CONF=/etc/udhcpd.conf
+ CONF=/opt/config.txt
+ IFAC=/etc/network/interfaces
+
+ HOSTNAME=`fw_printenv -n hostname 2> /dev/null || cat /etc/hostname`
+ echo $HOSTNAME > /etc/hostname
+
+ IPADDR=`fw_printenv -n ipaddr 2> /dev/null || echo 192.168.2.1`
+ IPADDR_HOST=`fw_printenv -n ipaddr_host 2> /dev/null || echo 192.168.2.10`
+ NETMASK=`fw_printenv -n netmask 2> /dev/null || echo 255.255.255.0`
+
+ ETH_IPADDR=`fw_printenv -n ipaddr_eth 2> /dev/null`
+ ETH_NETMASK=`fw_printenv -n netmask_eth 2> /dev/null || echo 255.255.255.0`
+ ETH_GW=`fw_printenv -n gateway_eth 2> /dev/null`
+
+ ETH_IPADDR2=`fw_printenv -n ipaddr_eth2 2> /dev/null`
+ ETH_NETMASK2=`fw_printenv -n netmask_eth2 2> /dev/null || echo 255.255.255.0`
+ ETH_GW2=`fw_printenv -n gateway_eth2 2> /dev/null`
+
+
+ WLAN_SSID=`fw_printenv -n ssid_wlan 2> /dev/null`
+ WLAN_PWD=`fw_printenv -n pwd_wlan 2> /dev/null`
+ WLAN_IPADDR=`fw_printenv -n ipaddr_wlan 2> /dev/null`
+
+ XO_CORRECTION=`fw_printenv -n xo_correction 2> /dev/null`
+ UDC_HANDLE_SUSPEND=`fw_printenv -n udc_handle_suspend 2> /dev/null || echo 0`
+ USB_ETH_MODE=`fw_printenv -n usb_ethernet_mode 2> /dev/null || echo rndis`
+
+ ### /etc/udhcpd.conf ###
+ echo "start $IPADDR_HOST" > $UDHCPD_CONF
+ echo "end $IPADDR_HOST" >> $UDHCPD_CONF
+ echo "interface usb0" >> $UDHCPD_CONF
+ echo "option subnet $NETMASK" >> $UDHCPD_CONF
+ #router option could force the pc to have this gateway
+ # But bad idea when mounted before eth0 of PC
+ #echo "option router $IPADDR" >> $UDHCPD_CONF
+
+ ### /etc/network/interfaces ###
+ echo -e "auto lo\n""iface lo inet loopback\n" > $IFAC
+ echo -e "auto usb0\n""iface usb0 inet static" >> $IFAC
+ echo -e "\taddress $IPADDR\n""\tnetmask $NETMASK\n" >> $IFAC
+ echo -e "auto usb1\n""iface usb1 inet dhcp\n" >> $IFAC
+
+ echo -e "auto eth0" >> $IFAC
+ if [ -n "$ETH_IPADDR" ]
+ then
+ echo -e "iface eth0 inet static" >> $IFAC
+ echo -e "\taddress $ETH_IPADDR\n""\tnetmask $ETH_NETMASK\n" >> $IFAC
+ if [ -n "$ETH_GW" ]; then
+ echo -e "\tgateway $ETH_GW\n" >> $IFAC
+ fi
+ else
+ echo -e "iface eth0 inet dhcp\n" >> $IFAC
+ fi
+
+ echo -e "auto eth1" >> $IFAC
+ if [ -n "$ETH_IPADDR2" ]
+ then
+ echo -e "iface eth1 inet static" >> $IFAC
+ echo -e "\taddress $ETH_IPADDR2\n""\tnetmask $ETH_NETMASK2\n" >> $IFAC
+ if [ -n "$ETH_GW2" ]; then
+ echo -e "\tgateway $ETH_GW2\n" >> $IFAC
+ fi
+ else
+ echo -e "iface eth1 inet dhcp\n" >> $IFAC
+ fi
+
+ ### /etc/wpa.conf ###
+ if [ -n "$WLAN_SSID" ]
+ then
+ if [ "$WLAN_SSID" == "AP" ]; then
+ # We are in access point mode
+ echo -e "auto wlan0\n" >> $IFAC
+ echo -e "iface wlan0 inet static\n" >>$IFAC
+ echo -e "address 192.168.3.1\n" >>$IFAC
+ echo -e "netmask 255.255.255.0\n" >>$IFAC
+
+ else
+ if [ -n "$WLAN_PWD" ]
+ then
+ wpa_passphrase $WLAN_SSID $WLAN_PWD > /etc/wpa.conf
+ else
+ echo "network={" > /etc/wpa.conf
+ echo " ssid=\"$WLAN_SSID\"" >> /etc/wpa.conf
+ echo " key_mgmt=NONE" >> /etc/wpa.conf
+ echo "}" >> /etc/wpa.conf
+ fi
+
+ echo -e "auto wlan0" >> $IFAC
+
+ if [ -n "$WLAN_IPADDR" ]
+ then
+ echo -e "iface wlan0 inet static" >> $IFAC
+ echo -e "\taddress $WLAN_IPADDR\n""\tnetmask 255.255.255.0" >> $IFAC
+ else
+ echo -e "iface wlan0 inet dhcp" >> $IFAC
+ fi
+ echo -e "\twpa-conf /etc/wpa.conf\n" >> $IFAC
+ fi
+ fi
+
+ ### /opt/config.txt ###
+ echo "# $(cat /sys/firmware/devicetree/base/model | tr / -)"$'\r' > $CONF
+ echo "# Device Configuration File"$'\r' >> $CONF
+ echo "# 1. Open with an Editor"$'\r' >> $CONF
+ echo "# 2. Edit this file"$'\r' >> $CONF
+ echo "# 3. Save this file on the device USB drive"$'\r' >> $CONF
+ echo "# 4. Eject the device USB Drive"$'\r' >> $CONF
+ echo "# Doc: https://wiki.analog.com/university/tools/pluto/users/customizing"$'\r' >> $CONF
+ echo ""$'\r'>> $CONF
+ echo "[NETWORK]"$'\r' >> $CONF
+ echo "hostname = $HOSTNAME"$'\r' >> $CONF
+ echo "ipaddr = $IPADDR"$'\r' >> $CONF
+ echo "ipaddr_host = $IPADDR_HOST"$'\r' >> $CONF
+ echo "netmask = $NETMASK"$'\r' >> $CONF
+ echo ""$'\r'>> $CONF
+ echo "[WLAN]"$'\r' >> $CONF
+ echo "ssid_wlan = $WLAN_SSID"$'\r' >> $CONF
+ echo "pwd_wlan = $WLAN_PWD"$'\r' >> $CONF
+ echo "ipaddr_wlan = $WLAN_IPADDR"$'\r' >> $CONF
+ echo ""$'\r'>> $CONF
+ echo "[USB_ETHERNET]"$'\r' >> $CONF
+ echo "ipaddr_eth = $ETH_IPADDR"$'\r' >> $CONF
+ echo "netmask_eth = $ETH_NETMASK"$'\r' >> $CONF
+ echo "gateway_eth = $ETH_GW"$'\r' >> $CONF
+ echo "ipaddr_eth2 = $ETH_IPADDR2"$'\r' >> $CONF
+ echo "netmask_eth2 = $ETH_NETMASK2"$'\r' >> $CONF
+ echo "gateway_eth2 = $ETH_GW2"$'\r' >> $CONF
+
+ echo ""$'\r'>> $CONF
+ echo "[SYSTEM]"$'\r' >> $CONF
+ echo "xo_correction = $XO_CORRECTION"$'\r' >> $CONF
+ echo "udc_handle_suspend = $UDC_HANDLE_SUSPEND"$'\r' >> $CONF
+ echo "# USB Communication Device Class Compatibility Mode [rndis|ncm|ecm]"$'\r' >> $CONF
+ echo "usb_ethernet_mode = $USB_ETH_MODE"$'\r' >> $CONF
+ echo ""$'\r'>> $CONF
+ echo "[ACTIONS]"$'\r' >> $CONF
+ echo "diagnostic_report = 0"$'\r' >> $CONF
+ echo "dfu = 0"$'\r' >> $CONF
+ echo "reset = 0"$'\r' >> $CONF
+ echo "calibrate = 0"$'\r' >> $CONF
+ echo ""$'\r'>> $CONF
+
+ ### /www/index.html ###
+
+ sed -i -e "s/#IP#/$IPADDR/g" -e "s/#HOSTIP#/$IPADDR_HOST/g" -e "s/#NETMASK#/$NETMASK/g" -e "s/#HOSTNAME#/$HOSTNAME/g" -e "s/#SSID_WLAN#/$WLAN_SSID/g" -e "s/#IPADDR_WLAN#/$WLAN_IPADDR/g" -e "s/#IPADDR_ETH#/$ETH_IPADDR/g" -e "s/#NETMASK_ETH#/$ETH_NETMASK/g" /www/index.html
+
+ }
+
+mkdir -p /run/network
+
+case "$1" in
+ start)
+ printf "Starting network: "
+
+ create_system_files
+ dos2unix /opt/config.txt
+
+ /bin/hostname -F /etc/hostname
+ /sbin/ifup -a 2>&1 | logger
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+ printf "Stopping network: "
+ /sbin/ifdown -a
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ restart|reload)
+ "$0" stop
+ "$0" start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
+
diff --git a/firmware/ori/board/pluto/S41network b/firmware/ori/board/pluto/S41network
new file mode 100644
index 0000000..dd54b38
--- /dev/null
+++ b/firmware/ori/board/pluto/S41network
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Server-side demuxing by default
+
+source /etc/device_config
+
+case "$1" in
+ start)
+ echo -n "Starting dhcpd Daemon & httpd Server: "
+ start-stop-daemon -S -q -p /var/run/udhcpd.pid -x /usr/sbin/udhcpd -- $UDHCPD_CONF
+ start-stop-daemon -S -q -p /var/run/udhcpdwan.pid -x /usr/sbin/udhcpd -- /etc/udhcpdwan.conf
+ httpd -h /www
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+
+ stop)
+ echo -n "Stopping dhcpd Daemon & httpd Server: "
+ killall -7 httpd
+ start-stop-daemon -K -q -p /var/run/udhcpd.pid 2>/dev/null
+ start-stop-daemon -K -q -p /var/run/udhcpdwan.pid 2>/dev/null
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
diff --git a/firmware/ori/board/pluto/S45msd b/firmware/ori/board/pluto/S45msd
new file mode 100644
index 0000000..5529f4c
--- /dev/null
+++ b/firmware/ori/board/pluto/S45msd
@@ -0,0 +1,75 @@
+#!/bin/sh
+# Server-side demuxing by default
+
+source /etc/device_config
+
+CONF=/opt/config.txt
+file=/sys/kernel/config/usb_gadget/composite_gadget/functions/mass_storage.0/lun.0/file
+img=/opt/vfat.img
+
+patch_html_page() {
+ LINUX=`uname -a | tr / - | tr '\n' ';' ; echo -n $(nproc) "core(s)"`
+ MODEL=`cat /etc/libiio.ini | grep hw_model= | cut -d '=' -f 2`
+ SERIAL=`cat /sys/kernel/config/usb_gadget/composite_gadget/strings/0x409/serialnumber`
+ MACHOST=`cat /sys/kernel/config/usb_gadget/composite_gadget/functions/rndis.0/host_addr`
+ MAC=`cat /sys/kernel/config/usb_gadget/composite_gadget/functions/rndis.0/dev_addr`
+ IIO=`iio_info 2>/dev/null | grep "Library version:"`
+ BUILD=`grep device-fw /opt/VERSIONS | cut -d ' ' -f 2`
+ FPGA=`grep hdl /opt/VERSIONS | cut -d ' ' -f 2`
+ ROOTFS=`grep buildroot /opt/VERSIONS | cut -d ' ' -f 2`
+ UBOOT=`cat /proc/cmdline | tr "=" "\n" | grep "U-Boot"`
+ USB_ETH_MODE=`fw_printenv -n usb_ethernet_mode 2> /dev/null || echo rndis`
+ if [ "$USB_ETH_MODE" == "ncm" ]; then
+ NETWORKUSB="Communications Device Class – Network Control Model (CDC-NCM)"
+ elif [ "$USB_ETH_MODE" == "ecm" ]; then
+ NETWORKUSB="Communications Device Class – Ethernet Control Module (CDC-EMC)"
+ else
+ NETWORKUSB="Remote Network Driver Interface Specification (RNDIS)"
+ fi
+
+ sed -i -e "s/#LINUX#/$LINUX/g" -e "s/#MODEL#/$MODEL/g" -e "s/#SERIAL#/$SERIAL/g" -e "s/#MACHOST#/$MACHOST/g" -e "s/#MAC#/$MAC/g" -e "s/#IIO#/$IIO/g" -e "s/#BUILD#/$BUILD/g" -e "s/#FPGA#/$FPGA/g" -e "s/#ROOTFS#/$ROOTFS/g" -e "s/#UBOOT#/$UBOOT/g" -e "s/#NETWORKUSB#/$NETWORKUSB/g" $1
+
+ sed -i -e "s/#BUILD#/$BUILD/g" $2 /etc/motd
+}
+
+
+case "$1" in
+ start)
+ echo -n "Starting MSD Daemon: "
+ patch_html_page /www/index.html /www/img/version.js
+ losetup /dev/loop7 $img -o 512
+ mount /dev/loop7 /mnt/msd
+
+ if [ "$TARGET" == "m2k" ]; then
+ cp /opt/${CALIBFILENAME} /mnt
+ md5sum /mnt/msd/${CALIBFILENAME} > /opt/${CALIBFILENAME}.md5
+ fi
+
+ cp $CONF /mnt/msd
+ md5sum /mnt/msd/config.txt > /opt/config.md5
+
+ cp -a /www/* /mnt/msd
+ mv /mnt/msd/index.html /mnt/msd/info.html
+ umount /mnt/msd
+ echo $img > $file
+
+ start-stop-daemon -S -b -q -m -p /var/run/update.pid -x /bin/sh -- /sbin/update.sh
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+
+ stop)
+ echo -n "Stopping MSD Daemon: "
+ start-stop-daemon -K -q -p /var/run/update.pid 2>/dev/null
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
diff --git a/firmware/ori/board/pluto/VERSIONS b/firmware/ori/board/pluto/VERSIONS
new file mode 100644
index 0000000..992d770
--- /dev/null
+++ b/firmware/ori/board/pluto/VERSIONS
@@ -0,0 +1,4 @@
+device-fw b340
+buildroot 2022.02.3-adi-5712-gf70f4a
+linux adi-xilinx-2020.1-175882-ge14e351
+u-boot-xlnx v0.20-PlutoSDR-25-g90401c
diff --git a/firmware/ori/board/pluto/automounter.sh b/firmware/ori/board/pluto/automounter.sh
new file mode 100644
index 0000000..0d093a5
--- /dev/null
+++ b/firmware/ori/board/pluto/automounter.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+destdir=/media
+
+my_umount()
+{
+ if grep -qs "^/dev/$1 " /proc/mounts ; then
+ umount "${destdir}/$1";
+ echo heartbeat > /sys/class/leds/led0:green/trigger
+ fi
+
+ [ -d "${destdir}/$1" ] && rmdir "${destdir}/$1"
+}
+
+do_mount()
+{
+ local errno
+ local err
+
+ errno=0
+ for I in $(seq 5)
+ do
+ err=$(mount -t auto -o sync "/dev/$1" "${destdir}/$1" 2>&1)
+ errno=$?
+
+ # If we get a "Device or resource busy" error, retry again in a
+ # little bit, otherwise just return immediately.
+ if ! echo "${err}" | grep -q "Device or resource busy"
+ then
+ return ${errno}
+ fi
+
+ sleep .25
+ done
+
+ echo "${err}" >&2
+ return ${errno}
+}
+
+my_mount()
+{
+ mkdir -p "${destdir}/$1" || exit 1
+
+ if ! do_mount $1; then
+ # failed to mount, clean up mountpoint
+ rmdir "${destdir}/$1"
+ exit 1
+ fi
+
+ echo default-on > /sys/class/leds/led0:green/trigger
+
+ for i in ${destdir}/$1/runme??* ;do
+
+ # Ignore dangling symlinks (if any).
+ [ ! -f "$i" ] && continue
+
+ case "$i" in
+ *.sh)
+ # Source shell script for speed.
+ (
+ trap - INT QUIT TSTP
+ set start
+ . $i
+ )
+ ;;
+ *)
+ # No sh extension, so fork subprocess.
+ $i start
+ ;;
+ esac
+ done
+}
+
+case "${ACTION}" in
+add|"")
+ my_umount ${MDEV}
+ my_mount ${MDEV}
+ ;;
+remove)
+ my_umount ${MDEV}
+ ;;
+remove_all)
+ for i in ${destdir}/??*
+ do
+ my_umount $(basename $i)
+ done
+esac
diff --git a/firmware/ori/board/pluto/busybox-1.25.0.config b/firmware/ori/board/pluto/busybox-1.25.0.config
new file mode 100644
index 0000000..66c7001
--- /dev/null
+++ b/firmware/ori/board/pluto/busybox-1.25.0.config
@@ -0,0 +1,1171 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.29.3
+# Thu Jan 28 13:56:34 2021
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Settings
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEDORA_COMPAT is not set
+CONFIG_INCLUDE_SUSv2=y
+CONFIG_LONG_OPTS=y
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+CONFIG_LFS=y
+# CONFIG_PAM is not set
+CONFIG_FEATURE_DEVPTS=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_PID_FILE_PATH="/var/run"
+CONFIG_BUSYBOX=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+# CONFIG_SELINUX is not set
+CONFIG_FEATURE_CLEAN_UP=y
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_PLATFORM_LINUX=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_STACK_OPTIMIZATION_386=y
+
+#
+# Installation Options ("make install" behavior)
+#
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_DEBUG_SANITIZE is not set
+# CONFIG_UNIT_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Library Tuning
+#
+# CONFIG_FEATURE_USE_BSS_TAIL is not set
+CONFIG_FEATURE_RTMINMAX=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=1
+CONFIG_SHA3_SMALL=1
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+# CONFIG_FEATURE_ETC_SERVICES is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=999
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
+CONFIG_FEATURE_REVERSE_SEARCH=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_EDITING_WINCH=y
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_UNICODE_SUPPORT is not set
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=0
+CONFIG_LAST_SUPPORTED_WCHAR=0
+# CONFIG_UNICODE_COMBINING_WCHARS is not set
+# CONFIG_UNICODE_WIDE_WCHARS is not set
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+CONFIG_FEATURE_USE_SENDFILE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_FEATURE_SKIP_ROOTFS=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+CONFIG_FEATURE_HWIB=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_XZ is not set
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+# CONFIG_FEATURE_SEAMLESS_BZ2 is not set
+# CONFIG_FEATURE_SEAMLESS_GZ is not set
+# CONFIG_FEATURE_SEAMLESS_Z is not set
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_FEATURE_AR_CREATE=y
+# CONFIG_UNCOMPRESS is not set
+CONFIG_GUNZIP=y
+CONFIG_ZCAT=y
+CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
+CONFIG_BUNZIP2=y
+CONFIG_BZCAT=y
+CONFIG_UNLZMA=y
+CONFIG_LZCAT=y
+CONFIG_LZMA=y
+CONFIG_UNXZ=y
+CONFIG_XZCAT=y
+CONFIG_XZ=y
+# CONFIG_BZIP2 is not set
+CONFIG_BZIP2_SMALL=0
+CONFIG_FEATURE_BZIP2_DECOMPRESS=y
+CONFIG_CPIO=y
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+CONFIG_GZIP=y
+# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
+CONFIG_GZIP_FAST=0
+# CONFIG_FEATURE_GZIP_LEVELS is not set
+CONFIG_FEATURE_GZIP_DECOMPRESS=y
+# CONFIG_LZOP is not set
+# CONFIG_UNLZOP is not set
+# CONFIG_LZOPCAT is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM is not set
+# CONFIG_RPM2CPIO is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_CREATE=y
+# CONFIG_FEATURE_TAR_AUTODETECT is not set
+CONFIG_FEATURE_TAR_FROM=y
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_TO_COMMAND=y
+# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
+# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
+# CONFIG_FEATURE_TAR_SELINUX is not set
+CONFIG_UNZIP=y
+CONFIG_FEATURE_UNZIP_CDF=y
+CONFIG_FEATURE_UNZIP_BZIP2=y
+CONFIG_FEATURE_UNZIP_LZMA=y
+CONFIG_FEATURE_UNZIP_XZ=y
+# CONFIG_FEATURE_LZMA_FAST is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_FEATURE_CATN=y
+CONFIG_FEATURE_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+# CONFIG_COMM is not set
+CONFIG_CP=y
+# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_FEATURE_DATE_NANO=y
+CONFIG_FEATURE_DATE_COMPAT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_FEATURE_DD_STATUS=y
+CONFIG_DF=y
+# CONFIG_FEATURE_DF_FANCY is not set
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_EXPAND is not set
+# CONFIG_UNEXPAND is not set
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FACTOR=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+# CONFIG_FSYNC is not set
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+# CONFIG_GROUPS is not set
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LINK=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_WIDTH=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
+CONFIG_SHA3SUM=y
+
+#
+# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+CONFIG_MKDIR=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MKTEMP=y
+CONFIG_MV=y
+CONFIG_NICE=y
+CONFIG_NL=y
+CONFIG_NOHUP=y
+CONFIG_NPROC=y
+CONFIG_OD=y
+CONFIG_PASTE=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+CONFIG_SHRED=y
+# CONFIG_SHUF is not set
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_FEATURE_FLOAT_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+# CONFIG_FEATURE_STAT_FILESYSTEM is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+# CONFIG_FEATURE_SYNC_FANCY is not set
+# CONFIG_TAC is not set
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_TEST1=y
+CONFIG_TEST2=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TIMEOUT=y
+CONFIG_TOUCH=y
+# CONFIG_FEATURE_TOUCH_NODEREF is not set
+CONFIG_FEATURE_TOUCH_SUSV3=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TRUNCATE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNAME_OSNAME="GNU/Linux"
+CONFIG_BB_ARCH=y
+CONFIG_UNIQ=y
+CONFIG_UNLINK=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+# CONFIG_BASE64 is not set
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+CONFIG_WHO=y
+CONFIG_W=y
+# CONFIG_USERS is not set
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options
+#
+CONFIG_FEATURE_VERBOSE=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+# CONFIG_FGCONSOLE is not set
+# CONFIG_KBD_MODE is not set
+CONFIG_LOADFONT=y
+# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+
+#
+# Common options for loadfont and setfont
+#
+CONFIG_FEATURE_LOADFONT_PSF2=y
+CONFIG_FEATURE_LOADFONT_RAW=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+# CONFIG_SHOWKEY is not set
+
+#
+# Debian Utilities
+#
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_WHICH=y
+
+#
+# klibc-utils
+#
+# CONFIG_MINIPS is not set
+CONFIG_NUKE=y
+CONFIG_RESUME=y
+CONFIG_RUN_INIT=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+# CONFIG_FEATURE_AWK_LIBM is not set
+CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_ASK_TERMINAL=y
+CONFIG_FEATURE_VI_UNDO=y
+CONFIG_FEATURE_VI_UNDO_QUEUE=y
+CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_EXEC_PLUS=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+# CONFIG_FEATURE_FIND_LINKS is not set
+CONFIG_GREP=y
+CONFIG_EGREP=y
+CONFIG_FGREP=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
+CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y
+CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+CONFIG_HALT=y
+CONFIG_POWEROFF=y
+CONFIG_REBOOT=y
+CONFIG_FEATURE_WAIT_FOR_INIT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT=y
+CONFIG_LINUXRC=y
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_INIT_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_INIT_TERMINAL_TYPE="linux"
+CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+CONFIG_USE_BB_CRYPT_SHA=y
+# CONFIG_ADD_SHELL is not set
+# CONFIG_REMOVE_SHELL is not set
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_LAST_ID=60000
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="md5"
+# CONFIG_CRYPTPW is not set
+CONFIG_MKPASSWD=y
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
+# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_DEPMOD is not set
+CONFIG_INSMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+# CONFIG_MODINFO is not set
+CONFIG_MODPROBE=y
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+CONFIG_RMMOD=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKDISCARD is not set
+CONFIG_BLKID=y
+# CONFIG_FEATURE_BLKID_TYPE is not set
+# CONFIG_BLOCKDEV is not set
+# CONFIG_CAL is not set
+CONFIG_CHRT=y
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_EJECT=y
+# CONFIG_FEATURE_EJECT_SCSI is not set
+CONFIG_FALLOCATE=y
+# CONFIG_FATATTR is not set
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+CONFIG_FEATURE_GPT_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+# CONFIG_FINDFS is not set
+CONFIG_FLOCK=y
+CONFIG_FDFLUSH=y
+CONFIG_FREERAMDISK=y
+# CONFIG_FSCK_MINIX is not set
+CONFIG_FSFREEZE=y
+CONFIG_FSTRIM=y
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
+CONFIG_HEXDUMP=y
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+CONFIG_XXD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+# CONFIG_IONICE is not set
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LAST=y
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LOSETUP=y
+CONFIG_LSPCI=y
+CONFIG_LSUSB=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MESG=y
+CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
+CONFIG_MKE2FS=y
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+CONFIG_MKDOSFS=y
+CONFIG_MKFS_VFAT=y
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+CONFIG_MORE=y
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+# CONFIG_FEATURE_MOUNT_NFS is not set
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_FEATURE_MOUNT_OTHERTAB=y
+CONFIG_MOUNTPOINT=y
+# CONFIG_NSENTER is not set
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_RDEV is not set
+CONFIG_READPROFILE=y
+CONFIG_RENICE=y
+# CONFIG_REV is not set
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+CONFIG_SETARCH=y
+CONFIG_LINUX32=y
+CONFIG_LINUX64=y
+CONFIG_SETPRIV=y
+CONFIG_FEATURE_SETPRIV_DUMP=y
+CONFIG_FEATURE_SETPRIV_CAPABILITIES=y
+CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y
+CONFIG_SETSID=y
+CONFIG_SWAPON=y
+# CONFIG_FEATURE_SWAPON_DISCARD is not set
+# CONFIG_FEATURE_SWAPON_PRI is not set
+CONFIG_SWAPOFF=y
+CONFIG_FEATURE_SWAPONOFF_LABEL=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_TASKSET=y
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_UEVENT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+# CONFIG_UNSHARE is not set
+# CONFIG_WALL is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+CONFIG_VOLUMEID=y
+
+#
+# Filesystem/Volume identification
+#
+# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+CONFIG_FEATURE_VOLUMEID_EXFAT=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_F2FS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_LFS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+CONFIG_FEATURE_VOLUMEID_MINIX=y
+# CONFIG_FEATURE_VOLUMEID_NILFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+CONFIG_FEATURE_VOLUMEID_UBIFS=y
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+# CONFIG_CONSPY is not set
+CONFIG_CROND=y
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_SPECIAL_TIMES=y
+CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_DEVMEM=y
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+CONFIG_HEXEDIT=y
+CONFIG_I2CGET=y
+CONFIG_I2CSET=y
+CONFIG_I2CDUMP=y
+CONFIG_I2CDETECT=y
+# CONFIG_INOTIFYD is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_TRUNCATE=y
+# CONFIG_FEATURE_LESS_MARKS is not set
+CONFIG_FEATURE_LESS_REGEXP=y
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_FEATURE_LESS_RAW is not set
+# CONFIG_FEATURE_LESS_ENV is not set
+CONFIG_LSSCSI=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+CONFIG_MICROCOM=y
+CONFIG_MT=y
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+CONFIG_PARTPROBE=y
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+# CONFIG_RFKILL is not set
+CONFIG_RUNLEVEL=y
+# CONFIG_RX is not set
+CONFIG_SETFATTR=y
+CONFIG_SETSERIAL=y
+CONFIG_STRINGS=y
+CONFIG_TIME=y
+# CONFIG_TTYSIZE is not set
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+CONFIG_UBIRENAME=y
+# CONFIG_VOLNAME is not set
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+CONFIG_FEATURE_BRCTL_FANCY=y
+CONFIG_FEATURE_BRCTL_SHOW=y
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTPD_WRITE is not set
+# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
+# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+CONFIG_DNSDOMAINNAME=y
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_RANGES=y
+CONFIG_FEATURE_HTTPD_SETUID=y
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
+CONFIG_FEATURE_HTTPD_PROXY=y
+CONFIG_FEATURE_HTTPD_GZIP=y
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+CONFIG_IFUP=y
+CONFIG_IFDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPNEIGH=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2"
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_NEIGH=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FAKEIDENTD is not set
+CONFIG_NAMEIF=y
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+# CONFIG_NBDCLIENT is not set
+CONFIG_NC=y
+CONFIG_NETCAT=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NC_110_COMPAT=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+# CONFIG_FEATURE_NETSTAT_PRG is not set
+CONFIG_NSLOOKUP=y
+CONFIG_FEATURE_NSLOOKUP_BIG=y
+CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y
+# CONFIG_NTPD is not set
+# CONFIG_FEATURE_NTPD_SERVER is not set
+# CONFIG_FEATURE_NTPD_CONF is not set
+CONFIG_PING=y
+# CONFIG_PING6 is not set
+CONFIG_FEATURE_FANCY_PING=y
+# CONFIG_PSCAN is not set
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+CONFIG_SSL_CLIENT=y
+CONFIG_TC=y
+CONFIG_FEATURE_TC_INGRESS=y
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_FEATURE_TELNET_WIDTH=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
+CONFIG_TFTP=y
+# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+# CONFIG_TFTPD is not set
+
+#
+# Common options for tftp/tftpd
+#
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_TFTP_DEBUG is not set
+CONFIG_TLS=y
+CONFIG_TRACEROUTE=y
+# CONFIG_TRACEROUTE6 is not set
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+CONFIG_FEATURE_WGET_HTTPS=y
+# CONFIG_FEATURE_WGET_OPENSSL is not set
+# CONFIG_WHOIS is not set
+# CONFIG_ZCIP is not set
+CONFIG_UDHCPD=y
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y
+CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases"
+CONFIG_DUMPLEASES=y
+CONFIG_DHCPRELAY=y
+CONFIG_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+# CONFIG_UDHCPC6 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set
+
+#
+# Common options for DHCP applets
+#
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+CONFIG_FEATURE_UDHCP_8021Q=y
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+# CONFIG_IOSTAT is not set
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_LSOF=y
+# CONFIG_MPSTAT is not set
+# CONFIG_NMETER is not set
+CONFIG_PGREP=y
+CONFIG_PKILL=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+# CONFIG_PMAP is not set
+# CONFIG_POWERTOP is not set
+# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
+CONFIG_PS=y
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_LONG is not set
+# CONFIG_FEATURE_PS_TIME is not set
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
+# CONFIG_PSTREE is not set
+# CONFIG_PWDX is not set
+# CONFIG_SMEMCAP is not set
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_INTERACTIVE=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+CONFIG_UPTIME=y
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+CONFIG_WATCH=y
+# CONFIG_FEATURE_SHOW_THREADS is not set
+
+#
+# Runit Utilities
+#
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+CONFIG_SVC=y
+CONFIG_SVOK=y
+# CONFIG_SVLOGD is not set
+# CONFIG_CHCON is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SESTATUS is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_SETSEBOOL is not set
+
+#
+# Shells
+#
+CONFIG_SH_IS_ASH=y
+# CONFIG_SH_IS_HUSH is not set
+# CONFIG_SH_IS_NONE is not set
+# CONFIG_BASH_IS_ASH is not set
+# CONFIG_BASH_IS_HUSH is not set
+CONFIG_BASH_IS_NONE=y
+CONFIG_ASH=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_INTERNAL_GLOB=y
+CONFIG_ASH_BASH_COMPAT=y
+# CONFIG_ASH_BASH_SOURCE_CURDIR is not set
+CONFIG_ASH_BASH_NOT_FOUND_HOOK=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+CONFIG_ASH_IDLE_TIMEOUT=y
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_ECHO=y
+CONFIG_ASH_PRINTF=y
+CONFIG_ASH_TEST=y
+CONFIG_ASH_HELP=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_CMDCMD=y
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_LINENO_VAR is not set
+# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_HUSH_ECHO is not set
+# CONFIG_HUSH_PRINTF is not set
+# CONFIG_HUSH_TEST is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_EXPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_READONLY is not set
+# CONFIG_HUSH_KILL is not set
+# CONFIG_HUSH_WAIT is not set
+# CONFIG_HUSH_COMMAND is not set
+# CONFIG_HUSH_TRAP is not set
+# CONFIG_HUSH_TYPE is not set
+# CONFIG_HUSH_TIMES is not set
+# CONFIG_HUSH_READ is not set
+# CONFIG_HUSH_SET is not set
+# CONFIG_HUSH_UNSET is not set
+# CONFIG_HUSH_ULIMIT is not set
+# CONFIG_HUSH_UMASK is not set
+# CONFIG_HUSH_GETOPTS is not set
+# CONFIG_HUSH_MEMLEAK is not set
+
+#
+# Options common to all shells
+#
+CONFIG_FEATURE_SH_MATH=y
+CONFIG_FEATURE_SH_MATH_64=y
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_FEATURE_SH_READ_FRAC=y
+# CONFIG_FEATURE_SH_HISTFILESIZE is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_KLOGD=y
+CONFIG_FEATURE_KLOGD_KLOGCTL=y
+CONFIG_LOGGER=y
+# CONFIG_LOGREAD is not set
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+# CONFIG_FEATURE_SYSLOGD_CFG is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
+# CONFIG_FEATURE_KMSG_SYSLOG is not set
diff --git a/firmware/ori/board/pluto/device_config b/firmware/ori/board/pluto/device_config
new file mode 100644
index 0000000..1159fc1
--- /dev/null
+++ b/firmware/ori/board/pluto/device_config
@@ -0,0 +1,15 @@
+#S23udc
+PRODUCT="PlutoSDR (ADALM-PLUTO)"
+USBPID=0xb673
+ENDPOINTS=3
+
+#S40network / S41network
+UDHCPD_CONF=/etc/udhcpd.conf
+CONF=/opt/config.txt
+IFAC=/etc/network/interfaces
+
+#update.sh
+TARGET=plutosdr
+FIRMWARE=/mnt/msd/pluto.frm
+FRM_MAGIC="ITB PlutoSDR (ADALM-PLUTO)"
+
diff --git a/firmware/ori/board/pluto/device_format_jffs2 b/firmware/ori/board/pluto/device_format_jffs2
new file mode 100644
index 0000000..eb2e5ce
--- /dev/null
+++ b/firmware/ori/board/pluto/device_format_jffs2
@@ -0,0 +1,17 @@
+#!/bin/sh
+set +e
+
+while true;
+do
+ read -p "Are you sure to delete/format your mtd2 JFFS2 (/mnt/jffs2) partition? (yes/no) " answ
+ case $answ in
+ [Yy]* )
+ umount /mnt/jffs2
+ flash_erase -j /dev/mtd2 0 0
+ mount -a
+ break
+ ;;
+ [Nn]* ) exit;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
diff --git a/firmware/ori/board/pluto/device_passwd b/firmware/ori/board/pluto/device_passwd
new file mode 100644
index 0000000..c3c50dd
--- /dev/null
+++ b/firmware/ori/board/pluto/device_passwd
@@ -0,0 +1,11 @@
+#!/bin/sh
+set +e
+
+cat /proc/mounts | grep -q mtd2 || (echo "Filesystem not mounted use device_format_jffs2 command to setup your partition"; exit 1)
+
+passwd
+install -D /etc/passwd /etc/shadow /etc/group -t /mnt/jffs2/etc
+cd /etc
+md5sum passwd shadow group 2>/dev/null > /mnt/jffs2/etc/password.md5
+sync
+
diff --git a/firmware/ori/board/pluto/device_persistent_keys b/firmware/ori/board/pluto/device_persistent_keys
new file mode 100644
index 0000000..9c4d7bb
--- /dev/null
+++ b/firmware/ori/board/pluto/device_persistent_keys
@@ -0,0 +1,21 @@
+#!/bin/sh
+set +e
+
+KEYFILE=/etc/dropbear/dropbear_ecdsa_host_key
+IDFILE=/root/.ssh/authorized_keys
+
+cat /proc/mounts | grep -q mtd2 || (echo "Filesystem not mounted use device_format_jffs2 command to setup your partition"; exit 1)
+
+#dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
+[[ ! -f ${KEYFILE} ]] && dropbearkey -t ecdsa -f ${KEYFILE}
+install -D /etc/dropbear/dropbear_* -t /mnt/jffs2/etc/dropbear
+cd /etc/dropbear
+md5sum dropbear_* /etc/dropbear/ 2>/dev/null > /mnt/jffs2/etc/dropbear/keys.md5
+
+if [ -f ${IDFILE} ]; then
+ install -D ${IDFILE} -t /mnt/jffs2/root/.ssh
+ cd /root/.ssh
+ md5sum authorized_keys 2>/dev/null > /mnt/jffs2/root/.ssh/keys.md5
+fi
+
+sync
\ No newline at end of file
diff --git a/firmware/ori/board/pluto/device_reboot b/firmware/ori/board/pluto/device_reboot
new file mode 100644
index 0000000..1134b2a
--- /dev/null
+++ b/firmware/ori/board/pluto/device_reboot
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+case "$1" in
+ ram)
+ cause=7
+ ;;
+ sf)
+ cause=3
+ ;;
+ verbose)
+ cause=6
+ ;;
+ break)
+ cause=2
+ ;;
+ reset)
+ cause=0
+ ;;
+
+ *)
+ echo "Usage: $0 {ram|sf|reset|verbose|break}"
+ echo " sf : Reboot and enter Serial Flash DFU mode"
+ echo " ram : Reboot and enter RAM DFU mode"
+ echo " reset : Reboot"
+ echo " verbose: Reboot and start serial console Verbose"
+ echo " break : Reboot and HALT in u-boot"
+ exit 1
+esac
+
+echo $cause > /sys/kernel/debug/zynq_rst/code && /sbin/reboot
+
+exit 0
diff --git a/firmware/ori/board/pluto/dropbrear_localoptions.h b/firmware/ori/board/pluto/dropbrear_localoptions.h
new file mode 100644
index 0000000..8d1cd4a
--- /dev/null
+++ b/firmware/ori/board/pluto/dropbrear_localoptions.h
@@ -0,0 +1 @@
+#define DO_MOTD 1
diff --git a/firmware/ori/board/pluto/fw_env.config b/firmware/ori/board/pluto/fw_env.config
new file mode 100644
index 0000000..402a340
--- /dev/null
+++ b/firmware/ori/board/pluto/fw_env.config
@@ -0,0 +1,2 @@
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd1 0x0000 0x20000 0x20000
diff --git a/firmware/ori/board/pluto/genimage-msd.cfg b/firmware/ori/board/pluto/genimage-msd.cfg
new file mode 100644
index 0000000..7ba896d
--- /dev/null
+++ b/firmware/ori/board/pluto/genimage-msd.cfg
@@ -0,0 +1,20 @@
+image boot.vfat {
+ vfat {
+ extraargs = "-n PlutoSDR"
+ files = {"index.html"}
+ }
+ size = 30M
+}
+
+image vfat.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "false"
+ image = "boot.vfat"
+ }
+}
+
+
diff --git a/firmware/ori/board/pluto/ifupdown.sh b/firmware/ori/board/pluto/ifupdown.sh
new file mode 100644
index 0000000..0e75ce1
--- /dev/null
+++ b/firmware/ori/board/pluto/ifupdown.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+case "${ACTION}" in
+add|"")
+ ifconfig ${MDEV} up
+ ifup ${MDEV}
+ echo $(ip -f inet -o addr show ${MDEV}|cut -d\ -f 7 | cut -d/ -f 1) > /opt/ipaddr-${MDEV}
+ ;;
+remove)
+ ifdown ${MDEV}
+ ;;
+esac
diff --git a/firmware/ori/board/pluto/index.html b/firmware/ori/board/pluto/index.html
new file mode 100644
index 0000000..b59f746
--- /dev/null
+++ b/firmware/ori/board/pluto/index.html
@@ -0,0 +1,197 @@
+
+
+
The ADALM-PLUTO Firmware refers to the U-Boot, HDL, Linux kernel, device drivers, and user space software, which runs on the PlutoSDR. This is bundled up and given a specific version number for the PlutoSDR. For help upgrading firmware, check out the online documentation.
+
+
+
+
+
+
+
+
diff --git a/firmware/ori/board/pluto/info.html b/firmware/ori/board/pluto/info.html
new file mode 100644
index 0000000..e69de29
diff --git a/firmware/ori/board/pluto/input-event-daemon.conf b/firmware/ori/board/pluto/input-event-daemon.conf
new file mode 100644
index 0000000..96c1c9a
--- /dev/null
+++ b/firmware/ori/board/pluto/input-event-daemon.conf
@@ -0,0 +1,12 @@
+#
+# /etc/input-event-daemon.conf
+#
+
+[Global]
+listen = /dev/input/event0
+
+[Keys]
+BTN_0 = ACTION=remove_all /lib/mdev/automounter.sh
+
+
+
diff --git a/firmware/ori/board/pluto/mdev.conf b/firmware/ori/board/pluto/mdev.conf
new file mode 100644
index 0000000..09ad12f
--- /dev/null
+++ b/firmware/ori/board/pluto/mdev.conf
@@ -0,0 +1,7 @@
+# block devices
+sd[a-z] root:root 660 */lib/mdev/automounter.sh
+sd[a-z][0-9] root:root 660 */lib/mdev/automounter.sh
+# net devices
+wlan[0-9] root:root 660 */lib/mdev/ifupdown.sh
+usb[0-9] root:root 660 */lib/mdev/ifupdown.sh
+eth[0-9] root:root 660 */lib/mdev/ifupdown.sh
diff --git a/firmware/ori/board/pluto/motd b/firmware/ori/board/pluto/motd
new file mode 100644
index 0000000..f70854f
--- /dev/null
+++ b/firmware/ori/board/pluto/motd
@@ -0,0 +1,8 @@
+______ _ _ ___________ _____
+| ___ \ | | | | _ | ___ \_ _|
+| |_/ / |_ _| |_ ___ ______| | | | |_/ / | |
+| __/| | | | | __/ _ \______| | | | / | |
+| | | | |_| | || (_) | \ \_/ / |\ \ _| |_
+\_| |_|\__,_|\__\___/ \___/\_| \_|\___/
+#BUILD# F5OEO (2024)
+
diff --git a/firmware/ori/board/pluto/msd/.gitignore b/firmware/ori/board/pluto/msd/.gitignore
new file mode 100644
index 0000000..ef2d66e
--- /dev/null
+++ b/firmware/ori/board/pluto/msd/.gitignore
@@ -0,0 +1,2 @@
+LICENSE.html
+index.html
diff --git a/firmware/ori/board/pluto/msd/LICENSE b/firmware/ori/board/pluto/msd/LICENSE
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/firmware/ori/board/pluto/msd/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/firmware/ori/board/pluto/msd/img/ADI_Logo_AWP.png b/firmware/ori/board/pluto/msd/img/ADI_Logo_AWP.png
new file mode 100644
index 0000000..231fa10
Binary files /dev/null and b/firmware/ori/board/pluto/msd/img/ADI_Logo_AWP.png differ
diff --git a/firmware/ori/board/pluto/msd/img/download.png b/firmware/ori/board/pluto/msd/img/download.png
new file mode 100644
index 0000000..8f7def1
Binary files /dev/null and b/firmware/ori/board/pluto/msd/img/download.png differ
diff --git a/firmware/ori/board/pluto/msd/img/ez.png b/firmware/ori/board/pluto/msd/img/ez.png
new file mode 100644
index 0000000..66cc22f
Binary files /dev/null and b/firmware/ori/board/pluto/msd/img/ez.png differ
diff --git a/firmware/ori/board/pluto/msd/img/favicon.ico b/firmware/ori/board/pluto/msd/img/favicon.ico
new file mode 100644
index 0000000..0faa5e9
Binary files /dev/null and b/firmware/ori/board/pluto/msd/img/favicon.ico differ
diff --git a/firmware/ori/board/pluto/msd/img/prof_blue.png b/firmware/ori/board/pluto/msd/img/prof_blue.png
new file mode 100644
index 0000000..17ecd8f
Binary files /dev/null and b/firmware/ori/board/pluto/msd/img/prof_blue.png differ
diff --git a/firmware/ori/board/pluto/msd/img/style.css b/firmware/ori/board/pluto/msd/img/style.css
new file mode 100644
index 0000000..f70076b
--- /dev/null
+++ b/firmware/ori/board/pluto/msd/img/style.css
@@ -0,0 +1,164 @@
+body{
+ font-family: "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 1.3em;
+ color: #636363;
+ padding: 0 20px 0;
+ max-width: 1024px;
+ margin: auto;
+}
+hr{
+ color: #ccc;
+ margin: 10px 0 20px;
+}
+h1, h3{
+ font-family: "Arial Regular", sans-serif;
+ font-weight: bold;
+ margin-bottom:0;
+}
+h1{
+ font-size: 32px;
+ color: #1e4056;
+ margin-bottom: 40px;
+}
+h3{
+ font-size: 24px;
+}
+header{
+ margin-bottom: 20px;
+}
+header img{
+ margin-top: 10px;
+ width: 175px;
+}
+nav{
+ margin-bottom: 20px;
+}
+ul{
+ padding-left: 20px;
+}
+table{
+ width: 100%;
+}
+th{
+ background-color: #33b3ca;
+ color: #fff;
+ font-weight: normal;
+ padding: 10px;
+ text-align: left;
+}
+td{
+ background-color: #f5f5f5;
+ font-size: 14px;
+ padding: 5px 10px;
+}
+th:first-of-type,
+td:first-of-type{
+ width: 25%;
+ font-weight: bold;
+}
+#versiontest{
+ color: #27B34F;
+}
+a{
+ color: #33b3ca;
+ text-decoration: none;
+}
+.button{
+ background-color: #33b3ca;
+ border-radius: 15px;
+ color: #ffffff;
+ margin: 15px 10px 15px 10px;
+ padding: 5px 15px;
+ cursor: pointer;
+}
+.dropdown {
+ position: relative;
+ text-align: left;
+ display: inline-block;
+}
+.dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: #f9f9f9;
+ min-width: 200px;
+ border-radius: 15px;
+ box-shadow: 0px 8px 24px 0px rgba(0,0,0,0.2);
+ padding: 10px 10px;
+ z-index: 1;
+}
+.dropdown:hover .dropdown-content {
+ display: block;
+}
+.download{
+ background-image: url("download.png");
+ padding: 1em 1em .5em 70px;
+ margin-bottom: 1.5em;
+ min-height: 68px;
+ background-position: 10px 50%;
+ background-repeat: no-repeat;
+ color: #000;
+ overflow: hidden;
+ box-sizing: border-box;
+ background-color: #d6efc2;
+ border-radius: 1.4em;
+}
+.quicklinks{
+ float: right;
+ -webkit-column-count: 2; /* Chrome, Safari, Opera */
+ -moz-column-count: 2; /* Firefox */
+ column-count: 2;
+ -webkit-column-gap: 20px; /* Chrome, Safari, Opera */
+ -moz-column-gap: 20px; /* Firefox */
+ column-gap: 20px;
+ -webkit-column-rule: 1px solid lightblue; /* Chrome, Safari, Opera */
+ -moz-column-rule: 1px solid lightblue; /* Firefox */
+ column-rule: 1px solid lightblue;
+ list-style: none;
+ list-style-type: none;
+ list-style-image: none;
+ list-style-position: outside;
+ font-size: 12px;
+ line-height: 18px;
+ font-family: Helvetica,Arial,sans-serif;
+ margin-top: 2em;
+ margin-bottom: 0em;
+}
+.colLeft, .colRight{
+ float: left;
+}
+.colLeft{
+ width: 60%;
+}
+.colRight{
+ width: 40%;
+ text-align: center;
+}
+.anchor{
+ float: right;
+}
+.boxed {
+ box-sizing: border-box;
+ padding: 10px;
+ border: 1px solid;
+ border-color: #636363;
+ border-radius: 5px;
+}
+pre {
+ display: inline;
+ margin: 0;
+}
+.xterm {
+ color:#333;
+ display:block;
+ font-family:Monaco,Menlo,Consolas,"Courier New",monospace;
+ padding:9.5px;
+ margin:0 0 10px;
+ font-size:13px;
+ word-break:break-all;
+ word-wrap:break-word;
+ background-color:#f5f5f5;
+ border:1px solid #ccc;
+ border-radius:4px;
+}
diff --git a/firmware/ori/board/pluto/msd/img/tw.png b/firmware/ori/board/pluto/msd/img/tw.png
new file mode 100644
index 0000000..afab2a9
Binary files /dev/null and b/firmware/ori/board/pluto/msd/img/tw.png differ
diff --git a/firmware/ori/board/pluto/msd/img/version.js b/firmware/ori/board/pluto/msd/img/version.js
new file mode 100644
index 0000000..71f0f84
--- /dev/null
+++ b/firmware/ori/board/pluto/msd/img/version.js
@@ -0,0 +1,278 @@
+function OnTheWeb() {
+ window.location.assign("https://wiki.analog.com/university/tools/pluto");
+}
+
+function versionCompare(v1, v2) {
+ var v1parts = ("" + v1).replace(/[a-zA-Z]/g, "").replace("-", ".").split("."),
+ v2parts = ("" + v2).replace(/[a-zA-Z]/g, "").replace("-", ".").split("."),
+ minLength = Math.min(v1parts.length, v2parts.length),
+ p1, p2, i;
+ console.log(v1parts + " || " + v2parts);
+ for(i = 0; i < minLength; i++) {
+ p1 = parseInt(v1parts[i], 10);
+ p2 = parseInt(v2parts[i], 10);
+ if (isNaN(p1)){ p1 = v1parts[i]; }
+ if (isNaN(p2)){ p2 = v2parts[i]; }
+ if (p1 == p2) {
+ continue;
+ }else if (p1 > p2) {
+ return 1;
+ }else if (p1 < p2) {
+ return -1;
+ }
+ return NaN;
+ }
+ if (v1parts.length === v2parts.length) {
+ return 0;
+ }
+ return (v1parts.length < v2parts.length) ? -1 : 1;
+}
+
+var latest_libiio;
+var mac = false;
+
+function GetDriverurl() {
+ mac = navigator.platform.match(/Mac/i) ? true : false;
+ if (mac) {
+ var uAgent = navigator.userAgent.toLowerCase();
+ //uAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36".toLowerCase();
+ var test = uAgent.match(/mac os x 10_[0-9]*/);
+ if (test) {
+ mac = "darwin-" + test[0].match(/10_[0-9]*/)[0].replace("_", ".");
+ }
+ document.getElementById('prompt0').innerHTML = "adi-mm:tests analogdevices$";
+ document.getElementById('prompt1').innerHTML = "adi-mm:tests analogdevices$";
+ }
+ var win = navigator.platform.indexOf('Win') > -1 ? true : false;
+ if (win) {
+ document.getElementById('prompt0').innerHTML = "C:\>";
+ document.getElementById('prompt1').innerHTML = "C:\>";
+ } else
+ document.getElementById('hidedriver').style.display = "none";
+ var linux = navigator.platform.indexOf('Linux') > -1 ? true : false;
+ if (mac || win || linux)
+ document.getElementById('hidelib').style.display = "inline";
+ else {
+ if (navigator.platform.match(/(Linux|iPhone|iPod|iPad|Android)/i)) {
+ document.getElementById('libtest').innerHTML = "Sorry, we don't support " + navigator.platform + " yet. Please ask.";
+ jQuery('#libtest').attr ('href', "https://ez.analog.com/university-program");
+ } else
+ document.getElementById('libtest').innerHTML = "Unsupported host \"" + navigator.platform + "\". Please check, and report an issue";
+ return;
+ }
+
+ var i; var j;
+
+ var req = jQuery.getJSON("https://api.github.com/repos/analogdevicesinc/libiio/releases/latest");
+ req.fail(function() {
+ document.getElementById('hidelib').style.display = "none";
+ latest_libiio = null;
+ });
+ req.done(function(response) {
+ latest_libiio = response;
+ var select = document.getElementById("os-select");
+ var suffix = "";
+ var os;
+ for (i = 0; i < latest_libiio.assets.length; i++) {
+ os = latest_libiio.assets[i].name.split('-')[2];
+ suffix = os.slice(-4);
+ if (suffix == ".zip" ) {
+ os = os.slice(0, os.length-4);
+ }
+ for (j = 0; j < select.length; j++) {
+ if (os.match(select[j].value))
+ break;
+ }
+ if (j == select.length) {
+ select.options[select.options.length] = new Option(os);
+ if ((win && os == "Windows") || (mac && os == "darwin") || (linux && os == "ubuntu")) {
+ select.value = os;
+ libiio_type();
+ }
+ }
+ }
+ if (latest_libiio.hasOwnProperty('tarball_url') || latest_libiio.hasOwnProperty('zipball_url'))
+ select.options[select.options.length] = new Option("source");
+ });
+ if (win) {
+ req = jQuery.getJSON("https://api.github.com/repos/analogdevicesinc/plutosdr-m2k-drivers-win/releases/latest");
+ req.done(function(response) {
+ for (i = 0; i < response.assets.length; i++) {
+ if (response.assets[i].content_type == "application/x-msdownload") {
+ jQuery('#drivertest').attr ('href', response.assets[i].browser_download_url);
+ document.getElementById('drivertest').innerHTML = response.name;
+ }
+ }
+ });
+ } else if (mac) {
+ document.getElementById('hidedriver').style.display = "none";
+ } else {
+ document.getElementById('hidedriver').style.display = "none";
+ }
+}
+
+function libiio_type() {
+ var select = document.getElementById("type-select");
+ var os = document.getElementById("os-select").value;
+ select.onchange = null;
+ var i;
+ var j;
+ for (i = select.options.length - 1 ; i >= 0 ; i--) {
+ select.remove(i);
+ }
+ var suffix = "";
+ for (i = 0; i < latest_libiio.assets.length; i++) {
+ if (latest_libiio.assets[i].browser_download_url.match(os)) {
+ suffix = latest_libiio.assets[i].browser_download_url.slice(-4);
+ if (suffix == "r.gz" ) {
+ suffix = ".tar.gz";
+ }
+ for (j = 0; j < select.length; j++) {
+ if (suffix.match(select[j].value))
+ break;
+ }
+ if (j == select.length) {
+ select.options[select.options.length] = new Option(suffix);
+ if (os.match('centos') && suffix.match('.rpm')) {
+ select.value = suffix;
+ }
+ }
+ }
+ }
+ if (os.match('source')) {
+ if (latest_libiio.hasOwnProperty('tarball_url'))
+ select.options[select.options.length] = new Option('.tar');
+ if (latest_libiio.hasOwnProperty('zipball_url'))
+ select.options[select.options.length] = new Option('.zip');
+ }
+ select.onchange = libiio_ver;
+ libiio_ver();
+}
+
+function libiio_ver() {
+ var select = document.getElementById("ver-select");
+ var os = document.getElementById("os-select").value;
+ var suffix = document.getElementById("type-select").value;
+ select.onchange = null;
+ var i;
+ for (i = select.options.length - 1 ; i >= 0 ; i--) {
+ select.remove(i);
+ }
+ for (i = 0; i < latest_libiio.assets.length; i++) {
+ if (latest_libiio.assets[i].browser_download_url.match(os) && latest_libiio.assets[i].browser_download_url.match(suffix)) {
+ var file = latest_libiio.assets[i].name.replace(/libiio-[0-9]*\.[0-9]*.[a-z0-9]*-/, '');
+ file = file.slice(0, file.length - suffix.length);
+ select.options[select.options.length] = new Option(file);
+ if (mac && (file.match(mac) ||
+ file.match(/darwin-10.[0-9]*/) < mac)) {
+ select.value = file;
+ console.log('hit');
+ }
+ }
+ }
+ if (os.match('source')) {
+ select.options[select.options.length] = new Option(latest_libiio.tag_name);
+ }
+ select.onchange = libiio_url;
+ libiio_url();
+}
+
+function libiio_url() {
+ var os = document.getElementById("os-select").value;
+ var suffix = document.getElementById("type-select").value;
+ var ver = document.getElementById("ver-select").value;
+ var i, url;
+ for (i = 0; i < latest_libiio.assets.length; i++) {
+ url = latest_libiio.assets[i].browser_download_url;
+ if (url.match(ver) && url.match(os) && url.match(suffix)) {
+ jQuery('#libtest').attr ('href', url);
+ document.getElementById('libtest').innerHTML = latest_libiio.assets[i].name;
+ }
+ }
+ if (os.match('source')) {
+ if (suffix.match('.tar')) {
+ document.getElementById('libtest').innerHTML = "Source code (tar)";
+ jQuery('#libtest').attr ('href', latest_libiio.tarball_url);
+ }
+ if (suffix.match('.zip')) {
+ document.getElementById('libtest').innerHTML = "Source code (zip)";
+ jQuery('#libtest').attr ('href', latest_libiio.zipball_url);
+ }
+
+ }
+}
+
+function CheckFrmVersion() {
+ GetDriverurl();
+ var req = jQuery.getJSON("https://api.github.com/repos/analogdevicesinc/plutosdr-fw/releases");
+ req.fail(function() {
+ document.getElementById('versiontest').innerHTML = "Can't check right now, try manually";
+ document.getElementById('sysroot').innerHTML = "Latest SysRoot";
+ });
+ req.done(function(response) {
+ var VerOnGithub = response[0].name;
+ var VerLocal = "#BUILD#";
+ if (VerLocal.match(/BUILD/)) {
+ document.getElementById('versiontest').innerHTML = "Seems not to be deployed";
+ document.getElementById('sysroot').innerHTML = "Unknown SysRoot";
+ jQuery('#sysroot').removeAttr('href');
+ } else {
+ var res = versionCompare(VerLocal, VerOnGithub);
+ var message;
+ var sysroot_message;
+ var j;
+ var k;
+ var sysroot_url = null;
+ for (j = 0; j < response.length; j++) {
+ if (response[j].name.match(VerLocal+"$")) {
+ for (k = 0; k < response[j].assets.length; k++) {
+ if (response[j].assets[k].name.match(/sysroot/i)) {
+ sysroot_url = response[j].assets[k].browser_download_url;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ if (res < 0) {
+ message = "Newer version available online (Version " + VerOnGithub + " )";
+ if (sysroot_url)
+ sysroot_message = "Old Sysroot for firmware " + VerLocal +
+ " (please upgrade firmware to " + VerOnGithub + ")";
+ else
+ sysroot_message = "No Sysroot for firmware " + VerLocal +
+ " (please upgrade firmware to " + VerOnGithub + ")";
+ document.getElementById('versionsection').className = "download";
+ } else if (res > 0) {
+ message = "Wow! Your Pluto Firmware Version " + VerLocal +
+ " is newer than (" + VerOnGithub + ") on Github.";
+ sysroot_message = "Firmware " + VerLocal + " doesn't have pre-built SYSROOT";
+ jQuery('#sysroot').removeAttr('href');
+ document.getElementById('versionsection').className = "";
+ document.getElementById('plutsdr-fw-download').style.visibility = "hidden";
+ document.getElementById('hideupgrade').style.display = "none";
+ } else if (res == 0) {
+ message = "Pluto is using the same version as latest release!";
+ sysroot_message = "SYSROOT for firmware version " + VerOnGithub;
+ document.getElementById('versionsection').className = "";
+ document.getElementById('plutsdr-fw-download').style.visibility = "hidden";
+ document.getElementById('hideupgrade').style.display = "none";
+ } else {
+ message = "Failure in comparing version, latest upstream is " + VerOnGithub;
+ sysroot_message = "SYSROOT for firmware version " + VerOnGithub;
+ document.getElementById('versionsection').className = "";
+ }
+ document.getElementById('versiontest').innerHTML = message;
+ document.getElementById('plutsdr-fw-download').innerHTML = "Download version " + VerOnGithub;
+ jQuery('#plutsdr-fw-download').attr ('href', response[0].assets[0].browser_download_url);
+
+ document.getElementById('sysroot').innerHTML = sysroot_message;
+ if(sysroot_url)
+ jQuery('#sysroot').attr ('href', sysroot_url);
+ else
+ jQuery('#sysroot').removeAttr('href');
+ }
+ });
+}
+
+window.onload = CheckFrmVersion;
diff --git a/firmware/ori/board/pluto/msd/runme0.sh b/firmware/ori/board/pluto/msd/runme0.sh
new file mode 100755
index 0000000..613ef91
--- /dev/null
+++ b/firmware/ori/board/pluto/msd/runme0.sh
@@ -0,0 +1,43 @@
+# runme0.sh examples
+# uncomment then eject PlutoSDR USB drive to run.
+
+
+### Quick status report, available as txt file on USB mass storage.
+#ps > /mnt/msd/status.txt
+#echo " " >> /mnt/msd/status.txt
+#uptime >> /mnt/msd/status.txt
+#echo " " >> /mnt/msd/status.txt
+#mount >> /mnt/msd/status.txt
+
+### Start WBFM stream (Luaradio)
+
+## Pluto streams audio to 0.0.0.0:4444/TCP. Goto host-scripts to listen radio.
+#/root/wbfmradio-stdout 100500000 | /usr/bin/nmux -p 4444 -a 0.0.0.0 &
+## or using nc :
+#while true; do /root/wbfmradio-stdout 87900000 | /usr/bin/nc -l -p 4444; done &
+
+## listening on remote computer :
+## cvlc tcp://pluto.local:4444 --demux=rawaud --rawaud-channels 1 --rawaud-samplerate 48000
+## or : nc pluto.local 4444 | ffplay -f s16le -ar 48k -ac 1 -
+## or using vlc: --demux=rawaud --rawaud-channels 1 --rawaud-samplerate 48000 tcp://pluto.local:4444
+
+### Kill WBFM streamer
+#killall -9 nmux wbfmradio
+
+### Send sample picture SSTV
+#/root/tx-sstv.sh 434000000 /tmp/send.png.wav
+
+### Send your own SSTV picture (drag sstv.png picture to USB mass storage, then eject)
+#/root/send-sstv.sh 434000000
+
+### RTL_433 (use 'telnet pluto.local 1234' on host computer for log)
+#/usr/bin/rtl_433 -d driver=plutosdr,uri=local: -l 110 -g 58 -C si | nmux -a 0.0.0.0 -p 1234 &
+
+### Kill RTL_433
+#killall -9 rtl_433 nmux
+
+### Send CW message
+#/usr/bin/python /root/CW-pluto.py -f 144250000 -w 15 "TEST TEST TEST DE $CALLSIGN $CALLSIGN"
+
+### Plot 100MHz BW spectrum centered on 900MHz, spacing 50kHz. Resulting plot : http://pluto.local/plot.html
+#/root/signal.sh 750 850 50
diff --git a/firmware/ori/board/pluto/overlay/etc/chrony.conf b/firmware/ori/board/pluto/overlay/etc/chrony.conf
new file mode 100644
index 0000000..8f36c1f
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/chrony.conf
@@ -0,0 +1,10 @@
+server ntp.metas.ch
+server swisstime.ethz.ch
+server chronos.cru.fr
+server ntp.univ-lyon1.fr
+
+# NTP via GPS
+refclock SHM 0 refid NMEA offset 0.000 precision 1e-3 poll 3
+makestep 1 -1
+
+
diff --git a/firmware/ori/board/pluto/overlay/etc/exports b/firmware/ori/board/pluto/overlay/etc/exports
new file mode 100644
index 0000000..870d457
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/exports
@@ -0,0 +1,3 @@
+# /mnt/jffs2 192.168.0.0/16(rw,async,insecure,fsid=0,all_squash,anonuid=0,anongid=0,no_subtree_check)
+/tmp 192.168.0.0/16(rw,async,insecure,fsid=0,all_squash,anonuid=0,anongid=0,no_subtree_check)
+
diff --git a/firmware/ori/board/pluto/overlay/etc/hostapd.conf b/firmware/ori/board/pluto/overlay/etc/hostapd.conf
new file mode 100644
index 0000000..392839f
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/hostapd.conf
@@ -0,0 +1,12 @@
+interface=wlan0
+# Kernel driver; most modern drivers use nl80211
+driver=nl80211
+# The AP "friendly name"; change to anything you like
+ssid=PlutoAP
+# Use 802.11g, not the glacially-slow b
+hw_mode=g
+# Arbitrarily choose radio channel from 1, 6, or 11, the only useful 2.4GHz ones
+channel=11
+
+
+#hostapd -B /etc/hostapd.conf
diff --git a/firmware/ori/board/pluto/overlay/etc/httpd.conf b/firmware/ori/board/pluto/overlay/etc/httpd.conf
new file mode 100644
index 0000000..7e3715f
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/httpd.conf
@@ -0,0 +1,2 @@
+*.php:/usr/bin/php-cgi
+.svg:image/svg+xml
\ No newline at end of file
diff --git a/firmware/ori/board/pluto/overlay/etc/init.d/S49chrony b/firmware/ori/board/pluto/overlay/etc/init.d/S49chrony
new file mode 100755
index 0000000..f75233f
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/init.d/S49chrony
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# Start chrony
+
+[ -r /etc/default/chrony ] && . /etc/default/chrony
+
+case "$1" in
+ start)
+ printf "Starting chrony: "
+ chronyd $CHRONY_ARGS && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+ printf "Stopping chrony: "
+ killall chronyd && echo "OK" || echo "FAIL"
+ ;;
+ restart|reload)
+ "$0" stop
+ sleep 1
+ "$0" start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/firmware/ori/board/pluto/overlay/etc/init.d/S50gpsd b/firmware/ori/board/pluto/overlay/etc/init.d/S50gpsd
new file mode 100755
index 0000000..e039866
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/init.d/S50gpsd
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Starts the gps daemon.
+#
+
+NAME=gpsd
+DAEMON=/usr/sbin/$NAME
+DEVICES="/dev/ttyACM0"
+PIDFILE=/var/run/$NAME.pid
+GPSD_OPTIONS="-G -n -r"
+
+start() {
+ printf "Starting $NAME: "
+ start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -P $PIDFILE $DEVICES $GPSD_OPTIONS && echo "OK" || echo "Failed"
+ sleep 3
+ gpsctl --nmea
+}
+stop() {
+ printf "Stopping $NAME: "
+ start-stop-daemon -K -q -p $PIDFILE && echo "OK" || echo "Failed"
+ rm -f $PIDFILE
+}
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/firmware/ori/board/pluto/overlay/etc/init.d/S91nfs-mount b/firmware/ori/board/pluto/overlay/etc/init.d/S91nfs-mount
new file mode 100755
index 0000000..3e7b7a4
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/init.d/S91nfs-mount
@@ -0,0 +1,50 @@
+#!/bin/sh
+nfs_server=`fw_printenv -n nfs_server 2> /dev/null`
+
+start() {
+ if [[ -n $nfs_server ]]
+ then
+
+ echo "mounting NFS volume : $nfs_server on /root/remote"
+ mkdir -p /root/remote
+ #eval 'mount -t nfs -o defaults,_netdev,bg,vers=3,intr,hard,timeo=50 $nfs_server /root/remote'
+ mount -t nfs $nfs_server /root/remote
+ #ex: fw_setenv nfs_server "192.168.2.10:/home/linuxdev/prog"
+
+ else
+
+ echo "Nothing to do"
+ fi
+}
+
+stop() {
+
+ umount /remote
+ echo "Stopping NFS"
+}
+
+restart() {
+ stop
+ start
+}
+
+# start/stop/restart
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ restart
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
+
+
+
diff --git a/firmware/ori/board/pluto/overlay/etc/mosquitto/mosquitto.conf b/firmware/ori/board/pluto/overlay/etc/mosquitto/mosquitto.conf
new file mode 100644
index 0000000..8d43908
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/mosquitto/mosquitto.conf
@@ -0,0 +1,7 @@
+user root
+allow_anonymous true
+listener 1883
+listener 9001
+protocol websockets
+
+
diff --git a/firmware/ori/board/pluto/overlay/etc/motd b/firmware/ori/board/pluto/overlay/etc/motd
new file mode 100644
index 0000000..c75cf33
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/motd
@@ -0,0 +1,15 @@
+Welcome to:
+______ _ _ ______ ___ _____ _ _
+| ___ \ | | | | _ \/ _ \_ _| | | |
+| |_/ / |_ _| |_ ___ | | | / /_\ \| | | | | |
+| __/| | | | | __/ _ \| | | | _ || | | | | |
+| | | | |_| | || (_) | |/ /| | | || | \ \_/ /
+\_| |_|\__,_|\__\___/|___/ \_| |_/\_/ \___/
+
+ __ __ _ __ _
+|_ \/ |_ |_ / \|_ / \
+|_) / | __)\_/|__\_/
+
+
+#BUILD#
+
diff --git a/firmware/ori/board/pluto/overlay/etc/ntp.conf b/firmware/ori/board/pluto/overlay/etc/ntp.conf
new file mode 100644
index 0000000..1780676
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/ntp.conf
@@ -0,0 +1,11 @@
+server ntp.metas.ch
+server swisstime.ethz.ch
+server chronos.cru.fr
+server ntp.univ-lyon1.fr
+
+# NTP via GPS
+server 127.127.28.0
+fudge 127.127.28.0 time1 0.183 flag1 1 refid GPS
+server 127.127.28.1 minpoll 4 prefer
+fudge 127.127.28.1 refid PPS
+tinker panic 0
diff --git a/firmware/ori/board/pluto/overlay/etc/olsrd/olsrd.conf b/firmware/ori/board/pluto/overlay/etc/olsrd/olsrd.conf
new file mode 100644
index 0000000..6f9356b
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/olsrd/olsrd.conf
@@ -0,0 +1,22 @@
+LinkQualityFishEye 0
+AllowNoInt yes
+
+Interface "eth0"
+{
+}
+
+Interface "gse0"
+{
+}
+
+Interface "usb0"
+{
+}
+
+
+# This is only here to be able to generate a
+# configuration file with the script
+LoadPlugin "/usr/lib/olsrd_jsoninfo.so.1.1"
+{
+ PlParam "port" "56789"
+}
diff --git a/firmware/ori/board/pluto/overlay/etc/opkg/opkg.conf b/firmware/ori/board/pluto/overlay/etc/opkg/opkg.conf
new file mode 100644
index 0000000..ac9f1e9
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/opkg/opkg.conf
@@ -0,0 +1,3 @@
+dest root /
+src web http://www.lamableu.net/pluto/ipk
+
diff --git a/firmware/ori/board/pluto/overlay/etc/php.ini b/firmware/ori/board/pluto/overlay/etc/php.ini
new file mode 100755
index 0000000..4643452
--- /dev/null
+++ b/firmware/ori/board/pluto/overlay/etc/php.ini
@@ -0,0 +1,1914 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About php.ini ;
+;;;;;;;;;;;;;;;;;;;
+; PHP's initialization file, generally called php.ini, is responsible for
+; configuring many of the aspects of PHP's behavior.
+
+; PHP attempts to find and load this configuration from a number of locations.
+; The following is a summary of its search order:
+; 1. SAPI module specific location.
+; 2. The PHPRC environment variable. (As of PHP 5.2.0)
+; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
+; 4. Current working directory (except CLI)
+; 5. The web server's directory (for SAPI modules), or directory of PHP
+; (otherwise in Windows)
+; 6. The directory from the --with-config-file-path compile time option, or the
+; Windows directory (C:\windows or C:\winnt)
+; See the PHP docs for more specific information.
+; http://php.net/configuration.file
+
+; The syntax of the file is extremely simple. Whitespace and lines
+; beginning with a semicolon are silently ignored (as you probably guessed).
+; Section headers (e.g. [Foo]) are also silently ignored, even though
+; they might mean something in the future.
+
+; Directives following the section heading [PATH=/www/mysite] only
+; apply to PHP files in the /www/mysite directory. Directives
+; following the section heading [HOST=www.example.com] only apply to
+; PHP files served from www.example.com. Directives set in these
+; special sections cannot be overridden by user-defined INI files or
+; at runtime. Currently, [PATH=] and [HOST=] sections only work under
+; CGI/FastCGI.
+; http://php.net/ini.sections
+
+; Directives are specified using the following syntax:
+; directive = value
+; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
+; Directives are variables used to configure PHP or PHP extensions.
+; There is no name validation. If PHP can't find an expected
+; directive because it is not set or is mistyped, a default value will be used.
+
+; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
+; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
+; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a
+; previously set variable or directive (e.g. ${foo})
+
+; Expressions in the INI file are limited to bitwise operators and parentheses:
+; | bitwise OR
+; ^ bitwise XOR
+; & bitwise AND
+; ~ bitwise NOT
+; ! boolean NOT
+
+; Boolean flags can be turned on using the values 1, On, True or Yes.
+; They can be turned off using the values 0, Off, False or No.
+
+; An empty string can be denoted by simply not writing anything after the equal
+; sign, or by using the None keyword:
+
+; foo = ; sets foo to an empty string
+; foo = None ; sets foo to an empty string
+; foo = "None" ; sets foo to the string 'None'
+
+; If you use constants in your value, and these constants belong to a
+; dynamically loaded extension (either a PHP extension or a Zend extension),
+; you may only use these constants *after* the line that loads the extension.
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+; PHP comes packaged with two INI files. One that is recommended to be used
+; in production environments and one that is recommended to be used in
+; development environments.
+
+; php.ini-production contains settings which hold security, performance and
+; best practices at its core. But please be aware, these settings may break
+; compatibility with older or less security conscience applications. We
+; recommending using the production ini in production and testing environments.
+
+; php.ini-development is very similar to its production variant, except it is
+; much more verbose when it comes to errors. We recommend using the
+; development version only in development environments, as errors shown to
+; application users can inadvertently leak otherwise secure information.
+
+; This is php.ini-production INI file.
+
+;;;;;;;;;;;;;;;;;;;
+; Quick Reference ;
+;;;;;;;;;;;;;;;;;;;
+; The following are all the settings which are different in either the production
+; or development versions of the INIs with respect to PHP's default behavior.
+; Please see the actual settings later in the document for more details as to why
+; we recommend these changes in PHP's behavior.
+
+; display_errors
+; Default Value: On
+; Development Value: On
+; Production Value: Off
+
+; display_startup_errors
+; Default Value: Off
+; Development Value: On
+; Production Value: Off
+
+; error_reporting
+; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
+; Development Value: E_ALL
+; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
+
+; html_errors
+; Default Value: On
+; Development Value: On
+; Production value: On
+
+; log_errors
+; Default Value: Off
+; Development Value: On
+; Production Value: On
+
+; max_input_time
+; Default Value: -1 (Unlimited)
+; Development Value: 60 (60 seconds)
+; Production Value: 60 (60 seconds)
+
+; output_buffering
+; Default Value: Off
+; Development Value: 4096
+; Production Value: 4096
+
+; register_argc_argv
+; Default Value: On
+; Development Value: Off
+; Production Value: Off
+
+; request_order
+; Default Value: None
+; Development Value: "GP"
+; Production Value: "GP"
+
+; session.gc_divisor
+; Default Value: 100
+; Development Value: 1000
+; Production Value: 1000
+
+; session.sid_bits_per_character
+; Default Value: 4
+; Development Value: 5
+; Production Value: 5
+
+; short_open_tag
+; Default Value: On
+; Development Value: Off
+; Production Value: Off
+
+; track_errors
+; Default Value: Off
+; Development Value: On
+; Production Value: Off
+
+; variables_order
+; Default Value: "EGPCS"
+; Development Value: "GPCS"
+; Production Value: "GPCS"
+
+;;;;;;;;;;;;;;;;;;;;
+; php.ini Options ;
+;;;;;;;;;;;;;;;;;;;;
+; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
+;user_ini.filename = ".user.ini"
+
+; To disable this feature set this option to empty value
+;user_ini.filename =
+
+; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
+;user_ini.cache_ttl = 300
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+; http://php.net/engine
+engine = On
+
+; This directive determines whether or not PHP will recognize code between
+; and ?> tags as PHP source which should be processed as such. It is
+; generally recommended that should be used and that this feature
+; should be disabled, as enabling it may result in issues when generating XML
+; documents, however this remains supported for backward compatibility reasons.
+; Note that this directive does not control the = shorthand tag, which can be
+; used regardless of this directive.
+; Default Value: On
+; Development Value: Off
+; Production Value: Off
+; http://php.net/short-open-tag
+short_open_tag = Off
+
+; The number of significant digits displayed in floating point numbers.
+; http://php.net/precision
+precision = 14
+
+; Output buffering is a mechanism for controlling how much output data
+; (excluding headers and cookies) PHP should keep internally before pushing that
+; data to the client. If your application's output exceeds this setting, PHP
+; will send that data in chunks of roughly the size you specify.
+; Turning on this setting and managing its maximum buffer size can yield some
+; interesting side-effects depending on your application and web server.
+; You may be able to send headers and cookies after you've already sent output
+; through print or echo. You also may see performance benefits if your server is
+; emitting less packets due to buffered output versus PHP streaming the output
+; as it gets it. On production servers, 4096 bytes is a good setting for performance
+; reasons.
+; Note: Output buffering can also be controlled via Output Buffering Control
+; functions.
+; Possible Values:
+; On = Enabled and buffer is unlimited. (Use with caution)
+; Off = Disabled
+; Integer = Enables the buffer and sets its maximum size in bytes.
+; Note: This directive is hardcoded to Off for the CLI SAPI
+; Default Value: Off
+; Development Value: 4096
+; Production Value: 4096
+; http://php.net/output-buffering
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function. For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+; directive. Instead, explicitly set the output handler using ob_start().
+; Using this ini directive may cause problems unless you know what script
+; is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
+; Note: output_handler must be empty if this is set 'On' !!!!
+; Instead you must use zlib.output_handler.
+; http://php.net/output-handler
+;output_handler =
+
+; URL rewriter function rewrites URL on the fly by using
+; output buffer. You can set target tags by this configuration.
+; "form" tag is special tag. It will add hidden input tag to pass values.
+; Refer to session.trans_sid_tags for usage.
+; Default Value: "form="
+; Development Value: "form="
+; Production Value: "form="
+;url_rewriter.tags
+
+; URL rewriter will not rewrites absolute URL nor form by default. To enable
+; absolute URL rewrite, allowed hosts must be defined at RUNTIME.
+; Refer to session.trans_sid_hosts for more details.
+; Default Value: ""
+; Development Value: ""
+; Production Value: ""
+;url_rewriter.hosts
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP
+; outputs chunks that are few hundreds bytes each as a result of
+; compression. If you prefer a larger chunk size for better
+; performance, enable output_buffering in addition.
+; Note: You need to use zlib.output_handler instead of the standard
+; output_handler, or otherwise the output will be corrupted.
+; http://php.net/zlib.output-compression
+zlib.output_compression = Off
+
+; http://php.net/zlib.output-compression-level
+;zlib.output_compression_level = -1
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+; http://php.net/zlib.output-handler
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block. This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block. Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+; http://php.net/implicit-flush
+; Note: This directive is hardcoded to On for the CLI SAPI
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instantiated. A warning appears if the specified function is
+; not defined, or if the function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a
+; callback-function.
+unserialize_callback_func =
+
+; When floats & doubles are serialized, store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+; The value is also used for json_encode when encoding double values.
+; If -1 is used, then dtoa mode 0 is used which automatically select the best
+; precision.
+serialize_precision = -1
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below. This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file.
+; http://php.net/open-basedir
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names.
+; http://php.net/disable-functions
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names.
+; http://php.net/disable-classes
+disable_classes =
+
+; Colors for Syntax Highlighting mode. Anything that's acceptable in
+; would work.
+; http://php.net/syntax-highlighting
+;highlight.string = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.default = #0000BB
+;highlight.html = #000000
+
+; If enabled, the request will be allowed to complete even if the user aborts
+; the request. Consider enabling it if executing long requests, which may end up
+; being interrupted by the user or a browser timing out. PHP's default behavior
+; is to disable this feature.
+; http://php.net/ignore-user-abort
+;ignore_user_abort = On
+
+; Determines the size of the realpath cache to be used by PHP. This value should
+; be increased on systems where PHP opens many files to reflect the quantity of
+; the file operations performed.
+; http://php.net/realpath-cache-size
+;realpath_cache_size = 4096k
+
+; Duration of time, in seconds for which to cache realpath information for a given
+; file or directory. For systems with rarely changing files, consider increasing this
+; value.
+; http://php.net/realpath-cache-ttl
+;realpath_cache_ttl = 120
+
+; Enables or disables the circular reference collector.
+; http://php.net/zend.enable-gc
+zend.enable_gc = On
+
+; If enabled, scripts may be written in encodings that are incompatible with
+; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
+; encodings. To use this feature, mbstring extension must be enabled.
+; Default: Off
+;zend.multibyte = Off
+
+; Allows to set the default encoding for the scripts. This value will be used
+; unless "declare(encoding=...)" directive appears at the top of the script.
+; Only affects if zend.multibyte is set.
+; Default: ""
+;zend.script_encoding =
+
+;;;;;;;;;;;;;;;;;
+; Miscellaneous ;
+;;;;;;;;;;;;;;;;;
+
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header). It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+; http://php.net/expose-php
+expose_php = On
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+; Maximum execution time of each script, in seconds
+; http://php.net/max-execution-time
+; Note: This directive is hardcoded to 0 for the CLI SAPI
+max_execution_time = 90
+
+; Maximum amount of time each script may spend parsing request data. It's a good
+; idea to limit this time on productions servers in order to eliminate unexpectedly
+; long running scripts.
+; Note: This directive is hardcoded to -1 for the CLI SAPI
+; Default Value: -1 (Unlimited)
+; Development Value: 60 (60 seconds)
+; Production Value: 60 (60 seconds)
+; http://php.net/max-input-time
+max_input_time = 120
+
+; Maximum input variable nesting level
+; http://php.net/max-input-nesting-level
+;max_input_nesting_level = 64
+
+; How many GET/POST/COOKIE input variables may be accepted
+; max_input_vars = 1000
+
+; Maximum amount of memory a script may consume (128MB)
+; http://php.net/memory-limit
+memory_limit = 128M
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; This directive informs PHP of which errors, warnings and notices you would like
+; it to take action for. The recommended way of setting values for this
+; directive is through the use of the error level constants and bitwise
+; operators. The error level constants are below here for convenience as well as
+; some common settings and their meanings.
+; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
+; those related to E_NOTICE and E_STRICT, which together cover best practices and
+; recommended coding standards in PHP. For performance reasons, this is the
+; recommend error reporting setting. Your production server shouldn't be wasting
+; resources complaining about best practices and coding standards. That's what
+; development servers and development settings are for.
+; Note: The php.ini-development file has this setting as E_ALL. This
+; means it pretty much reports everything which is exactly what you want during
+; development and early testing.
+;
+; Error Level Constants:
+; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
+; E_ERROR - fatal run-time errors
+; E_RECOVERABLE_ERROR - almost fatal run-time errors
+; E_WARNING - run-time warnings (non-fatal errors)
+; E_PARSE - compile-time parse errors
+; E_NOTICE - run-time notices (these are warnings which often result
+; from a bug in your code, but it's possible that it was
+; intentional (e.g., using an uninitialized variable and
+; relying on the fact it is automatically initialized to an
+; empty string)
+; E_STRICT - run-time notices, enable to have PHP suggest changes
+; to your code which will ensure the best interoperability
+; and forward compatibility of your code
+; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
+; initial startup
+; E_COMPILE_ERROR - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR - user-generated error message
+; E_USER_WARNING - user-generated warning message
+; E_USER_NOTICE - user-generated notice message
+; E_DEPRECATED - warn about code that will not work in future versions
+; of PHP
+; E_USER_DEPRECATED - user-generated deprecation warnings
+;
+; Common Values:
+; E_ALL (Show all errors, warnings and notices including coding standards.)
+; E_ALL & ~E_NOTICE (Show all errors, except for notices)
+; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
+; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
+; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
+; Development Value: E_ALL
+; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
+; http://php.net/error-reporting
+error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
+
+; This directive controls whether or not and where PHP will output errors,
+; notices and warnings too. Error output is very useful during development, but
+; it could be very dangerous in production environments. Depending on the code
+; which is triggering the error, sensitive information could potentially leak
+; out of your application such as database usernames and passwords or worse.
+; For production environments, we recommend logging errors rather than
+; sending them to STDOUT.
+; Possible Values:
+; Off = Do not display any errors
+; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
+; On or stdout = Display errors to STDOUT
+; Default Value: On
+; Development Value: On
+; Production Value: Off
+; http://php.net/display-errors
+display_errors = Off
+
+; The display of errors which occur during PHP's startup sequence are handled
+; separately from display_errors. PHP's default behavior is to suppress those
+; errors from clients. Turning the display of startup errors on can be useful in
+; debugging configuration problems. We strongly recommend you
+; set this to 'off' for production servers.
+; Default Value: Off
+; Development Value: On
+; Production Value: Off
+; http://php.net/display-startup-errors
+display_startup_errors = Off
+
+; Besides displaying errors, PHP can also log errors to locations such as a
+; server-specific log, STDERR, or a location specified by the error_log
+; directive found below. While errors should not be displayed on productions
+; servers they should still be monitored and logging is a great way to do that.
+; Default Value: Off
+; Development Value: On
+; Production Value: On
+; http://php.net/log-errors
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+; http://php.net/log-errors-max-len
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line unless ignore_repeated_source is set true.
+; http://php.net/ignore-repeated-errors
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting
+; is On you will not log errors with repeated messages from different files or
+; source lines.
+; http://php.net/ignore-repeated-source
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if
+; error reporting includes E_WARNING in the allowed list
+; http://php.net/report-memleaks
+report_memleaks = On
+
+; This setting is on by default.
+;report_zend_debug = 0
+
+; Store the last error/warning message in $php_errormsg (boolean). Setting this value
+; to On can assist in debugging and is appropriate for development servers. It should
+; however be disabled on production servers.
+; This directive is DEPRECATED.
+; Default Value: Off
+; Development Value: Off
+; Production Value: Off
+; http://php.net/track-errors
+;track_errors = Off
+
+; Turn off normal error reporting and emit XML-RPC error XML
+; http://php.net/xmlrpc-errors
+;xmlrpc_errors = 0
+
+; An XML-RPC faultCode
+;xmlrpc_error_number = 0
+
+; When PHP displays or logs an error, it has the capability of formatting the
+; error message as HTML for easier reading. This directive controls whether
+; the error message is formatted as HTML or not.
+; Note: This directive is hardcoded to Off for the CLI SAPI
+; Default Value: On
+; Development Value: On
+; Production value: On
+; http://php.net/html-errors
+html_errors = On
+
+; If html_errors is set to On *and* docref_root is not empty, then PHP
+; produces clickable error messages that direct to a page describing the error
+; or function causing the error in detail.
+; You can download a copy of the PHP manual from http://php.net/docs
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including
+; the dot. PHP's default behavior is to leave these settings empty, in which
+; case no links to documentation are generated.
+; Note: Never use this feature for production boxes.
+; http://php.net/docref-root
+; Examples
+;docref_root = "/phpmanual/"
+
+; http://php.net/docref-ext
+;docref_ext = .html
+
+; String to output before an error message. PHP's default behavior is to leave
+; this setting blank.
+; http://php.net/error-prepend-string
+; Example:
+;error_prepend_string = ""
+
+; String to output after an error message. PHP's default behavior is to leave
+; this setting blank.
+; http://php.net/error-append-string
+; Example:
+;error_append_string = ""
+
+; Log errors to specified file. PHP's default behavior is to leave this value
+; empty.
+; http://php.net/error-log
+; Example:
+;error_log = php_errors.log
+; Log errors to syslog (Event Log on Windows).
+;error_log = syslog
+
+;windows.show_crt_warning
+; Default value: 0
+; Development value: 0
+; Production value: 0
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+
+; The separator used in PHP generated URLs to separate arguments.
+; PHP's default setting is "&".
+; http://php.net/arg-separator.output
+; Example:
+;arg_separator.output = "&"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; PHP's default setting is "&".
+; NOTE: Every character in this directive is considered as separator!
+; http://php.net/arg-separator.input
+; Example:
+;arg_separator.input = ";&"
+
+; This directive determines which super global arrays are registered when PHP
+; starts up. G,P,C,E & S are abbreviations for the following respective super
+; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
+; paid for the registration of these arrays and because ENV is not as commonly
+; used as the others, ENV is not recommended on productions servers. You
+; can still get access to the environment variables through getenv() should you
+; need to.
+; Default Value: "EGPCS"
+; Development Value: "GPCS"
+; Production Value: "GPCS";
+; http://php.net/variables-order
+variables_order = "GPCS"
+
+; This directive determines which super global data (G,P & C) should be
+; registered into the super global array REQUEST. If so, it also determines
+; the order in which that data is registered. The values for this directive
+; are specified in the same manner as the variables_order directive,
+; EXCEPT one. Leaving this value empty will cause PHP to use the value set
+; in the variables_order directive. It does not mean it will leave the super
+; globals array REQUEST empty.
+; Default Value: None
+; Development Value: "GP"
+; Production Value: "GP"
+; http://php.net/request-order
+request_order = "GP"
+
+; This directive determines whether PHP registers $argv & $argc each time it
+; runs. $argv contains an array of all the arguments passed to PHP when a script
+; is invoked. $argc contains an integer representing the number of arguments
+; that were passed when the script was invoked. These arrays are extremely
+; useful when running scripts from the command line. When this directive is
+; enabled, registering these variables consumes CPU cycles and memory each time
+; a script is executed. For performance reasons, this feature should be disabled
+; on production servers.
+; Note: This directive is hardcoded to On for the CLI SAPI
+; Default Value: On
+; Development Value: Off
+; Production Value: Off
+; http://php.net/register-argc-argv
+register_argc_argv = On
+
+; When enabled, the ENV, REQUEST and SERVER variables are created when they're
+; first used (Just In Time) instead of when the script starts. If these
+; variables are not used within a script, having this directive on will result
+; in a performance gain. The PHP directive register_argc_argv must be disabled
+; for this directive to have any affect.
+; http://php.net/auto-globals-jit
+auto_globals_jit = On
+
+; Whether PHP will read the POST data.
+; This option is enabled by default.
+; Most likely, you won't want to disable this option globally. It causes $_POST
+; and $_FILES to always be empty; the only way you will be able to read the
+; POST data will be through the php://input stream wrapper. This can be useful
+; to proxy requests or to process the POST data in a memory efficient fashion.
+; http://php.net/enable-post-data-reading
+;enable_post_data_reading = Off
+
+; Maximum size of POST data that PHP will accept.
+; Its value may be 0 to disable the limit. It is ignored if POST data reading
+; is disabled through enable_post_data_reading.
+; http://php.net/post-max-size
+post_max_size = 30M
+
+; Automatically add files before PHP document.
+; http://php.net/auto-prepend-file
+auto_prepend_file =
+
+; Automatically add files after PHP document.
+; http://php.net/auto-append-file
+auto_append_file =
+
+; By default, PHP will output a media type using the Content-Type header. To
+; disable this, simply set it to be empty.
+;
+; PHP's built-in default media type is set to text/html.
+; http://php.net/default-mimetype
+default_mimetype = "text/html"
+
+; PHP's default character set is set to UTF-8.
+; http://php.net/default-charset
+default_charset = "UTF-8"
+
+; PHP internal character encoding is set to empty.
+; If empty, default_charset is used.
+; http://php.net/internal-encoding
+;internal_encoding =
+
+; PHP input character encoding is set to empty.
+; If empty, default_charset is used.
+; http://php.net/input-encoding
+;input_encoding =
+
+; PHP output character encoding is set to empty.
+; If empty, default_charset is used.
+; See also output_buffer.
+; http://php.net/output-encoding
+;output_encoding =
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+;
+; PHP's default setting for include_path is ".;/path/to/php/pear"
+; http://php.net/include-path
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues. The alternate is to use the
+; cgi.force_redirect configuration below
+; http://php.net/doc-root
+doc_root =
+
+; The directory under which PHP opens the script using /~username used only
+; if nonempty.
+; http://php.net/user-dir
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; http://php.net/extension-dir
+; extension_dir = "./"
+; On windows:
+; extension_dir = "ext"
+
+; Directory where the temporary files should be placed.
+; Defaults to the system default (see sys_get_temp_dir)
+; sys_temp_dir = "/tmp"
+
+; Whether or not to enable the dl() function. The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+; http://php.net/enable-dl
+enable_dl = Off
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers. Left undefined, PHP turns this on by default. You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; http://php.net/cgi.force-redirect
+cgi.force_redirect = 0
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request. PHP's default behavior is to disable this feature.
+;cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution. Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; http://php.net/cgi.redirect-status-env
+;cgi.redirect_status_env =
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
+; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
+; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; http://php.net/cgi.fix-pathinfo
+;cgi.fix_pathinfo=1
+
+; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside
+; of the web tree and people will not be able to circumvent .htaccess security.
+; http://php.net/cgi.dicard-path
+;cgi.discard_path=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client. This allows IIS to define the
+; security context that the request runs under. mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS. Default is zero.
+; http://php.net/fastcgi.impersonate
+;fastcgi.impersonate = 1
+
+; Disable logging through FastCGI connection. PHP's default behavior is to enable
+; this feature.
+;fastcgi.logging = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If set to 0, PHP sends Status: header that
+; is supported by Apache. When this option is set to 1, PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+; http://php.net/cgi.rfc2616-headers
+;cgi.rfc2616_headers = 0
+
+; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #!
+; (shebang) at the top of the running script. This line might be needed if the
+; script support running both as stand-alone script and via PHP CGI<. PHP in CGI
+; mode skips this line and ignores its content if this directive is turned on.
+; http://php.net/cgi.check-shebang-line
+;cgi.check_shebang_line=1
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+; http://php.net/file-uploads
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+; http://php.net/upload-tmp-dir
+upload_tmp_dir = /root/
+
+; Maximum allowed size for uploaded files.
+; http://php.net/upload-max-filesize
+upload_max_filesize = 30M
+
+; Maximum number of files that can be uploaded via a single request
+max_file_uploads = 20
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+; http://php.net/allow-url-fopen
+allow_url_fopen = On
+
+; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
+; http://php.net/allow-url-include
+allow_url_include = Off
+
+; Define the anonymous ftp password (your email address). PHP's default setting
+; for this is empty.
+; http://php.net/from
+;from="john@doe.com"
+
+; Define the User-Agent string. PHP's default setting for this is empty.
+; http://php.net/user-agent
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+; http://php.net/default-socket-timeout
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; http://php.net/auto-detect-line-endings
+;auto_detect_line_endings = Off
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+; extension=modulename
+;
+; For example:
+;
+; extension=mysqli
+;
+; When the extension library to load is not located in the default extension
+; directory, You may specify an absolute path to the library file:
+;
+; extension=/path/to/extension/mysqli.so
+;
+; Note : The syntax used in previous PHP versions ('extension=.so' and
+; 'extension='php_.dll') is supported for legacy reasons and may be
+; deprecated in a future PHP major version. So, when it is possible, please
+; move to the new ('extension=) syntax.
+;
+; Notes for Windows environments :
+;
+; - ODBC support is built in, so no dll is needed for it.
+; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
+; extension folders as well as the separate PECL DLL download (PHP 5+).
+; Be sure to appropriately set the extension_dir directive.
+;
+;extension=bz2
+;extension=curl
+;extension=fileinfo
+;extension=gd2
+;extension=gettext
+;extension=gmp
+;extension=intl
+;extension=imap
+;extension=interbase
+;extension=ldap
+;extension=mbstring
+;extension=exif ; Must be after mbstring as it depends on it
+;extension=mysqli
+;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
+;extension=openssl
+;extension=pdo_firebird
+;extension=pdo_mysql
+;extension=pdo_oci
+;extension=pdo_odbc
+;extension=pdo_pgsql
+;extension=pdo_sqlite
+;extension=pgsql
+;extension=shmop
+
+; The MIBS data available in the PHP distribution must be installed.
+; See http://www.php.net/manual/en/snmp.installation.php
+;extension=snmp
+
+;extension=soap
+;extension=sockets
+;extension=sqlite3
+;extension=tidy
+;extension=xmlrpc
+;extension=xsl
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[CLI Server]
+; Whether the CLI web server uses ANSI color coding in its terminal output.
+cli_server.color = On
+
+[Date]
+; Defines the default timezone used by the date functions
+; http://php.net/date.timezone
+date.timezone = UTC
+
+; http://php.net/date.default-latitude
+;date.default_latitude = 31.7667
+
+; http://php.net/date.default-longitude
+;date.default_longitude = 35.2333
+
+; http://php.net/date.sunrise-zenith
+;date.sunrise_zenith = 90.583333
+
+; http://php.net/date.sunset-zenith
+;date.sunset_zenith = 90.583333
+
+[filter]
+; http://php.net/filter.default
+;filter.default = unsafe_raw
+
+; http://php.net/filter.default-flags
+;filter.default_flags =
+
+[iconv]
+; Use of this INI entry is deprecated, use global input_encoding instead.
+; If empty, default_charset or input_encoding or iconv.input_encoding is used.
+; The precedence is: default_charset < intput_encoding < iconv.input_encoding
+;iconv.input_encoding =
+
+; Use of this INI entry is deprecated, use global internal_encoding instead.
+; If empty, default_charset or internal_encoding or iconv.internal_encoding is used.
+; The precedence is: default_charset < internal_encoding < iconv.internal_encoding
+;iconv.internal_encoding =
+
+; Use of this INI entry is deprecated, use global output_encoding instead.
+; If empty, default_charset or output_encoding or iconv.output_encoding is used.
+; The precedence is: default_charset < output_encoding < iconv.output_encoding
+; To use an output encoding conversion, iconv's output handler must be set
+; otherwise output encoding conversion cannot be performed.
+;iconv.output_encoding =
+
+[intl]
+;intl.default_locale =
+; This directive allows you to produce PHP errors when some error
+; happens within intl functions. The value is the level of the error produced.
+; Default is 0, which does not produce any errors.
+;intl.error_level = E_WARNING
+;intl.use_exceptions = 0
+
+[sqlite3]
+;sqlite3.extension_dir =
+
+[Pcre]
+;PCRE library backtracking limit.
+; http://php.net/pcre.backtrack-limit
+;pcre.backtrack_limit=100000
+
+;PCRE library recursion limit.
+;Please note that if you set this value to a high number you may consume all
+;the available process stack and eventually crash PHP (due to reaching the
+;stack size limit imposed by the Operating System).
+; http://php.net/pcre.recursion-limit
+;pcre.recursion_limit=100000
+
+;Enables or disables JIT compilation of patterns. This requires the PCRE
+;library to be compiled with JIT support.
+;pcre.jit=1
+
+[Pdo]
+; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
+; http://php.net/pdo-odbc.connection-pooling
+;pdo_odbc.connection_pooling=strict
+
+;pdo_odbc.db2_instance_name
+
+[Pdo_mysql]
+; If mysqlnd is used: Number of cache slots for the internal result set cache
+; http://php.net/pdo_mysql.cache_size
+pdo_mysql.cache_size = 2000
+
+; Default socket name for local MySQL connects. If empty, uses the built-in
+; MySQL defaults.
+; http://php.net/pdo_mysql.default-socket
+pdo_mysql.default_socket=
+
+[Phar]
+; http://php.net/phar.readonly
+;phar.readonly = On
+
+; http://php.net/phar.require-hash
+;phar.require_hash = On
+
+;phar.cache_list =
+
+[mail function]
+; For Win32 only.
+; http://php.net/smtp
+SMTP = localhost
+; http://php.net/smtp-port
+smtp_port = 25
+
+; For Win32 only.
+; http://php.net/sendmail-from
+;sendmail_from = me@example.com
+
+; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
+; http://php.net/sendmail-path
+;sendmail_path =
+
+; Force the addition of the specified parameters to be passed as extra parameters
+; to the sendmail binary. These parameters will always replace the value of
+; the 5th parameter to mail().
+;mail.force_extra_parameters =
+
+; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
+mail.add_x_header = On
+
+; The path to a log file that will log all mail() calls. Log entries include
+; the full path of the script, line number, To address and headers.
+;mail.log =
+; Log mail to syslog (Event Log on Windows).
+;mail.log = syslog
+
+[ODBC]
+; http://php.net/odbc.default-db
+;odbc.default_db = Not yet implemented
+
+; http://php.net/odbc.default-user
+;odbc.default_user = Not yet implemented
+
+; http://php.net/odbc.default-pw
+;odbc.default_pw = Not yet implemented
+
+; Controls the ODBC cursor model.
+; Default: SQL_CURSOR_STATIC (default).
+;odbc.default_cursortype
+
+; Allow or prevent persistent links.
+; http://php.net/odbc.allow-persistent
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+; http://php.net/odbc.check-persistent
+odbc.check_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+; http://php.net/odbc.max-persistent
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+; http://php.net/odbc.max-links
+odbc.max_links = -1
+
+; Handling of LONG fields. Returns number of bytes to variables. 0 means
+; passthru.
+; http://php.net/odbc.defaultlrl
+odbc.defaultlrl = 4096
+
+; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of odbc.defaultlrl and odbc.defaultbinmode
+; http://php.net/odbc.defaultbinmode
+odbc.defaultbinmode = 1
+
+;birdstep.max_links = -1
+
+[Interbase]
+; Allow or prevent persistent links.
+ibase.allow_persistent = 1
+
+; Maximum number of persistent links. -1 means no limit.
+ibase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+ibase.max_links = -1
+
+; Default database name for ibase_connect().
+;ibase.default_db =
+
+; Default username for ibase_connect().
+;ibase.default_user =
+
+; Default password for ibase_connect().
+;ibase.default_password =
+
+; Default charset for ibase_connect().
+;ibase.default_charset =
+
+; Default timestamp format.
+ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
+
+; Default date format.
+ibase.dateformat = "%Y-%m-%d"
+
+; Default time format.
+ibase.timeformat = "%H:%M:%S"
+
+[MySQLi]
+
+; Maximum number of persistent links. -1 means no limit.
+; http://php.net/mysqli.max-persistent
+mysqli.max_persistent = -1
+
+; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
+; http://php.net/mysqli.allow_local_infile
+;mysqli.allow_local_infile = On
+
+; Allow or prevent persistent links.
+; http://php.net/mysqli.allow-persistent
+mysqli.allow_persistent = On
+
+; Maximum number of links. -1 means no limit.
+; http://php.net/mysqli.max-links
+mysqli.max_links = -1
+
+; If mysqlnd is used: Number of cache slots for the internal result set cache
+; http://php.net/mysqli.cache_size
+mysqli.cache_size = 2000
+
+; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
+; at MYSQL_PORT.
+; http://php.net/mysqli.default-port
+mysqli.default_port = 3306
+
+; Default socket name for local MySQL connects. If empty, uses the built-in
+; MySQL defaults.
+; http://php.net/mysqli.default-socket
+mysqli.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+; http://php.net/mysqli.default-host
+mysqli.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+; http://php.net/mysqli.default-user
+mysqli.default_user =
+
+; Default password for mysqli_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
+; and reveal this password! And of course, any users with read access to this
+; file will be able to reveal the password as well.
+; http://php.net/mysqli.default-pw
+mysqli.default_pw =
+
+; Allow or prevent reconnect
+mysqli.reconnect = Off
+
+[mysqlnd]
+; Enable / Disable collection of general statistics by mysqlnd which can be
+; used to tune and monitor MySQL operations.
+; http://php.net/mysqlnd.collect_statistics
+mysqlnd.collect_statistics = On
+
+; Enable / Disable collection of memory usage statistics by mysqlnd which can be
+; used to tune and monitor MySQL operations.
+; http://php.net/mysqlnd.collect_memory_statistics
+mysqlnd.collect_memory_statistics = Off
+
+; Records communication from all extensions using mysqlnd to the specified log
+; file.
+; http://php.net/mysqlnd.debug
+;mysqlnd.debug =
+
+; Defines which queries will be logged.
+; http://php.net/mysqlnd.log_mask
+;mysqlnd.log_mask = 0
+
+; Default size of the mysqlnd memory pool, which is used by result sets.
+; http://php.net/mysqlnd.mempool_default_size
+;mysqlnd.mempool_default_size = 16000
+
+; Size of a pre-allocated buffer used when sending commands to MySQL in bytes.
+; http://php.net/mysqlnd.net_cmd_buffer_size
+;mysqlnd.net_cmd_buffer_size = 2048
+
+; Size of a pre-allocated buffer used for reading data sent by the server in
+; bytes.
+; http://php.net/mysqlnd.net_read_buffer_size
+;mysqlnd.net_read_buffer_size = 32768
+
+; Timeout for network requests in seconds.
+; http://php.net/mysqlnd.net_read_timeout
+;mysqlnd.net_read_timeout = 31536000
+
+; SHA-256 Authentication Plugin related. File with the MySQL server public RSA
+; key.
+; http://php.net/mysqlnd.sha256_server_public_key
+;mysqlnd.sha256_server_public_key =
+
+[OCI8]
+
+; Connection: Enables privileged connections using external
+; credentials (OCI_SYSOPER, OCI_SYSDBA)
+; http://php.net/oci8.privileged-connect
+;oci8.privileged_connect = Off
+
+; Connection: The maximum number of persistent OCI8 connections per
+; process. Using -1 means no limit.
+; http://php.net/oci8.max-persistent
+;oci8.max_persistent = -1
+
+; Connection: The maximum number of seconds a process is allowed to
+; maintain an idle persistent connection. Using -1 means idle
+; persistent connections will be maintained forever.
+; http://php.net/oci8.persistent-timeout
+;oci8.persistent_timeout = -1
+
+; Connection: The number of seconds that must pass before issuing a
+; ping during oci_pconnect() to check the connection validity. When
+; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
+; pings completely.
+; http://php.net/oci8.ping-interval
+;oci8.ping_interval = 60
+
+; Connection: Set this to a user chosen connection class to be used
+; for all pooled server requests with Oracle 11g Database Resident
+; Connection Pooling (DRCP). To use DRCP, this value should be set to
+; the same string for all web servers running the same application,
+; the database pool must be configured, and the connection string must
+; specify to use a pooled server.
+;oci8.connection_class =
+
+; High Availability: Using On lets PHP receive Fast Application
+; Notification (FAN) events generated when a database node fails. The
+; database must also be configured to post FAN events.
+;oci8.events = Off
+
+; Tuning: This option enables statement caching, and specifies how
+; many statements to cache. Using 0 disables statement caching.
+; http://php.net/oci8.statement-cache-size
+;oci8.statement_cache_size = 20
+
+; Tuning: Enables statement prefetching and sets the default number of
+; rows that will be fetched automatically after statement execution.
+; http://php.net/oci8.default-prefetch
+;oci8.default_prefetch = 100
+
+; Compatibility. Using On means oci_close() will not close
+; oci_connect() and oci_new_connect() connections.
+; http://php.net/oci8.old-oci-close-semantics
+;oci8.old_oci_close_semantics = Off
+
+[PostgreSQL]
+; Allow or prevent persistent links.
+; http://php.net/pgsql.allow-persistent
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect().
+; Auto reset feature requires a little overheads.
+; http://php.net/pgsql.auto-reset-persistent
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links. -1 means no limit.
+; http://php.net/pgsql.max-persistent
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+; http://php.net/pgsql.max-links
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+; http://php.net/pgsql.ignore-notice
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Notice message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+; http://php.net/pgsql.log-notice
+pgsql.log_notice = 0
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+; http://php.net/bcmath.scale
+bcmath.scale = 0
+
+[browscap]
+; http://php.net/browscap
+;browscap = extra/browscap.ini
+
+[Session]
+; Handler used to store/retrieve data.
+; http://php.net/session.save-handler
+session.save_handler = files
+
+; Argument passed to save_handler. In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this
+; variable in order to use PHP's session functions.
+;
+; The path can be defined as:
+;
+; session.save_path = "N;/path"
+;
+; where N is an integer. Instead of storing all the session files in
+; /path, what this will do is use subdirectories N-levels deep, and
+; store the session data in those directories. This is useful if
+; your OS has problems with many files in one directory, and is
+; a more efficient layout for servers that handle many sessions.
+;
+; NOTE 1: PHP will not create this directory structure automatically.
+; You can use the script in the ext/session dir for that purpose.
+; NOTE 2: See the section on garbage collection below if you choose to
+; use subdirectories for session storage
+;
+; The file storage module creates files using mode 600 by default.
+; You can change that by using
+;
+; session.save_path = "N;MODE;/path"
+;
+; where MODE is the octal representation of the mode. Note that this
+; does not overwrite the process's umask.
+; http://php.net/session.save-path
+;session.save_path = "/tmp"
+
+; Whether to use strict session mode.
+; Strict session mode does not accept uninitialized session ID and regenerate
+; session ID if browser sends uninitialized session ID. Strict mode protects
+; applications from session fixation via session adoption vulnerability. It is
+; disabled by default for maximum compatibility, but enabling it is encouraged.
+; https://wiki.php.net/rfc/strict_sessions
+session.use_strict_mode = 0
+
+; Whether to use cookies.
+; http://php.net/session.use-cookies
+session.use_cookies = 1
+
+; http://php.net/session.cookie-secure
+;session.cookie_secure =
+
+; This option forces PHP to fetch and use a cookie for storing and maintaining
+; the session id. We encourage this operation as it's very helpful in combating
+; session hijacking when not specifying and managing your own session id. It is
+; not the be-all and end-all of session hijacking defense, but it's a good start.
+; http://php.net/session.use-only-cookies
+session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+; http://php.net/session.name
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+; http://php.net/session.auto-start
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+; http://php.net/session.cookie-lifetime
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+; http://php.net/session.cookie-path
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+; http://php.net/session.cookie-domain
+session.cookie_domain =
+
+; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
+; http://php.net/session.cookie-httponly
+session.cookie_httponly =
+
+; Handler used to serialize data. php is the standard serializer of PHP.
+; http://php.net/session.serialize-handler
+session.serialize_handler = php
+
+; Defines the probability that the 'garbage collection' process is started
+; on every session initialization. The probability is calculated by using
+; gc_probability/gc_divisor. Where session.gc_probability is the numerator
+; and gc_divisor is the denominator in the equation. Setting this value to 1
+; when the session.gc_divisor value is 100 will give you approximately a 1% chance
+; the gc will run on any give request.
+; Default Value: 1
+; Development Value: 1
+; Production Value: 1
+; http://php.net/session.gc-probability
+session.gc_probability = 1
+
+; Defines the probability that the 'garbage collection' process is started on every
+; session initialization. The probability is calculated by using the following equation:
+; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
+; session.gc_divisor is the denominator in the equation. Setting this value to 1
+; when the session.gc_divisor value is 100 will give you approximately a 1% chance
+; the gc will run on any give request. Increasing this value to 1000 will give you
+; a 0.1% chance the gc will run on any give request. For high volume production servers,
+; this is a more efficient approach.
+; Default Value: 100
+; Development Value: 1000
+; Production Value: 1000
+; http://php.net/session.gc-divisor
+session.gc_divisor = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+; http://php.net/session.gc-maxlifetime
+session.gc_maxlifetime = 1440
+
+; NOTE: If you are using the subdirectory option for storing session files
+; (see session.save_path above), then garbage collection does *not*
+; happen automatically. You will need to do your own garbage
+; collection through a shell script, cron entry, or some other method.
+; For example, the following script would is the equivalent of
+; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
+; find /path/to/sessions -cmin +24 -type f | xargs rm
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+; http://php.net/session.referer-check
+session.referer_check =
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects
+; or leave this empty to avoid sending anti-caching headers.
+; http://php.net/session.cache-limiter
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+; http://php.net/session.cache-expire
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users' security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+; to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+; in publicly accessible computer.
+; - User may access your site with the same session ID
+; always using URL stored in browser's history or bookmarks.
+; http://php.net/session.use-trans-sid
+session.use_trans_sid = 0
+
+; Set session ID character length. This value could be between 22 to 256.
+; Shorter length than default is supported only for compatibility reason.
+; Users should use 32 or more chars.
+; http://php.net/session.sid-length
+; Default Value: 32
+; Development Value: 26
+; Production Value: 26
+session.sid_length = 26
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+;