summaryrefslogtreecommitdiffstats
path: root/meta-edison-distro
diff options
context:
space:
mode:
Diffstat (limited to 'meta-edison-distro')
-rw-r--r--meta-edison-distro/COPYING.MIT17
-rw-r--r--meta-edison-distro/README118
-rw-r--r--meta-edison-distro/README.sources17
-rw-r--r--meta-edison-distro/conf/distro/poky-edison.conf20
-rw-r--r--meta-edison-distro/conf/layer.conf10
-rw-r--r--meta-edison-distro/files/fs-perms.txt69
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff164
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch14
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch178
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch117
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch15
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch15
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch68
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch15
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch22
-rw-r--r--meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb46
-rw-r--r--meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING14
-rw-r--r--meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb41
-rw-r--r--meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf32
-rw-r--r--meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service10
-rw-r--r--meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c614
-rw-r--r--meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend62
-rw-r--r--meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf24
-rw-r--r--meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch10
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman.inc215
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch35
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch21
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman/connman83
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch15
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb11
-rw-r--r--meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend35
-rw-r--r--meta-edison-distro/recipes-connectivity/hostapd/files/defconfig145
-rw-r--r--meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane1662
-rw-r--r--meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service23
-rw-r--r--meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf107
-rw-r--r--meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service15
-rw-r--r--meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb51
-rw-r--r--meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend2
-rw-r--r--meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend1
-rw-r--r--meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket13
-rw-r--r--meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service7
-rw-r--r--meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend1
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb22
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl.inc173
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch34
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch45
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch22
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch66
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch15
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch15
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch34
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch15
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch15
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch177
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch4670
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch56
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl54
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch22
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch119
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch24
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch40
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch38
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch38
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch103
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch31
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch24
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch23
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch21
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch39
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch19
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch401
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch35
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch90
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch41
-rw-r--r--meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb54
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant1
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls440
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service5
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch42
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane12
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch51
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf107
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch184
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh85
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh88
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane10
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service21
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service13
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service13
-rw-r--r--meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend96
-rw-r--r--meta-edison-distro/recipes-core/base-files/base-files/factory.mount12
-rw-r--r--meta-edison-distro/recipes-core/base-files/base-files/fstab9
-rw-r--r--meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount11
-rw-r--r--meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount9
-rw-r--r--meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile9
-rw-r--r--meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend33
-rw-r--r--meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend5
-rw-r--r--meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg2
-rw-r--r--meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg3
-rw-r--r--meta-edison-distro/recipes-core/first-install/files/first-install.service9
-rw-r--r--meta-edison-distro/recipes-core/first-install/files/first-install.sh185
-rw-r--r--meta-edison-distro/recipes-core/first-install/files/first-install.target7
-rw-r--r--meta-edison-distro/recipes-core/first-install/first-install.bb40
-rw-r--r--meta-edison-distro/recipes-core/images/edison-image.bb130
-rw-r--r--meta-edison-distro/recipes-core/ota-update/files/ota-update.service9
-rw-r--r--meta-edison-distro/recipes-core/ota-update/files/ota-update.sh149
-rw-r--r--meta-edison-distro/recipes-core/ota-update/files/ota-update.target7
-rw-r--r--meta-edison-distro/recipes-core/ota-update/ota-update.bb40
-rw-r--r--meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch39
-rw-r--r--meta-edison-distro/recipes-core/readline/readline_6.3.bbappend4
-rw-r--r--meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service14
-rw-r--r--meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb24
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service14
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service14
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/journald.conf36
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/system.conf45
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch9
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/timesyncd.conf12
-rw-r--r--meta-edison-distro/recipes-core/systemd/files/usb0.network6
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb41
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb49
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service37
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb15
-rwxr-xr-xmeta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl153
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf6
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch34
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch56
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/init104
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch19
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/run-ptest3
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch56
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch32
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch29
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch92
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch35
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch30
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules18
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch37
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch19
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd_%.bbappend34
-rw-r--r--meta-edison-distro/recipes-core/systemd/systemd_213.bb351
-rw-r--r--meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend11
-rw-r--r--meta-edison-distro/recipes-devtools/swig/swig.inc63
-rw-r--r--meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch56
-rw-r--r--meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch55
-rw-r--r--meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb8
-rw-r--r--meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend13
-rw-r--r--meta-edison-distro/recipes-multimedia/alsa/files/asound.state14141
-rw-r--r--meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend23
-rw-r--r--meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb22
-rw-r--r--meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf15
-rw-r--r--meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch16
-rw-r--r--meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb161
-rw-r--r--meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service12
-rw-r--r--meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa66
-rw-r--r--meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb28
-rw-r--r--meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend22
-rw-r--r--meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb23
-rwxr-xr-xmeta-edison-distro/recipes-support/blink-led/files/blink-led109
-rw-r--r--meta-edison-distro/recipes-support/blink-led/files/blink-led.service10
-rw-r--r--meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb31
-rw-r--r--meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh60
-rw-r--r--meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service10
-rw-r--r--meta-edison-distro/recipes-support/crashlog/crashlog.bb31
-rw-r--r--meta-edison-distro/recipes-support/crashlog/files/crashlog.service10
-rwxr-xr-xmeta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh98
-rw-r--r--meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.binbin0 -> 12212 bytes
-rw-r--r--meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service10
-rw-r--r--meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh12
-rw-r--r--meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb17
-rw-r--r--meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb23
-rw-r--r--meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.binbin0 -> 464927 bytes
-rw-r--r--meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb19
-rw-r--r--meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk72
-rw-r--r--meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb24
-rw-r--r--meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c167
-rw-r--r--meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service10
-rw-r--r--meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb37
-rw-r--r--meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch22
-rw-r--r--meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch29
-rw-r--r--meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch41
-rw-r--r--meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch42
-rw-r--r--meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb41
-rw-r--r--meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb46
-rw-r--r--meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c92
-rw-r--r--meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service15
186 files changed, 29846 insertions, 0 deletions
diff --git a/meta-edison-distro/COPYING.MIT b/meta-edison-distro/COPYING.MIT
new file mode 100644
index 0000000..89de354
--- /dev/null
+++ b/meta-edison-distro/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/meta-edison-distro/README b/meta-edison-distro/README
new file mode 100644
index 0000000..3237326
--- /dev/null
+++ b/meta-edison-distro/README
@@ -0,0 +1,118 @@
+This README file contains information on building the meta-edison
+BSP layer, and booting the images contained in the /binary directory.
+Please see the corresponding sections below for details.
+
+
+Dependencies
+============
+
+This layer depends on:
+
+ URI: git://git.openembedded.org/bitbake
+ branch: master
+
+ URI: git://git.openembedded.org/openembedded-core
+ layers: meta
+ branch: master
+
+ URI: git://git.yoctoproject.org/xxxx
+ layers: xxxx
+ branch: master
+
+
+Patches
+=======
+
+Please submit any patches against this BSP to the Yocto mailing list
+(yocto@yoctoproject.org) and cc: the maintainer:
+
+Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com>
+
+Please see the meta-xxxx/MAINTAINERS file for more details.
+
+
+Table of Contents
+=================
+
+ I. Building the meta-edison BSP layer
+ II. Booting the images in /binary
+
+
+I. Building the meta-edison BSP layer
+========================================
+
+--- replace with specific instructions for your layer ---
+
+In order to build an image with BSP support for a given release, you
+need to download the corresponding BSP tarball from the 'Board Support
+Package (BSP) Downloads' page of the Yocto Project website.
+
+Having done that, and assuming you extracted the BSP tarball contents
+at the top-level of your yocto build tree, you can build a
+edison image by adding the location of the meta-edison
+layer to bblayers.conf, along with any other layers needed (to access
+common metadata shared between BSPs) e.g.:
+
+ yocto/meta-xxxx \
+ yocto/meta-xxxx/meta-edison \
+
+To enable the edison layer, add the edison MACHINE to local.conf:
+
+ MACHINE ?= "edison"
+
+You should then be able to build a edison image as such:
+
+ $ source oe-init-build-env
+ $ bitbake core-image-sato
+
+At the end of a successful build, you should have a live image that
+you can boot from a USB flash drive (see instructions on how to do
+that below, in the section 'Booting the images from /binary').
+
+As an alternative to downloading the BSP tarball, you can also work
+directly from the meta-xxxx git repository. For each BSP in the
+'meta-xxxx' repository, there are multiple branches, one corresponding
+to each major release starting with 'laverne' (0.90), in addition to
+the latest code which tracks the current master (note that not all
+BSPs are present in every release). Instead of extracting a BSP
+tarball at the top level of your yocto build tree, you can
+equivalently check out the appropriate branch from the meta-xxxx
+repository at the same location.
+
+
+II. Booting the images in /binary
+=================================
+
+--- replace with specific instructions for your platform ---
+
+This BSP contains bootable live images, which can be used to directly
+boot Yocto off of a USB flash drive.
+
+Under Linux, insert a USB flash drive. Assuming the USB flash drive
+takes device /dev/sdf, use dd to copy the live image to it. For
+example:
+
+# dd if=core-image-sato-edison-20101207053738.hddimg of=/dev/sdf
+# sync
+# eject /dev/sdf
+
+This should give you a bootable USB flash device. Insert the device
+into a bootable USB socket on the target, and power on. This should
+result in a system booted to the Sato graphical desktop.
+
+If you want a terminal, use the arrows at the top of the UI to move to
+different pages of available applications, one of which is named
+'Terminal'. Clicking that should give you a root terminal.
+
+If you want to ssh into the system, you can use the root terminal to
+ifconfig the IP address and use that to ssh in. The root password is
+empty, so to log in type 'root' for the user name and hit 'Enter' at
+the Password prompt: and you should be in.
+
+----
+
+If you find you're getting corrupt images on the USB (it doesn't show
+the syslinux boot: prompt, or the boot: prompt contains strange
+characters), try doing this first:
+
+# dd if=/dev/zero of=/dev/sdf bs=1M count=512
diff --git a/meta-edison-distro/README.sources b/meta-edison-distro/README.sources
new file mode 100644
index 0000000..3c4cb7b
--- /dev/null
+++ b/meta-edison-distro/README.sources
@@ -0,0 +1,17 @@
+The sources for the packages comprising the images shipped with this
+BSP can be found at the following location:
+
+http://downloads.yoctoproject.org/mirror/sources/
+
+The metadata used to generate the images shipped with this BSP, in
+addition to the code contained in this BSP, can be found at the
+following location:
+
+http://www.yoctoproject.org/downloads/yocto-1.1/poky-edison-6.0.tar.bz2
+
+The metadata used to generate the images shipped with this BSP, in
+addition to the code contained in this BSP, can also be found at the
+following locations:
+
+git://git.yoctoproject.org/poky.git
+git://git.yoctoproject.org/meta-xxxx
diff --git a/meta-edison-distro/conf/distro/poky-edison.conf b/meta-edison-distro/conf/distro/poky-edison.conf
new file mode 100644
index 0000000..a0e7466
--- /dev/null
+++ b/meta-edison-distro/conf/distro/poky-edison.conf
@@ -0,0 +1,20 @@
+require conf/distro/poky.conf
+DISTRO = "poky-edison"
+
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+PREFERRED_VERSION_linux-yocto = "3.10%"
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
+PREFERRED_VERSION_u-boot ?= "2014.04-1"
+PREFERRED_VERSION_u-boot-fw-utils ?= "2014.04-1"
+PREFERRED_VERSION_connman ?= "1.27"
+PREFERRED_VERSION_openssl ?= "1.0.1j"
+PREFERRED_VERSION_systemd ?= "213+gitAUTOINC+c9679c652b"
+
+DISTRO_FEATURES = "systemd alsa argp bluetooth ext2 largefile usbgadget usbhost wifi xattr nfs zeroconf pci ${DISTRO_FEATURES_LIBC}"
+
+# Disable sysvinit for recipes with systemd support
+DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
+VIRTUAL-RUNTIME_initscripts = ""
+VIRTUAL-RUNTIME_init_manager = "systemd"
+# Uncomment to completely disable support for sysv scripts:
+PACKAGECONFIG_pn-systemd = "xz"
diff --git a/meta-edison-distro/conf/layer.conf b/meta-edison-distro/conf/layer.conf
new file mode 100644
index 0000000..3b58c57
--- /dev/null
+++ b/meta-edison-distro/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH := "${BBPATH}:${LAYERDIR}"
+
+# We have a recipes-* directories, add to BBFILES
+BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "edison-distro"
+BBFILE_PATTERN_edison-distro = "^${LAYERDIR}/"
+BBFILE_PRIORITY_edison-distro = "6"
diff --git a/meta-edison-distro/files/fs-perms.txt b/meta-edison-distro/files/fs-perms.txt
new file mode 100644
index 0000000..a497017
--- /dev/null
+++ b/meta-edison-distro/files/fs-perms.txt
@@ -0,0 +1,69 @@
+# This file contains a list of files and directories with known permissions.
+# It is used by the packaging class to ensure that the permissions, owners and
+# group of listed files and directories are in sync across the system.
+#
+# The format of this file
+#
+#<path> <mode> <uid> <gid> <walk> <fmode> <fuid> <fgid>
+#
+# or
+#
+#<path> link <target>
+#
+# <path>: directory path
+# <mode>: mode for directory
+# <uid>: uid for directory
+# <gid>: gid for directory
+# <walk>: recursively walk the directory? true or false
+# <fmode>: if walking, new mode for files
+# <fuid>: if walking, new uid for files
+# <fgid>: if walking, new gid for files
+# <target>: turn the directory into a symlink point to target
+#
+# in mode, uid or gid, a "-" means don't change any existing values
+#
+# /usr/src 0755 root root false - - -
+# /usr/share/man 0755 root root true 0644 root root
+
+# Note: all standard config directories are automatically assigned "0755 root root false - - -"
+
+# Documentation should always be corrected
+${mandir} 0755 root root true 0644 root root
+${infodir} 0755 root root true 0644 root root
+${docdir} 0755 root root true 0644 root root
+${datadir}/gtk-doc 0755 root root true 0644 root root
+
+# Fixup locales
+${datadir}/locale 0755 root root true 0644 root root
+
+# Cleanup headers
+${includedir} 0755 root root true 0644 root root
+${oldincludedir} 0755 root root true 0644 root root
+
+# Cleanup debug src
+/usr/src/debug 0755 root root true - root root
+
+# Log directory
+${localstatedir}/log 0777 root root false - - -
+
+# Items from base-files
+# Links
+${localstatedir}/run link /run
+${localstatedir}/lock link /run/lock
+${localstatedir}/tmp link volatile/tmp
+
+# Special permissions from base-files
+# Set 1777
+/tmp 01777 root root false - - -
+${localstatedir}/volatile/tmp 01777 root root false - - -
+
+# Set 2775
+/home 02755 root root false - - -
+${prefix}/src 02755 root root false - - -
+${localstatedir}/local 02755 root root false - - -
+
+# Set 3755
+/srv 0755 root root false - - -
+
+# Set 4775
+/var/mail 02755 root root false - - -
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff
new file mode 100644
index 0000000..7e89953
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff
@@ -0,0 +1,164 @@
+[Thread]: Replace thread_rest() with condition variables
+
+This applies the patch by Ingo Molnar from
+
+ http://marc.info/?l=linux-kernel&m=119088670113210&w=2
+
+by reverting previous changes that coincided with changes made by this
+patch. Other than that, the patch is the original from the above URL.
+
+Gerrit
+---
+ compat/Thread.c | 6 ------
+ src/Reporter.c | 37 +++++++++----------------------------
+ src/main.cpp | 2 ++
+ 3 files changed, 11 insertions(+), 34 deletions(-)
+
+rover: changed two remaining thread_rest.
+
+--- a/compat/Thread.c
++++ b/compat/Thread.c
+@@ -405,12 +405,6 @@ int thread_numuserthreads( void ) {
+ void thread_rest ( void ) {
+ #if defined( HAVE_THREAD )
+ #if defined( HAVE_POSIX_THREAD )
+-#if defined( _POSIX_PRIORITY_SCHEDULING )
+- sched_yield();
+-#else
+- usleep( 0 );
+-#endif
+-
+ #else // Win32
+ SwitchToThread( );
+ #endif
+--- a/src/Reporter.c
++++ b/src/Reporter.c
+@@ -110,9 +110,8 @@
+
+ char buffer[64]; // Buffer for printing
+ ReportHeader *ReportRoot = NULL;
+-int threadWait = 0;
+-int threadSleeping = 0;
+ extern Condition ReportCond;
++extern Condition ReportDoneCond;
+ int reporter_process_report ( ReportHeader *report );
+ void process_report ( ReportHeader *report );
+ int reporter_handle_packet( ReportHeader *report );
+@@ -340,7 +339,7 @@
+ // item
+ while ( index == 0 ) {
+ Condition_Signal( &ReportCond );
+- thread_rest();
++ Condition_Wait( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+ agent->agentindex = 0;
+@@ -348,11 +347,9 @@
+ // Need to make sure that reporter is not about to be "lapped"
+ while ( index - 1 == agent->agentindex ) {
+ Condition_Signal( &ReportCond );
+- thread_rest();
++ Condition_Wait( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+- if (threadSleeping)
+- Condition_Signal( &ReportCond );
+
+ // Put the information there
+ memcpy( agent->data + agent->agentindex, packet, sizeof(ReportStruct) );
+@@ -382,9 +379,6 @@
+ packet->packetLen = 0;
+ ReportPacket( agent, packet );
+ packet->packetID = agent->report.cntDatagrams;
+- if (threadSleeping)
+- Condition_Signal( &ReportCond );
+-
+ }
+ }
+
+@@ -396,11 +390,8 @@
+ void EndReport( ReportHeader *agent ) {
+ if ( agent != NULL ) {
+ int index = agent->reporterindex;
+- if (threadSleeping)
+- Condition_Signal( &ReportCond );
+-
+ while ( index != -1 ) {
+- thread_rest();
++ Condition_Wait( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+ agent->agentindex = -1;
+@@ -421,7 +412,7 @@
+ Transfer_Info *GetReport( ReportHeader *agent ) {
+ int index = agent->reporterindex;
+ while ( index != -1 ) {
+- thread_rest();
++ Condition_Wait( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+ return &agent->report.info;
+@@ -467,10 +458,6 @@
+ * Update the ReportRoot to include this report.
+ */
+ Condition_Lock( ReportCond );
+- if ( isUDP(agent) )
+- threadWait = 0;
+- else
+- threadWait = 1;
+ reporthdr->next = ReportRoot;
+ ReportRoot = reporthdr;
+ Condition_Signal( &ReportCond );
+@@ -567,6 +554,7 @@
+ }
+ Condition_Unlock ( ReportCond );
+
++again:
+ if ( ReportRoot != NULL ) {
+ ReportHeader *temp = ReportRoot;
+ //Condition_Unlock ( ReportCond );
+@@ -589,19 +577,12 @@
+ // finished with report so free it
+ free( temp );
+ Condition_Unlock ( ReportCond );
++ Condition_Signal( &ReportDoneCond );
++ if (ReportRoot)
++ goto again;
+ }
+- // yield control of CPU is another thread is waiting
+- // sleep on a condition variable, as it is much cheaper
+- // on most platforms than issuing schedyield or usleep
+- // syscalls
+- Condition_Lock ( ReportCond );
+- if ( threadWait && ReportRoot != NULL) {
+- threadSleeping = 1;
+- Condition_TimedWait (& ReportCond, 1 );
+- threadSleeping = 0;
+- }
+- Condition_Unlock ( ReportCond );
+-
++ Condition_Signal( &ReportDoneCond );
++ usleep(10000);
+ } else {
+ //Condition_Unlock ( ReportCond );
+ }
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -96,6 +96,7 @@ extern "C" {
+ // records being accessed in a report and also to
+ // serialize modification of the report list
+ Condition ReportCond;
++ Condition ReportDoneCond;
+ }
+
+ // global variables only accessed within this file
+@@ -142,6 +143,7 @@ int main( int argc, char **argv ) {
+
+ // Initialize global mutexes and conditions
+ Condition_Initialize ( &ReportCond );
++ Condition_Initialize ( &ReportDoneCond );
+ Mutex_Initialize( &groupCond );
+ Mutex_Initialize( &clients_mutex );
+
+
+
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch
new file mode 100644
index 0000000..b6728d4
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch
@@ -0,0 +1,14 @@
+Import Debian patches and fix a lot of real bugs.
+
+Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d]
+--- iperf-2.0.4.orig/src/Settings.cpp.orig 2008-04-08 04:37:54.000000000 +0200
++++ iperf-2.0.4/src/Settings.cpp 2008-05-07 17:41:03.923942801 +0200
+@@ -458,7 +458,7 @@
+ case 't': // seconds to write for
+ // time mode (instead of amount mode)
+ setModeTime( mExtSettings );
+- mExtSettings->mAmount = (int) (atof( optarg ) * 100.0);
++ mExtSettings->mAmount = (max_size_t) (atof( optarg ) * 100.0);
+ break;
+
+ case 'u': // UDP instead of TCP
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch
new file mode 100644
index 0000000..929b5ac
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch
@@ -0,0 +1,178 @@
+Import Debian patches and fix a lot of real bugs.
+
+Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d]
+
+--- iperf-2.0.4.orig/man/iperf.1 2008-08-21 00:21:49.290527643 +0200
++++ iperf-2.0.4/man/iperf.1 2008-08-21 00:35:17.850640445 +0200
+@@ -2,21 +2,21 @@
+ .SH NAME
+ iperf \- perform network throughput tests
+ .SH SYNOPSIS
+-.B iperf -s [
++.B iperf \-s [
+ .I options
+ .B ]
+
+-.B iperf -c
++.B iperf \-c
+ .I server
+ .B [
+ .I options
+ .B ]
+
+-.B iperf -u -s [
++.B iperf \-u \-s [
+ .I options
+ .B ]
+
+-.B iperf -u -c
++.B iperf \-u \-c
+ .I server
+ .B [
+ .I options
+@@ -28,103 +28,103 @@
+ traffic).
+ .SH "GENERAL OPTIONS"
+ .TP
+-.BR -f ", " --format " "
++.BR \-f ", " \-\-format " "
+ [kmKM] format to report: Kbits, Mbits, KBytes, MBytes
+ .TP
+-.BR -h ", " --help " "
++.BR \-h ", " \-\-help " "
+ print a help synopsis
+ .TP
+-.BR -i ", " --interval " \fIn\fR"
++.BR \-i ", " \-\-interval " \fIn\fR"
+ pause \fIn\fR seconds between periodic bandwidth reports
+ .TP
+-.BR -l ", " --len " \fIn\fR[KM]"
++.BR \-l ", " \-\-len " \fIn\fR[KM]"
+ set length read/write buffer to \fIn\fR (default 8 KB)
+ .TP
+-.BR -m ", " --print_mss " "
++.BR \-m ", " \-\-print_mss " "
+ print TCP maximum segment size (MTU - TCP/IP header)
+ .TP
+-.BR -o ", " --output " <filename>"
++.BR \-o ", " \-\-output " <filename>"
+ output the report or error message to this specified file
+ .TP
+-.BR -p ", " --port " \fIn\fR"
++.BR \-p ", " \-\-port " \fIn\fR"
+ set server port to listen on/connect to to \fIn\fR (default 5001)
+ .TP
+-.BR -u ", " --udp " "
++.BR \-u ", " \-\-udp " "
+ use UDP rather than TCP
+ .TP
+-.BR -w ", " --window " \fIn\fR[KM]"
++.BR \-w ", " \-\-window " \fIn\fR[KM]"
+ TCP window size (socket buffer size)
+ .TP
+-.BR -B ", " --bind " <host>"
++.BR \-B ", " \-\-bind " <host>"
+ bind to <host>, an interface or multicast address
+ .TP
+-.BR -C ", " --compatibility " "
++.BR \-C ", " \-\-compatibility " "
+ for use with older versions does not sent extra msgs
+ .TP
+-.BR -M ", " --mss " \fIn\fR"
++.BR \-M ", " \-\-mss " \fIn\fR"
+ set TCP maximum segment size (MTU - 40 bytes)
+ .TP
+-.BR -N ", " --nodelay " "
++.BR \-N ", " \-\-nodelay " "
+ set TCP no delay, disabling Nagle's Algorithm
+ .TP
+-.BR -v ", " --version " "
++.BR \-v ", " \-\-version " "
+ print version information and quit
+ .TP
+-.BR -V ", " --IPv6Version " "
++.BR \-V ", " \-\-IPv6Version " "
+ Set the domain to IPv6
+ .TP
+-.BR -x ", " --reportexclude " "
++.BR \-x ", " \-\-reportexclude " "
+ [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports
+ .TP
+-.BR -y ", " --reportstyle " C|c"
++.BR \-y ", " \-\-reportstyle " C|c"
+ if set to C or c report results as CSV (comma separated values)
+ .SH "SERVER SPECIFIC OPTIONS"
+ .TP
+-.BR -s ", " --server " "
++.BR \-s ", " \-\-server " "
+ run in server mode
+ .TP
+-.BR -U ", " --single_udp " "
++.BR \-U ", " \-\-single_udp " "
+ run in single threaded UDP mode
+ .TP
+-.BR -D ", " --daemon " "
++.BR \-D ", " \-\-daemon " "
+ run the server as a daemon
+ .SH "CLIENT SPECIFIC OPTIONS"
+ .TP
+-.BR -b ", " --bandwidth " \fIn\fR[KM]"
++.BR \-b ", " \-\-bandwidth " \fIn\fR[KM]"
+ set target bandwidth to \fIn\fR bits/sec (default 1 Mbit/sec).
+-This setting requires UDP (-u).
++This setting requires UDP (\-u).
+ .TP
+-.BR -c ", " --client " <host>"
++.BR \-c ", " \-\-client " <host>"
+ run in client mode, connecting to <host>
+ .TP
+-.BR -d ", " --dualtest " "
++.BR \-d ", " \-\-dualtest " "
+ Do a bidirectional test simultaneously
+ .TP
+-.BR -n ", " --num " \fIn\fR[KM]"
+-number of bytes to transmit (instead of -t)
++.BR \-n ", " \-\-num " \fIn\fR[KM]"
++number of bytes to transmit (instead of \-t)
+ .TP
+-.BR -r ", " --tradeoff " "
++.BR \-r ", " \-\-tradeoff " "
+ Do a bidirectional test individually
+ .TP
+-.BR -t ", " --time " \fIn\fR"
++.BR \-t ", " \-\-time " \fIn\fR"
+ time in seconds to transmit for (default 10 secs)
+ .TP
+-.BR -F ", " --fileinput " <name>"
++.BR \-F ", " \-\-fileinput " <name>"
+ input the data to be transmitted from a file
+ .TP
+-.BR -I ", " --stdin " "
++.BR \-I ", " \-\-stdin " "
+ input the data to be transmitted from stdin
+ .TP
+-.BR -L ", " --listenport " \fIn\fR"
++.BR \-L ", " \-\-listenport " \fIn\fR"
+ port to recieve bidirectional tests back on
+ .TP
+-.BR -P ", " --parallel " \fIn\fR"
++.BR \-P ", " \-\-parallel " \fIn\fR"
+ number of parallel client threads to run
+ .TP
+-.BR -T ", " --ttl " \fIn\fR"
++.BR \-T ", " \-\-ttl " \fIn\fR"
+ time-to-live, for multicast (default 1)
+ .TP
+-.BR -Z ", " --linux-congestion " <algo>"
++.BR \-Z ", " \-\-linux\-congestion " <algo>"
+ set TCP congestion control algorithm (Linux only)
+ .SH ENVIRONMENT
+ .TP
+@@ -143,6 +143,6 @@
+ Kevin Gibbs,
+ John Estabrook <jestabro at ncsa.uiuc.edu>,
+ Andrew Gallatin <gallatin at gmail.com>,
+-Stephen Hemminger <shemminger at linux-foundation.org>
++Stephen Hemminger <shemminger at linux\-foundation.org>
+ .SH "SEE ALSO"
+ http://iperf.sourceforge.net/
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch
new file mode 100644
index 0000000..8340148
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch
@@ -0,0 +1,117 @@
+Import Debian patches and fix a lot of real bugs.
+
+Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d]
+
+--- iperf-2.0.4-4/AUTHORS 2009-07-06 12:02:24.159696747 +0200
++++ iperf-2.0.4/AUTHORS 2009-07-06 12:14:32.236079541 +0200
+@@ -28,3 +28,7 @@
+
+ Stephen Hemminger <shemminger@linux-foundation.org>
+ * Linux congestion control selection and theading improvements
++
++Nathan Jones <nmjones@users.sourceforge.net>
++ * patch for underflow when value specified in -n is not a multiple of -l
++
+--- iperf-2.0.4-4/ChangeLog 2009-07-06 12:02:24.166276642 +0200
++++ iperf-2.0.4/ChangeLog 2009-07-06 12:15:28.883699655 +0200
+@@ -1,3 +1,18 @@
++2008-05-09 Jon Dugan <jdugan@x1024.net>
++
++* change currLen to unsigned to squelch warning generated by Nathan's patch
++
++2008-05-09 Nathan Jones <nmjones@users.sourceforge.net>
++
++* prevent underflow when the amount of data to be transmitted (-n) is not a
++multiple of the buffer size (-l) Patch:
++https://sourceforge.net/tracker/index.php?func=detail&aid=1943432&group_id=128336&atid=711373
++
++2008-04-08 Jon Dugan <jdugan@x1024.net>
++
++* print report headers only once
++* use appropriate report header for UDP tests
++
+ 2008-04-07 Jon Dugan <jdugan@x1024.net>
+
+ * Add man page to autoconf goo
+diff -urN 204orig/src/Client.cpp trunk/src/Client.cpp
+--- 204orig/src/Client.cpp 2008-04-08 04:37:54.000000000 +0200
++++ trunk/src/Client.cpp 2008-05-10 05:18:35.000000000 +0200
+@@ -116,7 +116,7 @@
+ const int kBytes_to_Bits = 8;
+
+ void Client::RunTCP( void ) {
+- long currLen = 0;
++ unsigned long currLen = 0;
+ struct itimerval it;
+ max_size_t totLen = 0;
+
+@@ -170,7 +170,12 @@
+ }
+
+ if ( !mMode_Time ) {
+- mSettings->mAmount -= currLen;
++ /* mAmount may be unsigned, so don't let it underflow! */
++ if( mSettings->mAmount >= currLen ) {
++ mSettings->mAmount -= currLen;
++ } else {
++ mSettings->mAmount = 0;
++ }
+ }
+
+ } while ( ! (sInterupted ||
+@@ -198,7 +203,7 @@
+
+ void Client::Run( void ) {
+ struct UDP_datagram* mBuf_UDP = (struct UDP_datagram*) mBuf;
+- long currLen = 0;
++ unsigned long currLen = 0;
+
+ int delay_target = 0;
+ int delay = 0;
+@@ -310,7 +315,12 @@
+ delay_loop( delay );
+ }
+ if ( !mMode_Time ) {
+- mSettings->mAmount -= currLen;
++ /* mAmount may be unsigned, so don't let it underflow! */
++ if( mSettings->mAmount >= currLen ) {
++ mSettings->mAmount -= currLen;
++ } else {
++ mSettings->mAmount = 0;
++ }
+ }
+
+ } while ( ! (sInterupted ||
+diff -urN 204orig/src/ReportDefault.c trunk/src/ReportDefault.c
+--- 204orig/src/ReportDefault.c 2008-04-08 04:37:54.000000000 +0200
++++ trunk/src/ReportDefault.c 2008-04-09 02:08:11.000000000 +0200
+@@ -67,6 +67,7 @@
+ * Prints transfer reports in default style
+ */
+ void reporter_printstats( Transfer_Info *stats ) {
++ static char header_printed = 0;
+
+ byte_snprintf( buffer, sizeof(buffer)/2, (double) stats->TotalLen,
+ toupper( stats->mFormat));
+@@ -76,13 +77,19 @@
+
+ if ( stats->mUDP != (char)kMode_Server ) {
+ // TCP Reporting
+- printf( report_bw_header);
++ if( !header_printed ) {
++ printf( report_bw_header);
++ header_printed = 1;
++ }
+ printf( report_bw_format, stats->transferID,
+ stats->startTime, stats->endTime,
+ buffer, &buffer[sizeof(buffer)/2] );
+ } else {
+ // UDP Reporting
+- printf( report_bw_jitter_loss_header);
++ if( !header_printed ) {
++ printf( report_bw_jitter_loss_header);
++ header_printed = 1;
++ }
+ printf( report_bw_jitter_loss_format, stats->transferID,
+ stats->startTime, stats->endTime,
+ buffer, &buffer[sizeof(buffer)/2],
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch
new file mode 100644
index 0000000..ec13d6b
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch
@@ -0,0 +1,15 @@
+Import Debian patches and fix a lot of real bugs.
+
+Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d]
+
+--- iperf-2.0.4/src/Listener.cpp 2009-02-23 16:20:31.000000000 -0500
++++ iperf-2.0.4-fixed/src/Listener.cpp 2009-02-23 16:20:40.000000000 -0500
+@@ -333,7 +333,7 @@
+ #endif
+ {
+ rc = bind( mSettings->mSock, (sockaddr*) &mSettings->local, mSettings->size_local );
+- WARN_errno( rc == SOCKET_ERROR, "bind" );
++ FAIL_errno( rc == SOCKET_ERROR, "bind", mSettings );
+ }
+ // listen for connections (TCP only).
+ // default backlog traditionally 5
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch
new file mode 100644
index 0000000..9e17e6d
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch
@@ -0,0 +1,15 @@
+Import Debian patches and fix a lot of real bugs.
+
+Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d]
+
+--- iperf-2.0.4/src/Client.cpp 2008-04-07 22:37:54.000000000 -0400
++++ iperf-2.0.4-fixed/src/Client.cpp 2009-03-03 12:30:02.000000000 -0500
+@@ -403,7 +403,7 @@
+ // connect socket
+ rc = connect( mSettings->mSock, (sockaddr*) &mSettings->peer,
+ SockAddr_get_sizeof_sockaddr( &mSettings->peer ));
+- WARN_errno( rc == SOCKET_ERROR, "connect" );
++ FAIL_errno( rc == SOCKET_ERROR, "connect", mSettings );
+
+ getsockname( mSettings->mSock, (sockaddr*) &mSettings->local,
+ &mSettings->size_local );
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch
new file mode 100644
index 0000000..4b5f914
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch
@@ -0,0 +1,68 @@
+by Kirby Zhou < kirbyzhou \x40 sohu-rd.com >
+add a Condition_Wait_Event for ReporterDoneCond
+
+Upstream-Status: Inappropriate [not author]
+
+--- iperf-2.0.4.orig/include/Condition.h 2007-08-30 00:06:19.000000000 +0200
++++ iperf-2.0.4/include/Condition.h 2009-07-06 11:45:02.407700310 +0200
+@@ -115,6 +115,11 @@ typedef struct Condition {
+ // sleep this thread, waiting for condition signal
+ #if defined( HAVE_POSIX_THREAD )
+ #define Condition_Wait( Cond ) pthread_cond_wait( &(Cond)->mCondition, &(Cond)->mMutex )
++ #define Condition_Wait_Event( Cond ) do { \
++ Mutex_Lock( &(Cond)->mMutex ); \
++ pthread_cond_wait( &(Cond)->mCondition, &(Cond)->mMutex ); \
++ Mutex_Unlock( &(Cond)->mMutex ); \
++ } while ( 0 )
+ #elif defined( HAVE_WIN32_THREAD )
+ // atomically release mutex and wait on condition,
+ // then re-acquire the mutex
+@@ -122,6 +127,10 @@ typedef struct Condition {
+ SignalObjectAndWait( (Cond)->mMutex, (Cond)->mCondition, INFINITE, false ); \
+ Mutex_Lock( &(Cond)->mMutex ); \
+ } while ( 0 )
++ #define Condition_Wait_Event( Cond ) do { \
++ Mutex_Lock( &(Cond)->mMutex ); \
++ SignalObjectAndWait( (Cond)->mMutex, (Cond)->mCondition, INFINITE, false ); \
++ } while ( 0 )
+ #else
+ #define Condition_Wait( Cond )
+ #endif
+--- iperf-2.0.4.orig/src/Reporter.c 2009-07-06 11:49:05.996443011 +0200
++++ iperf-2.0.4/src/Reporter.c 2009-07-06 11:46:52.919699530 +0200
+@@ -339,7 +339,7 @@ void ReportPacket( ReportHeader* agent,
+ // item
+ while ( index == 0 ) {
+ Condition_Signal( &ReportCond );
+- Condition_Wait( &ReportDoneCond );
++ Condition_Wait_Event( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+ agent->agentindex = 0;
+@@ -347,7 +347,7 @@ void ReportPacket( ReportHeader* agent,
+ // Need to make sure that reporter is not about to be "lapped"
+ while ( index - 1 == agent->agentindex ) {
+ Condition_Signal( &ReportCond );
+- Condition_Wait( &ReportDoneCond );
++ Condition_Wait_Event( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+
+@@ -391,7 +391,7 @@ void EndReport( ReportHeader *agent ) {
+ if ( agent != NULL ) {
+ int index = agent->reporterindex;
+ while ( index != -1 ) {
+- Condition_Wait( &ReportDoneCond );
++ Condition_Wait_Event( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+ agent->agentindex = -1;
+@@ -412,7 +412,7 @@ void EndReport( ReportHeader *agent ) {
+ Transfer_Info *GetReport( ReportHeader *agent ) {
+ int index = agent->reporterindex;
+ while ( index != -1 ) {
+- Condition_Wait( &ReportDoneCond );
++ Condition_Wait_Event( &ReportDoneCond );
+ index = agent->reporterindex;
+ }
+ return &agent->report.info;
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch
new file mode 100644
index 0000000..c5d85b1
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch
@@ -0,0 +1,15 @@
+by Kirby Zhou < kirbyzhou \x40 sohu-rd.com >
+increase the queue length to avoid thread racing
+
+Upstream-Status: Inappropriate [not author]
+--- iperf-2.0.4.orig/include/Reporter.h 2008-04-08 04:37:54.000000000 +0200
++++ iperf-2.0.4/include/Reporter.h 2009-07-06 11:53:58.700541554 +0200
+@@ -61,7 +61,7 @@ struct server_hdr;
+
+ #include "Settings.hpp"
+
+-#define NUM_REPORT_STRUCTS 700
++#define NUM_REPORT_STRUCTS 5700
+ #define NUM_MULTI_SLOTS 5
+
+ #ifdef __cplusplus
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch
new file mode 100644
index 0000000..a2a0797
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch
@@ -0,0 +1,22 @@
+by Kirby Zhou < kirbyzhou \x40 sohu-rd.com >
+using sched_yield to schedule other threads, so multiple iperf can run simultaneously
+using usleep with delay-loop between 2 package is long than 1.25ms.
+
+Upstream-Status: Inappropriate [not author]
+
+--- iperf-2.0.4-4/compat/delay.cpp 2009-07-06 12:02:24.166276642 +0200
++++ iperf-2.0.4/compat/delay.cpp 2009-07-06 12:01:33.858384005 +0200
+@@ -69,6 +69,13 @@ void delay_loop( unsigned long usec ) {
+
+ Timestamp now;
+ while ( now.before( end ) ) {
++ long diff = end.subUsec(now);
++ if (diff >= 1250) {
++ usleep(0);
++ }
++ if (diff >= 2) {
++ sched_yield();
++ }
+ now.setnow();
+ }
+ }
diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb b/meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb
new file mode 100644
index 0000000..bd8bac1
--- /dev/null
+++ b/meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics"
+HOMEPAGE = "http://dast.nlanr.net/Projects/Iperf/"
+SECTION = "console/network"
+LICENSE = "NewBSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e8478eae9f479e39bc34975193360298"
+
+SRC_URI = " \
+ ${SOURCEFORGE_MIRROR}/iperf/iperf-${PV}.tar.gz \
+ file://000-Iperf_Fix-CPU-Usage.diff \
+ file://001-cast-to-max_size_t-instead-of-int.patch \
+ file://003-fix-hyphen-used-as-minus-sign.patch \
+ file://004-svn-r43-ro.patch \
+ file://005-iperf-die-on-bind-fail.patch \
+ file://006-iperf-die-on-connect-fail.patch \
+ file://007-iperf-reporter-deadlock.patch \
+ file://008-numofreport.patch \
+ file://009-delayloop.patch \
+ "
+
+
+SRC_URI[md5sum] = "8c5bc14cc2ea55f18f22afe3c23e3dcb"
+SRC_URI[sha256sum] = "3b52f1c178d6a99c27114929d5469c009197d15379c967b329bafb956f397944"
+
+inherit autotools
+
+S="${WORKDIR}/iperf-${PV}"
+
+EXTRA_OECONF = "--exec-prefix=${STAGING_DIR_HOST}${layout_exec_prefix}"
+
+do_configure() {
+ export ac_cv_func_malloc_0_nonnull=yes
+ gnu-configize
+ oe_runconf
+}
+
+do_compile() {
+ cd ${WORKDIR}/iperf-${PV}
+ oe_runmake
+}
+
+do_install() {
+ cd ${WORKDIR}/iperf-${PV}/src
+ oe_runmake DESTDIR=${D} install
+}
+
+
diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING
new file mode 100644
index 0000000..48172c1
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING
@@ -0,0 +1,14 @@
+ Copyright (c) 2014, Intel Corporation.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of version 2 of the GNU General Public License as
+ published by the Free Software Foundation.
+
+ 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., 59
+ Temple Place - Suite 330, Boston, MA 02111-1307, USA.
diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb
new file mode 100644
index 0000000..72bfc01
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Bluetooth rfkill event daemon for Bluetooth chips"
+SECTION = "connectivity"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${THISDIR}/COPYING;md5=3fa94220fac4e7b1463e6fd8d63140c5"
+
+DEPENDS = "glib-2.0 bluez5"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "bluetooth-rfkill-event.service"
+
+SRC_URI = "file://bluetooth_rfkill_event.c \
+ file://bluetooth-rfkill-event.service \
+ file://bcm43341.conf"
+
+S = "${WORKDIR}"
+
+INC_DIRS = "-I${STAGING_INCDIR}/glib-2.0 -I${STAGING_LIBDIR}/glib-2.0/include/"
+
+LIBS = "-lglib-2.0"
+
+do_compile() {
+ ${CC} $CFLAGS -o bluetooth_rfkill_event bluetooth_rfkill_event.c ${INC_DIRS} ${LIBS}
+}
+
+do_install() {
+ install -v -d ${D}${sbindir}
+ install -m 0755 bluetooth_rfkill_event ${D}${sbindir}
+
+ if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ # Copy file service
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/bluetooth-rfkill-event.service ${D}/${systemd_unitdir}/system
+ fi
+
+ install -v -d ${D}/etc/firmware/
+ install -m 0755 ${WORKDIR}/bcm43341.conf ${D}/etc/firmware/bcm43341.conf
+}
diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf
new file mode 100644
index 0000000..d43b051
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf
@@ -0,0 +1,32 @@
+###########################################################################
+#
+# Configuration file for Broadcom hciattach utility (brcm_patchram_plus)
+#
+# option are loaded by rfkill event daemon and passed to brcm_patchram_plus
+#
+###########################################################################
+[General]
+
+# fork
+fork = true
+
+# Low Power Mode
+lpm = true
+
+# register HCI device
+reg_hci = true
+
+# set baudrate; possible values:
+# 115200, 230400, 460800, 500000, 576000, 921600
+# 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000
+baud_rate = 3000000
+
+# FW patch file
+fw_patch = /etc/firmware/bcm43341.hcd
+
+# UART device
+uart_dev = /dev/ttyMFD0
+
+# SCO settings
+# configure sco routing to Transport (HCI);
+scopcm = 1,0,0,0,0,0,0,0,0,0
diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service
new file mode 100644
index 0000000..a0565f5
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Bluetooth rf kill event daemon
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/bluetooth_rfkill_event
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c
new file mode 100644
index 0000000..9d69805
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c
@@ -0,0 +1,614 @@
+/******************************************************************************
+ *
+ * Copyright (c) 2014, Intel Corporation.
+
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * 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., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *******************************************************************************/
+
+/*******************************************************************************
+ **
+ ** Name: bluetooth_rfkill_event.c
+ **
+ ** Description: This program is listening rfkill event and detect when a
+ ** 'power' rfkill interface is unblocked and trigger FW patch
+ ** download for detected chip.
+ **
+ *******************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/poll.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#include <limits.h>
+#include <glib.h>
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/hci_lib.h>
+
+
+enum {
+ BT_PWR,
+ BT_HCI,
+};
+
+/* list of all supported chips:
+ name is defined in the kernel driver implementing rfkill interface for power */
+#define BCM_RFKILL_NAME "bcm43xx Bluetooth\n"
+#define BCM_43341_UART_DEV "/dev/ttyMFD0"
+#define BD_ADD_FACTORY_FILE "/factory/bluetooth_address"
+char factory_bd_add[18];
+const char default_bd_addr[] = "00:43:34:b1:be:ef";
+
+/* attempt to set hci dev UP */
+#define MAX_RETRY 10
+
+enum rfkill_operation {
+ RFKILL_OP_ADD = 0,
+ RFKILL_OP_DEL,
+ RFKILL_OP_CHANGE,
+ RFKILL_OP_CHANGE_ALL,
+};
+
+enum rfkill_type {
+ RFKILL_TYPE_ALL = 0,
+ RFKILL_TYPE_WLAN,
+ RFKILL_TYPE_BLUETOOTH,
+ RFKILL_TYPE_UWB,
+ RFKILL_TYPE_WIMAX,
+ RFKILL_TYPE_WWAN,
+ RFKILL_TYPE_GPS,
+ RFKILL_TYPE_FM,
+ NUM_RFKILL_TYPES,
+};
+
+struct rfkill_event {
+ unsigned int idx;
+ unsigned char type;
+ unsigned char op;
+ unsigned char soft, hard;
+} __packed;
+
+/* HCI UART driver initialization utility; usually it takes care of FW patch download as well */
+char hciattach[PATH_MAX];
+char hciattach_options[PATH_MAX];
+char hci_uart_default_dev[PATH_MAX] = BCM_43341_UART_DEV;
+
+gboolean hci_dev_registered;
+int bt_pwr_rfkill_idx;
+
+struct main_opts {
+ /* 'fork' will keep running in background the hciattach utility; N/A if enable_hci is FALSE */
+ gboolean enable_fork;
+ /* send enable Low Power Mode to Broadcom bluetooth controller; needed if power driver implements it */
+ gboolean enable_lpm;
+ /* register the hci device */
+ gboolean enable_hci;
+ /* set UART baud rate */
+ gboolean set_baud_rate;
+ int baud_rate;
+ /* download FW patch */
+ gboolean dl_patch;
+ char* fw_patch;
+ /* UART device used for bluetooth; platform dependant */
+ char* uart_dev;
+ /* configure BD address */
+ gboolean set_bd;
+ char* bd_add;
+ /* set SCO routing for audio interface */
+ gboolean set_scopcm;
+ char* scopcm;
+};
+
+struct main_opts main_opts;
+
+static const char * const supported_options[] = {
+ "fork",
+ "lpm",
+ "reg_hci",
+ "baud_rate",
+ "fw_patch",
+ "uart_dev",
+ "scopcm",
+};
+
+void init_config()
+{
+ memset(&main_opts, 0, sizeof(main_opts));
+
+ main_opts.enable_fork = TRUE;
+ main_opts.enable_lpm = TRUE;
+ main_opts.enable_hci = FALSE;
+ main_opts.set_baud_rate = FALSE;
+ main_opts.dl_patch = FALSE;
+ main_opts.set_bd = FALSE;
+ main_opts.set_scopcm = FALSE;
+}
+
+GKeyFile *load_config(const char *file)
+{
+ GError *err = NULL;
+ GKeyFile *keyfile;
+
+ keyfile = g_key_file_new();
+
+ g_key_file_set_list_separator(keyfile, ',');
+
+ if (!g_key_file_load_from_file(keyfile, file, 0, &err)) {
+ if (!g_error_matches(err, G_FILE_ERROR, G_FILE_ERROR_NOENT))
+ error("Parsing %s failed: %s", file, err->message);
+ g_error_free(err);
+ g_key_file_free(keyfile);
+ return NULL;
+ }
+
+ return keyfile;
+}
+
+void check_config(GKeyFile *config)
+{
+ char **keys;
+ int i;
+
+ if (!config)
+ return;
+
+ keys = g_key_file_get_groups(config, NULL);
+
+ for (i = 0; keys != NULL && keys[i] != NULL; i++) {
+ if (!g_str_equal(keys[i], "General"))
+ warn("Unknown group %s in main.conf", keys[i]);
+ }
+
+ g_strfreev(keys);
+
+ keys = g_key_file_get_keys(config, "General", NULL, NULL);
+
+ for (i = 0; keys != NULL && keys[i] != NULL; i++) {
+ gboolean found;
+ unsigned int j;
+
+ found = FALSE;
+ for (j = 0; j < G_N_ELEMENTS(supported_options); j++) {
+ if (g_str_equal(keys[i], supported_options[j])) {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ warn("Unknown key %s in main.conf", keys[i]);
+ }
+
+ g_strfreev(keys);
+}
+
+void parse_config(GKeyFile *config)
+{
+ GError *err = NULL;
+ char *str;
+ int val;
+ gboolean boolean;
+
+ if (!config)
+ return;
+
+ check_config(config);
+
+ boolean = g_key_file_get_boolean(config, "General", "fork", &err);
+ if (err) {
+ g_clear_error(&err);
+ } else
+ main_opts.enable_fork = boolean;
+
+ boolean = g_key_file_get_boolean(config, "General", "lpm", &err);
+ if (err) {
+ g_clear_error(&err);
+ } else
+ main_opts.enable_lpm = boolean;
+
+ boolean = g_key_file_get_boolean(config, "General", "reg_hci", &err);
+ if (err) {
+ g_clear_error(&err);
+ } else
+ main_opts.enable_hci = boolean;
+
+ val = g_key_file_get_integer(config, "General", "baud_rate", &err);
+ if (err) {
+ g_clear_error(&err);
+ } else {
+ main_opts.baud_rate = val;
+ main_opts.set_baud_rate = TRUE;
+ }
+
+ str = g_key_file_get_string(config, "General", "fw_patch", &err);
+ if (err) {
+ g_clear_error(&err);
+ } else {
+ g_free(main_opts.fw_patch);
+ main_opts.fw_patch = str;
+ main_opts.dl_patch = TRUE;
+ }
+
+ str = g_key_file_get_string(config, "General", "uart_dev", &err);
+ if (err) {
+ g_clear_error(&err);
+ main_opts.uart_dev = hci_uart_default_dev;
+ } else {
+ g_free(main_opts.uart_dev);
+ main_opts.uart_dev = str;
+ }
+
+ str = g_key_file_get_string(config, "General", "scopcm", &err);
+ if (err) {
+ g_clear_error(&err);
+ } else {
+ g_free(main_opts.scopcm);
+ main_opts.scopcm = str;
+ main_opts.set_scopcm = TRUE;
+ }
+}
+
+gboolean check_bd_format(const char* bd_add)
+{
+ int i, len;
+
+ len = strlen(bd_add);
+
+ if (len != 17)
+ return FALSE;
+
+ for (i = 0 ; i < len; i++)
+ {
+ /* check that format is xx:xx: ... etc. */
+ if ((isxdigit(bd_add[i]) && i%3 != 2) ||
+ (bd_add[i] == ':' && i%3 == 2))
+ {
+ ;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void load_bd_add(void)
+{
+ FILE *fp;
+ int ret;
+
+ fp = fopen(BD_ADD_FACTORY_FILE, "r");
+
+ /* if BD add file has not been provisioned do not send VSC to set BD address: the one configured in OTP will be used or default FW one */
+ if (fp == NULL)
+ {
+ main_opts.set_bd = FALSE;
+ return;
+ }
+
+ ret = fscanf(fp, "%17c", factory_bd_add);
+
+ /* if factory BD address is not well formatted or not present do not send VSC to set BD address: the one configured in OTP will be used or default FW one */
+ if (!(ret == 1 && check_bd_format(factory_bd_add)))
+ {
+ main_opts.set_bd = FALSE;
+ }
+ else
+ {
+ main_opts.bd_add = factory_bd_add;
+ main_opts.set_bd = TRUE;
+ }
+
+ fclose(fp);
+
+}
+
+void read_config(char* file)
+{
+ GKeyFile *config;
+ char *cur = hciattach_options;
+ const char *end = hciattach_options + sizeof(hciattach_options);
+
+ /* set first default values and then load configured ones */
+ init_config();
+ config = load_config(file);
+ parse_config(config);
+ load_bd_add();
+
+ /* set always configured options: use same configured baud-rate also for download, and ignore first 2 bytes (needed by bcm43341 and more recent brcm bt chip) */
+ cur += snprintf(cur, end-cur, "%s", "--use_baudrate_for_download --no2bytes");
+
+ /* concatenate configured options */
+ if ((cur < end) && (main_opts.enable_fork)) {
+ cur += snprintf(cur, end-cur," %s", "--enable_fork");
+ }
+ if ((cur < end) && (main_opts.enable_lpm)) {
+ cur += snprintf(cur, end-cur," %s", "--enable_lpm");
+ }
+ if ((cur < end) && (main_opts.enable_hci)) {
+ cur += snprintf(cur, end-cur," %s", "--enable_hci");
+ }
+ if ((cur < end) && (main_opts.set_baud_rate)) {
+ cur += snprintf(cur, end-cur," --baudrate %d", main_opts.baud_rate);
+ }
+ if ((cur < end) && (main_opts.dl_patch)) {
+ cur += snprintf(cur, end-cur," --patchram %s", main_opts.fw_patch);
+ }
+ if ((cur < end) && (main_opts.set_bd)) {
+ cur += snprintf(cur, end-cur," --bd_addr %s", main_opts.bd_add);
+ }
+ if ((cur < end) && (main_opts.set_scopcm)) {
+ cur += snprintf(cur, end-cur," --scopcm %s", main_opts.scopcm);
+ }
+}
+
+void free_hci()
+{
+ char cmd[PATH_MAX];
+
+ snprintf(cmd, sizeof(cmd), "pidof %s", hciattach);
+
+ if (!system(cmd))
+ {
+ snprintf(cmd, sizeof(cmd), "killall %s", hciattach);
+ system(cmd);
+ printf("killing %s\n", hciattach);
+ fflush(stdout);
+ }
+}
+
+void attach_hci()
+{
+ char hci_execute[PATH_MAX];
+
+ snprintf(hci_execute, sizeof(hci_execute), "%s %s %s", hciattach, hciattach_options, main_opts.uart_dev);
+
+ printf("execute %s\n", hci_execute);
+ fflush(stdout);
+
+ system(hci_execute);
+
+ /* remember if hci device has been registered (in case conf file is changed) */
+ hci_dev_registered = main_opts.enable_hci;
+}
+
+void up_hci(int hci_idx)
+{
+ int sk, i;
+ struct hci_dev_info hci_info;
+
+ sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
+
+ if (sk < 0)
+ {
+ perror("Fail to create bluetooth hci socket");
+ return;
+ }
+
+ memset(&hci_info, 0, sizeof(hci_info));
+
+ hci_info.dev_id = hci_idx;
+
+ for (i = 0; i < MAX_RETRY; i++)
+ {
+ if (ioctl(sk, HCIGETDEVINFO, (void *) &hci_info) < 0)
+ {
+ perror("Failed to get HCI device information");
+ /* sleep 100ms */
+ usleep(100*1000);
+ continue;
+ }
+
+ if (hci_test_bit(HCI_RUNNING, &hci_info.flags) && !hci_test_bit(HCI_INIT, &hci_info.flags))
+ {
+ /* check if kernel has already set device UP... */
+ if (!hci_test_bit(HCI_UP, &hci_info.flags))
+ {
+ if (ioctl(sk, HCIDEVUP, hci_idx) < 0)
+ {
+ /* ignore if device is already UP and ready */
+ if (errno == EALREADY)
+ break;
+
+ perror("Fail to set hci device UP");
+ }
+ }
+ break;
+ }
+
+ /* sleep 100ms */
+ usleep(100*1000);
+ }
+
+ close(sk);
+}
+
+/* calling this routine to be sure to have rfkill hci bluetooth interface unblocked:
+ if user does:
+ - 'rfkill block bluetooth' and then
+ - 'rfkill unblock 2'
+ once hci bluetooth is registered back it will be blocked */
+void rfkill_bluetooth_unblock()
+{
+ int fd, sk, times;
+ int ret = -1;
+ struct rfkill_event event;
+
+ fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC);
+ if (fd < 0)
+ {
+ perror("fail to open rfkill interface");
+ return;
+ }
+ memset(&event, 0, sizeof(event));
+ event.op = RFKILL_OP_CHANGE_ALL;
+ event.type = RFKILL_TYPE_BLUETOOTH;
+ event.soft = 0;
+ if (write(fd, &event, sizeof(event)) < 0)
+ {
+ perror("fail to unblock rfkill bluetooth");
+ }
+ close(fd);
+
+}
+
+int main(int argc, char **argv)
+{
+ struct rfkill_event event;
+ struct timeval tv;
+ struct pollfd p;
+ ssize_t len;
+ int fd, fd_name, n, type;
+ int ret, hci_dev_id;
+ char *script;
+ char sysname[PATH_MAX];
+
+ /* this code is ispired by rfkill source code */
+
+ fd = open("/dev/rfkill", O_RDONLY);
+ if (fd < 0) {
+ perror("Can't open RFKILL control device");
+ return fd;
+ }
+
+ memset(&p, 0, sizeof(p));
+ p.fd = fd;
+ p.events = POLLIN | POLLHUP;
+
+ while (1) {
+ n = poll(&p, 1, -1);
+ if (n < 0) {
+ perror("Failed to poll RFKILL control device");
+ break;
+ }
+
+ if (n == 0)
+ continue;
+
+ len = read(fd, &event, sizeof(event));
+ if (len < 0) {
+ perror("Reading of RFKILL events failed");
+ break;
+ }
+
+ if (len != sizeof(event)) {
+ perror("Wrong size of RFKILL event");
+ break;
+ }
+
+ /* ignore event for others interfaces (not bluetooth) */
+ if (event.type != RFKILL_TYPE_BLUETOOTH)
+ continue;
+
+ gettimeofday(&tv, NULL);
+ printf("%ld.%06u: idx %u type %u op %u soft %u hard %u\n",
+ (long) tv.tv_sec, (unsigned int) tv.tv_usec,
+ event.idx, event.type, event.op, event.soft, event.hard);
+ fflush(stdout);
+
+ /* try to read rfkill interface name only if event is not a remove one, in this case call free_hci */
+ if (event.op != RFKILL_OP_DEL)
+ {
+ /* get the name to check the bt chip */
+ snprintf(sysname, sizeof(sysname), "/sys/class/rfkill/rfkill%u/name", event.idx);
+
+ fd_name = open(sysname, O_RDONLY);
+ if (fd_name < 0)
+ {
+ perror("fail to open rfkill name");
+ continue;
+ }
+
+ memset(sysname, 0, sizeof(sysname));
+
+ /* read name */
+ if (read(fd_name, sysname, sizeof(sysname) - 1) < 0)
+ {
+ perror("fail to read rfkill name");
+ close(fd_name);
+ continue;
+ }
+
+ close(fd_name);
+
+ /* based on chip read its config file, if any, and define the hciattach utility used to dowload the patch */
+ if (strncmp(BCM_RFKILL_NAME,sysname, sizeof(BCM_RFKILL_NAME)) == 0)
+ {
+ read_config("/etc/firmware/bcm43341.conf");
+ snprintf(hciattach, sizeof(hciattach), "brcm_patchram_plus");
+ type = BT_PWR;
+ }
+ else if (g_str_has_prefix(sysname, "hci") )
+ {
+ type = BT_HCI;
+ hci_dev_id = atoi(sysname + 3);
+ }
+ else
+ continue;
+ }
+
+ switch (event.op) {
+ case RFKILL_OP_CHANGE:
+ case RFKILL_OP_CHANGE_ALL:
+ case RFKILL_OP_ADD:
+ if (event.soft == 0 && event.hard == 0)
+ {
+ if (type == BT_PWR)
+ {
+ /* if unblock is for power interface: download patch and eventually register hci device */
+ free_hci();
+ attach_hci();
+ /* force to unblock also the bluetooth hci rfkill interface if hci device was registered */
+ if (hci_dev_registered)
+ rfkill_bluetooth_unblock();
+ }
+ else if (type == BT_HCI && hci_dev_registered)
+ {
+ /* wait unblock on hci bluetooth interface and force device UP */
+ up_hci(hci_dev_id);
+ }
+ }
+ else if (type == BT_PWR && hci_dev_registered)
+ {
+ /* for a block event on power interface force unblock of hci device interface */
+ free_hci();
+ }
+
+ /* save index of rfkill interface for bluetooth power */
+ if (event.op == RFKILL_OP_ADD && type == BT_PWR)
+ bt_pwr_rfkill_idx = event.idx;
+ break;
+ case RFKILL_OP_DEL:
+ /* in case pwr rfkill interface is removed, unregister hci dev if it was registered */
+ if (bt_pwr_rfkill_idx == event.idx && hci_dev_registered)
+ free_hci();
+ break;
+ default:
+ continue;
+ }
+
+ }
+
+ close(fd);
+
+ return 0;
+}
diff --git a/meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend b/meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend
new file mode 100644
index 0000000..3aad093
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend
@@ -0,0 +1,62 @@
+# overwrite to 5.24 version and its checksum
+
+PV = "5.24"
+
+SRC_URI[md5sum] = "37b785185fb98269b45e51b254bd8d3d"
+SRC_URI[sha256sum] = "e870c5fba0bf3496856fc720e2d217856fcf40b59829f8cc0c05902ebb9fb837"
+
+# to get bluetooth.conf
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+# few overwrite for 5.24 version
+SRC_URI = "\
+ ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
+ file://bluetooth.conf \
+ file://obex_set_dbus_session_service.patch \
+"
+
+RDEPENDS_${PN} += "eglibc-gconv-utf-16"
+
+PACKAGECONFIG[alsa] = ""
+
+EXTRA_OECONF = "\
+ --enable-sixaxis \
+ --enable-tools \
+ --disable-cups \
+ --enable-test \
+ --enable-datafiles \
+ ${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--disable-systemd', d)} \
+ --enable-library \
+ --enable-experimental \
+"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/bluetooth/
+ if [ -f ${S}/profiles/audio/audio.conf ]; then
+ install -m 0644 ${S}/profiles/audio/audio.conf ${D}/${sysconfdir}/bluetooth/
+ fi
+ if [ -f ${S}/profiles/proximity/proximity.conf ]; then
+ install -m 0644 ${S}/profiles/proximity/proximity.conf ${D}/${sysconfdir}/bluetooth/
+ fi
+ if [ -f ${S}/profiles/network/network.conf ]; then
+ install -m 0644 ${S}/profiles/network/network.conf ${D}/${sysconfdir}/bluetooth/
+ fi
+ if [ -f ${S}/profiles/input/input.conf ]; then
+ install -m 0644 ${S}/profiles/input/input.conf ${D}/${sysconfdir}/bluetooth/
+ fi
+ if [ -f ${S}/src/main.conf ]; then
+ install -m 0644 ${S}/src/main.conf ${D}/${sysconfdir}/bluetooth/
+ fi
+ if [ -f ${S}/tools/obexctl ]; then
+ install -m 0755 ${S}/tools/obexctl ${D}${bindir}
+ fi
+
+ if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ # Copy file service
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 644 ${S}/obexd/src/obex.service ${D}/${systemd_unitdir}/system/
+ fi
+
+ # at_console doesn't really work with the current state of OE, so punch some more holes so people can actually use BT
+ install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/
+}
diff --git a/meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf b/meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf
new file mode 100644
index 0000000..162c803
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf
@@ -0,0 +1,24 @@
+<!-- This configuration file specifies the required security policies
+ for Bluetooth core daemon to work. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- ../system.conf have denied everything, so we just punch some holes -->
+
+ <policy context="default">
+ <allow own="org.bluez"/>
+ <allow own="org.bluez.obex"/>
+ <allow send_destination="org.bluez"/>
+ <allow send_destination="org.bluez.obex"/>
+ <allow send_interface="org.bluez.Agent1"/>
+ <allow send_interface="org.bluez.MediaEndpoint1"/>
+ <allow send_interface="org.bluez.Profile1"/>
+ <allow send_interface="org.bluez.ThermometerWatcher1"/>
+ <allow send_interface="org.bluez.AlertAgent1"/>
+ <allow send_interface="org.bluez.HeartRateWatcher1"/>
+ <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
+ </policy>
+
+</busconfig>
diff --git a/meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch b/meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch
new file mode 100644
index 0000000..4000aaf
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch
@@ -0,0 +1,10 @@
+--- a/obexd/src/obex.service.in 2014-10-30 14:40:00.832479049 +0100
++++ b/obexd/src/obex.service.in 2014-10-30 14:40:41.032477622 +0100
+@@ -4,6 +4,7 @@
+ [Service]
+ Type=dbus
+ BusName=org.bluez.obex
++Environment="DBUS_SESSION_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket"
+ ExecStart=@libexecdir@/obexd
+
+ [Install]
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman.inc b/meta-edison-distro/recipes-connectivity/connman/connman.inc
new file mode 100644
index 0000000..b3147c9
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman.inc
@@ -0,0 +1,215 @@
+SUMMARY = "A daemon for managing internet connections within embedded devices"
+DESCRIPTION = "The ConnMan project provides a daemon for managing \
+internet connections within embedded devices running the Linux \
+operating system. The Connection Manager is designed to be slim and \
+to use as few resources as possible, so it can be easily integrated. \
+It is a fully modular system that can be extended, through plug-ins, \
+to support all kinds of wired or wireless technologies. Also, \
+configuration methods, like DHCP and domain name resolving, are \
+implemented using plug-ins."
+HOMEPAGE = "http://connman.net/"
+BUGTRACKER = "https://01.org/jira/browse/CM"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
+ file://src/main.c;beginline=1;endline=20;md5=d6a1ac98a6791c5294e8a7f176ecd66d"
+
+DEPENDS = "dbus glib-2.0 ppp iptables"
+
+INC_PR = "r20"
+
+EXTRA_OECONF += "\
+ ac_cv_path_WPASUPPLICANT=${sbindir}/wpa_supplicant \
+ ac_cv_path_PPPD=${sbindir}/pppd \
+ --enable-debug \
+ --enable-loopback \
+ --enable-ethernet \
+ --enable-tools \
+ --enable-test \
+ --disable-polkit \
+ --enable-client \
+ ${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdunitdir=${systemd_unitdir}/system/', '--with-systemdunitdir=', d)} \
+"
+
+PACKAGECONFIG ??= "wispr \
+ ${@base_contains('DISTRO_FEATURES', 'wifi','wifi', '', d)} \
+ ${@base_contains('DISTRO_FEATURES', 'bluetooth','bluetooth', '', d)} \
+ ${@base_contains('DISTRO_FEATURES', '3g','3g', '', d)} \
+"
+
+# If you want ConnMan to support VPN, add following statement into
+# local.conf or distro config
+# PACKAGECONFIG_append_pn-connman = " openvpn vpnc l2tp pptp"
+
+PACKAGECONFIG[wifi] = "--enable-wifi, --disable-wifi, wpa-supplicant"
+PACKAGECONFIG[bluetooth] = "--enable-bluetooth, --disable-bluetooth, bluez4"
+PACKAGECONFIG[3g] = "--enable-ofono, --disable-ofono, ofono"
+PACKAGECONFIG[tist] = "--enable-tist,--disable-tist,"
+PACKAGECONFIG[openvpn] = "--enable-openvpn --with-openvpn=${sbindir}/openvpn,--disable-openvpn,,openvpn"
+PACKAGECONFIG[vpnc] = "--enable-vpnc --with-vpnc=${sbindir}/vpnc,--disable-vpnc,,vpnc"
+PACKAGECONFIG[l2tp] = "--enable-l2tp --with-l2tp=${sbindir}/xl2tpd,--disable-l2tp,,xl2tpd"
+PACKAGECONFIG[pptp] = "--enable-pptp --with-pptp=${sbindir}/pptp,--disable-pptp,,pptp-linux"
+# WISPr support for logging into hotspots, requires TLS
+PACKAGECONFIG[wispr] = "--enable-wispr,--disable-wispr,gnutls,"
+
+INITSCRIPT_NAME = "connman"
+INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
+
+python __anonymous () {
+ systemd_packages = "${PN}"
+ pkgconfig = d.getVar('PACKAGECONFIG', True)
+ if ('openvpn' or 'vpnc' or 'l2tp' or 'pptp') in pkgconfig.split():
+ systemd_packages += " ${PN}-vpn"
+ d.setVar('SYSTEMD_PACKAGES', systemd_packages)
+}
+
+SYSTEMD_SERVICE_${PN} = "connman.service"
+SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service"
+SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"
+
+inherit autotools-brokensep pkgconfig systemd update-rc.d
+
+do_configure_append () {
+ sed -i "s#ExecStart=#${SYSTEMD_WIRED_SETUP}\nExecStart=#" ${S}/src/connman.service
+}
+
+# This allows *everyone* to access ConnMan over DBus, without any access
+# control. Really the at_console flag should work, which would mean that
+# both this and the xuser patch can be dropped.
+do_compile_append() {
+ sed -i -e s:deny:allow:g src/connman-dbus.conf
+ sed -i -e s:deny:allow:g vpn/vpn-dbus.conf
+}
+
+do_install_append() {
+ if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
+ sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman
+ fi
+
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/tools/*-test ${D}${bindir}
+ if [ -e ${S}/tools/wispr ]; then
+ install -m 0755 ${S}/tools/wispr ${D}${bindir}
+ fi
+ install -m 0755 ${B}/client/connmanctl ${D}${bindir}
+
+ # We don't need to package an empty directory
+ rmdir --ignore-fail-on-non-empty ${D}${libdir}/connman/scripts
+
+ # Automake 1.12 won't install empty directories, but we need the
+ # plugins directory to be present for ownership
+ mkdir -p ${D}${libdir}/connman/plugins
+}
+
+# These used to be plugins, but now they are core
+RPROVIDES_${PN} = "\
+ connman-plugin-loopback \
+ connman-plugin-ethernet \
+ ${@base_contains('PACKAGECONFIG', 'bluetooth','connman-plugin-bluetooth', '', d)} \
+ ${@base_contains('PACKAGECONFIG', 'wifi','connman-plugin-wifi', '', d)} \
+ ${@base_contains('PACKAGECONFIG', '3g','connman-plugin-ofono', '', d)} \
+ "
+
+RDEPENDS_${PN} = "\
+ dbus \
+ ${@base_contains('PACKAGECONFIG', 'bluetooth', 'bluez4', '', d)} \
+ ${@base_contains('PACKAGECONFIG', 'wifi','wpa-supplicant', '', d)} \
+ ${@base_contains('PACKAGECONFIG', '3g','ofono', '', d)} \
+ xuser-account \
+ "
+
+PACKAGES_DYNAMIC += "^${PN}-plugin-.*"
+
+def add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, add_insane_skip):
+ plugintype = pkg.split( '-' )[-1]
+ if plugintype in depmap:
+ rdepends = map(lambda x: multilib_prefix + x, \
+ depmap[plugintype].split())
+ d.setVar("RDEPENDS_%s" % pkg, " ".join(rdepends))
+ if add_insane_skip:
+ d.appendVar("INSANE_SKIP_%s" % pkg, "dev-so")
+
+python populate_packages_prepend() {
+ depmap = dict(pppd="ppp")
+ multilib_prefix = (d.getVar("MLPREFIX", True) or "")
+
+ hook = lambda file,pkg,x,y,z: \
+ add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, False)
+ plugin_dir = d.expand('${libdir}/connman/plugins/')
+ plugin_name = d.expand('${PN}-plugin-%s')
+ do_split_packages(d, plugin_dir, '^(.*).so$', plugin_name, \
+ '${PN} plugin for %s', extra_depends='', hook=hook, prepend=True )
+
+ hook = lambda file,pkg,x,y,z: \
+ add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, True)
+ plugin_dir = d.expand('${libdir}/connman/plugins-vpn/')
+ plugin_name = d.expand('${PN}-plugin-vpn-%s')
+ do_split_packages(d, plugin_dir, '^(.*).so$', plugin_name, \
+ '${PN} VPN plugin for %s', extra_depends='', hook=hook, prepend=True )
+}
+
+PACKAGES =+ "${PN}-tools ${PN}-tests ${PN}-client"
+
+FILES_${PN}-tools = "${bindir}/wispr"
+
+FILES_${PN}-tests = "${bindir}/*-test ${libdir}/${BPN}/test/*"
+RDEPENDS_${PN}-tests = "python-dbus python-pygobject python-textutils python-subprocess python-fcntl python-netclient"
+
+FILES_${PN}-client = "${bindir}/connmanctl"
+
+FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \
+ ${libdir}/connman/plugins \
+ ${sysconfdir} ${sharedstatedir} ${localstatedir} \
+ ${base_bindir}/* ${base_sbindir}/* ${base_libdir}/*.so* ${datadir}/${PN} \
+ ${datadir}/dbus-1/system-services/*"
+
+FILES_${PN}-dbg += "${libdir}/connman/*/.debug"
+
+FILES_${PN}-dev += "${libdir}/connman/*/*.la"
+
+PACKAGES =+ "${PN}-vpn"
+
+SUMMARY_${PN}-vpn = "A daemon for managing VPN connections within embedded devices"
+DESCRIPTION_${PN}-vpn = "The ConnMan VPN provides a daemon for \
+managing VPN connections within embedded devices running the Linux \
+operating system. The connman-vpnd handles all the VPN connections \
+and starts/stops VPN client processes when necessary. The connman-vpnd \
+provides a DBus API for managing VPN connections. All the different \
+VPN technogies are implemented using plug-ins."
+FILES_${PN}-vpn += "${sbindir}/connman-vpnd \
+ ${sysconfdir}/dbus-1/system.d/connman-vpn-dbus.conf \
+ ${datadir}/dbus-1/system-services/net.connman.vpn.service \
+ ${systemd_unitdir}/system/connman-vpn.service"
+
+SUMMARY_${PN}-plugin-vpn-openvpn = "An OpenVPN plugin for ConnMan VPN"
+DESCRIPTION_${PN}-plugin-vpn-openvpn = "The ConnMan OpenVPN plugin uses openvpn client \
+to create a VPN connection to OpenVPN server."
+FILES_${PN}-plugin-vpn-openvpn += "${libdir}/connman/scripts/openvpn-script \
+ ${libdir}/connman/plugins-vpn/openvpn.so"
+RDEPENDS_${PN}-plugin-vpn-openvpn += "${PN}-vpn"
+RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','openvpn','${PN}-plugin-vpn-openvpn', '', d)}"
+
+SUMMARY_${PN}-plugin-vpn-vpnc = "A vpnc plugin for ConnMan VPN"
+DESCRIPTION_${PN}-plugin-vpn-vpnc = "The ConnMan vpnc plugin uses vpnc client \
+to create a VPN connection to Cisco3000 VPN Concentrator."
+FILES_${PN}-plugin-vpn-vpnc += "${libdir}/connman/scripts/openconnect-script \
+ ${libdir}/connman/plugins-vpn/vpnc.so"
+RDEPENDS_${PN}-plugin-vpn-vpnc += "${PN}-vpn"
+RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','vpnc','${PN}-plugin-vpn-vpnc', '', d)}"
+
+SUMMARY_${PN}-plugin-vpn-l2tp = "A L2TP plugin for ConnMan VPN"
+DESCRIPTION_${PN}-plugin-vpn-l2tp = "The ConnMan L2TP plugin uses xl2tpd daemon \
+to create a VPN connection to L2TP server."
+FILES_${PN}-plugin-vpn-l2tp += "${libdir}/connman/scripts/libppp-plugin.so* \
+ ${libdir}/connman/plugins-vpn/l2tp.so"
+RDEPENDS_${PN}-plugin-vpn-l2tp += "${PN}-vpn"
+RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','l2tp','${PN}-plugin-vpn-l2tp', '', d)}"
+
+SUMMARY_${PN}-plugin-vpn-pptp = "A PPTP plugin for ConnMan VPN"
+DESCRIPTION_${PN}-plugin-vpn-pptp = "The ConnMan PPTP plugin uses pptp-linux client \
+to create a VPN connection to PPTP server."
+FILES_${PN}-plugin-vpn-pptp += "${libdir}/connman/scripts/libppp-plugin.so* \
+ ${libdir}/connman/plugins-vpn/pptp.so"
+RDEPENDS_${PN}-plugin-vpn-pptp += "${PN}-vpn"
+RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','pptp','${PN}-plugin-vpn-pptp', '', d)}"
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch b/meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch
new file mode 100644
index 0000000..e6f03e6
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch
@@ -0,0 +1,35 @@
+From 4ddaf78dad5a9ee4a0658235f71b75132192123e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 7 Apr 2012 18:52:12 -0700
+Subject: [PATCH] plugin.h: Change visibility to default for debug symbols
+
+gold refuses to link in undefined weak symbols which
+have hidden visibility
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+
+Upstream-Status: Pending
+---
+ include/plugin.h | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/plugin.h b/include/plugin.h
+index 692a4e5..a9361c3 100644
+--- a/include/plugin.h
++++ b/include/plugin.h
+@@ -89,9 +89,9 @@ struct connman_plugin_desc {
+ #else
+ #define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
+ extern struct connman_debug_desc __start___debug[] \
+- __attribute__ ((weak, visibility("hidden"))); \
++ __attribute__ ((weak, visibility("default"))); \
+ extern struct connman_debug_desc __stop___debug[] \
+- __attribute__ ((weak, visibility("hidden"))); \
++ __attribute__ ((weak, visibility("default"))); \
+ extern struct connman_plugin_desc connman_plugin_desc \
+ __attribute__ ((visibility("default"))); \
+ struct connman_plugin_desc connman_plugin_desc = { \
+--
+1.7.5.4
+
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch b/meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch
new file mode 100644
index 0000000..707b3ca
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch
@@ -0,0 +1,21 @@
+Because Poky doesn't support at_console we need to special-case the session
+user.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/src/connman-dbus.conf b/src/connman-dbus.conf
+index 98a773e..466809c 100644
+--- a/src/connman-dbus.conf
++++ b/src/connman-dbus.conf
+@@ -8,6 +8,9 @@
+ <allow send_interface="net.connman.Counter"/>
+ <allow send_interface="net.connman.Notification"/>
+ </policy>
++ <policy user="xuser">
++ <allow send_destination="net.connman"/>
++ </policy>
+ <policy at_console="true">
+ <allow send_destination="net.connman"/>
+ </policy>
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/connman b/meta-edison-distro/recipes-connectivity/connman/connman/connman
new file mode 100644
index 0000000..bf7a94a
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman/connman
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+DAEMON=/usr/sbin/connmand
+PIDFILE=/var/run/connmand.pid
+DESC="Connection Manager"
+
+if [ -f /etc/default/connman ] ; then
+ . /etc/default/connman
+fi
+
+set -e
+
+nfsroot=0
+
+exec 9<&0 < /proc/mounts
+while read dev mtpt fstype rest; do
+ if test $mtpt = "/" ; then
+ case $fstype in
+ nfs | nfs4)
+ nfsroot=1
+ break
+ ;;
+ *)
+ ;;
+ esac
+ fi
+done
+
+do_start() {
+ EXTRA_PARAM=""
+ if test $nfsroot -eq 1 ; then
+ NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'`
+ NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'`
+
+ if [ ! -z "$NET_ADDR" ]; then
+ if [ "$NET_ADDR" = dhcp ]; then
+ ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
+ if [ ! -z "$ethn" ]; then
+ EXTRA_PARAM="-I $ethn"
+ fi
+ else
+ for i in $NET_DEVS; do
+ ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'`
+ if [ "$NET_ADDR" = "$ADDR" ]; then
+ EXTRA_PARAM="-I $i"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if [ -f @LIBDIR@/connman/wired-setup ] ; then
+ . @LIBDIR@/connman/wired-setup
+ fi
+ $DAEMON $EXTRA_PARAM
+}
+
+do_stop() {
+ start-stop-daemon --stop --name connmand --quiet
+}
+
+case "$1" in
+ start)
+ echo "Starting $DESC"
+ do_start
+ ;;
+ stop)
+ echo "Stopping $DESC"
+ do_stop
+ ;;
+ restart|force-reload)
+ echo "Restarting $DESC"
+ do_stop
+ sleep 1
+ do_start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch b/meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch
new file mode 100644
index 0000000..6cce2e3
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch
@@ -0,0 +1,15 @@
+--- a/gsupplicant/supplicant.c
++++ b/gsupplicant/supplicant.c
+@@ -1963,8 +1963,11 @@
+ if (g_strcmp0(key, "Capabilities") == 0) {
+ supplicant_dbus_property_foreach(iter, interface_capability,
+ interface);
++#if 0
++ /* Disable temporarely p2p */
+ if (interface->mode_capa & G_SUPPLICANT_CAPABILITY_MODE_P2P)
+ interface->p2p_support = true;
++#endif
+ } else if (g_strcmp0(key, "State") == 0) {
+ const char *str = NULL;
+
+
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb
new file mode 100644
index 0000000..70993ac
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb
@@ -0,0 +1,11 @@
+require connman.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+ file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
+ file://add_xuser_dbus_permission.patch \
+ file://disable_p2p.patch \
+ file://connman \
+ "
+SRC_URI[md5sum] = "4f4b3be54da000c65b153c1b9afcadf2"
+SRC_URI[sha256sum] = "13997824c076af150c68d6d79e48277216e8192278a5c6615cfd4905d65600f5"
+RRECOMMENDS_${PN} = "connman-conf"
diff --git a/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend
new file mode 100644
index 0000000..80e7b38
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend
@@ -0,0 +1,35 @@
+
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
+ file://src/main.c;beginline=1;endline=20;md5=486a279a6ab0c8d152bcda3a5b5edc36"
+
+PACKAGECONFIG ??= "wispr \
+ ${@base_contains('DISTRO_FEATURES', 'wifi','wifi', '', d)} \
+ ${@base_contains('DISTRO_FEATURES', 'bluetooth','bluetooth', '', d)} \
+"
+
+PACKAGECONFIG[bluetooth] = "--enable-bluetooth, --disable-bluetooth, bluez5"
+PACKAGECONFIG[3g] = ""
+
+SYSTEMD_AUTO_ENABLE = "disable"
+
+do_configure_append () {
+ # Do not usb0 as it is used for SSH connection
+ sed -i "s/ExecStart=.*/& --nodevice=usb0/" ${S}/src/connman.service
+}
+
+
+# These used to be plugins, but now they are core
+RPROVIDES_${PN} = "\
+ connman-plugin-loopback \
+ connman-plugin-ethernet \
+ ${@base_contains('PACKAGECONFIG', 'bluetooth','connman-plugin-bluetooth', '', d)} \
+ ${@base_contains('PACKAGECONFIG', 'wifi','connman-plugin-wifi', '', d)} \
+ "
+
+RDEPENDS_${PN} = "\
+ dbus \
+ ${@base_contains('PACKAGECONFIG', 'bluetooth', 'bluez5', '', d)} \
+ ${@base_contains('PACKAGECONFIG', 'wifi','wpa-supplicant', '', d)} \
+ "
+
diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/defconfig b/meta-edison-distro/recipes-connectivity/hostapd/files/defconfig
new file mode 100644
index 0000000..2789640
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/hostapd/files/defconfig
@@ -0,0 +1,145 @@
+# Example hostapd build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cass, these lines should use += in order not
+# to override previous values of the variables.
+
+# Driver interface for Host AP driver
+CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for wired authenticator
+CONFIG_DRIVER_WIRED=y
+
+# Driver interface for madwifi driver
+#CONFIG_DRIVER_MADWIFI=y
+#CFLAGS += -I../../madwifi # change to the madwifi source directory
+
+# Driver interface for Prism54 driver
+CONFIG_DRIVER_PRISM54=y
+
+# Driver interface for drivers using the nl80211 kernel interface
+CONFIG_DRIVER_NL80211=y
+CONFIG_LIBNL32=y
+# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be
+# shipped with your distribution yet. If that is the case, you need to build
+# newer libnl version and point the hostapd build to use it.
+#LIBNL=/usr/src/libnl
+#CFLAGS += -I$(LIBNL)/include
+#LIBS += -L$(LIBNL)/lib
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+
+# Driver interface for no driver (e.g., RADIUS server only)
+#CONFIG_DRIVER_NONE=y
+
+# IEEE 802.11F/IAPP
+CONFIG_IAPP=y
+
+# WPA2/IEEE 802.11i RSN pre-authentication
+CONFIG_RSN_PREAUTH=y
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection)
+# This version is an experimental implementation based on IEEE 802.11w/D1.0
+# draft and is subject to change since the standard has not yet been finalized.
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Integrated EAP server
+CONFIG_EAP=y
+
+# EAP-MD5 for the integrated EAP server
+CONFIG_EAP_MD5=y
+
+# EAP-TLS for the integrated EAP server
+CONFIG_EAP_TLS=y
+
+# EAP-MSCHAPv2 for the integrated EAP server
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-PEAP for the integrated EAP server
+CONFIG_EAP_PEAP=y
+
+# EAP-GTC for the integrated EAP server
+CONFIG_EAP_GTC=y
+
+# EAP-TTLS for the integrated EAP server
+CONFIG_EAP_TTLS=y
+
+# EAP-SIM for the integrated EAP server
+#CONFIG_EAP_SIM=y
+
+# EAP-AKA for the integrated EAP server
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' for the integrated EAP server
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# EAP-PAX for the integrated EAP server
+#CONFIG_EAP_PAX=y
+
+# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-SAKE for the integrated EAP server
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK for the integrated EAP server
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-FAST for the integrated EAP server
+# Note: Default OpenSSL package does not include support for all the
+# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
+# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
+# to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+# Enable UPnP support for external WPS Registrars
+#CONFIG_WPS_UPNP=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# Trusted Network Connect (EAP-TNC)
+#CONFIG_EAP_TNC=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# RADIUS authentication server. This provides access to the integrated EAP
+# server from external hosts using RADIUS.
+CONFIG_RADIUS_SERVER=y
+
+# Build IPv6 support for RADIUS operations
+CONFIG_IPV6=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Use the hostapd's IEEE 802.11 authentication (ACL), but without
+# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
+CONFIG_DRIVER_RADIUS_ACL=y
+
+# IEEE 802.11n (High Throughput) support
+CONFIG_IEEE80211N=y
+
+# Remove debugging code that is printing out debug messages to stdout.
+# This can be used to reduce the size of the hostapd considerably if debugging
+# code is not needed.
+#CONFIG_NO_STDOUT_DEBUG=y
diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane
new file mode 100644
index 0000000..3e7d794
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane
@@ -0,0 +1,1662 @@
+##### hostapd configuration file ##############################################
+# Empty lines and lines starting with # are ignored
+
+# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wlan0ap for
+# management frames); ath0 for madwifi
+interface=wlan0
+
+# In case of madwifi, atheros, and nl80211 driver interfaces, an additional
+# configuration parameter, bridge, may be used to notify hostapd if the
+# interface is included in a bridge. This parameter is not used with Host AP
+# driver. If the bridge parameter is not set, the drivers will automatically
+# figure out the bridge interface (assuming sysfs is enabled and mounted to
+# /sys) and this parameter may not be needed.
+#
+# For nl80211, this parameter can be used to request the AP interface to be
+# added to the bridge automatically (brctl may refuse to do this before hostapd
+# has been started to change the interface mode). If needed, the bridge
+# interface is also created.
+#bridge=br0
+
+# Driver interface type (hostap/wired/madwifi/test/none/nl80211/bsd);
+# default: hostap). nl80211 is used with all Linux mac80211 drivers.
+# Use driver=none if building hostapd as a standalone RADIUS server that does
+# not control any wireless/wired driver.
+driver=nl80211
+
+# hostapd event logger configuration
+#
+# Two output method: syslog and stdout (only usable if not forking to
+# background).
+#
+# Module bitfield (ORed bitfield of modules that will be logged; -1 = all
+# modules):
+# bit 0 (1) = IEEE 802.11
+# bit 1 (2) = IEEE 802.1X
+# bit 2 (4) = RADIUS
+# bit 3 (8) = WPA
+# bit 4 (16) = driver interface
+# bit 5 (32) = IAPP
+# bit 6 (64) = MLME
+#
+# Levels (minimum value for logged events):
+# 0 = verbose debugging
+# 1 = debugging
+# 2 = informational messages
+# 3 = notification
+# 4 = warning
+#
+logger_syslog=-1
+logger_syslog_level=2
+logger_stdout=-1
+logger_stdout_level=2
+
+# Interface for separate control program. If this is specified, hostapd
+# will create this directory and a UNIX domain socket for listening to requests
+# from external programs (CLI/GUI, etc.) for status information and
+# configuration. The socket file will be named based on the interface name, so
+# multiple hostapd processes/interfaces can be run at the same time if more
+# than one interface is used.
+# /var/run/hostapd is the recommended directory for sockets and by default,
+# hostapd_cli will use it when trying to connect with hostapd.
+ctrl_interface=/var/run/hostapd
+
+# Access control for the control interface can be configured by setting the
+# directory to allow only members of a group to use sockets. This way, it is
+# possible to run hostapd as root (since it needs to change network
+# configuration and open raw sockets) and still allow GUI/CLI components to be
+# run as non-root users. However, since the control interface can be used to
+# change the network configuration, this access needs to be protected in many
+# cases. By default, hostapd is configured to use gid 0 (root). If you
+# want to allow non-root users to use the contron interface, add a new group
+# and change this value to match with that group. Add users that should have
+# control interface access to this group.
+#
+# This variable can be a group name or gid.
+#ctrl_interface_group=wheel
+ctrl_interface_group=0
+
+
+##### IEEE 802.11 related configuration #######################################
+
+# SSID to be used in IEEE 802.11 management frames
+# The SSID is dynamically modified by the script /etc/hostapd/hostpad_ssid.sh
+# to get a unique SSID among mutiple Edison boards (see the content of this script)
+# See the header of this script if you want to disable this dynamic setting
+# and to set a manual and static SSID
+ssid=edison_ap
+
+# UTF-8 SSID: Whether the SSID is to be interpreted using UTF-8 encoding
+#utf8_ssid=1
+
+# Country code (ISO/IEC 3166-1). Used to set regulatory domain.
+# Set as needed to indicate country in which device is operating.
+# This can limit available channels and transmit power.
+#country_code=US
+
+# Enable IEEE 802.11d. This advertises the country_code and the set of allowed
+# channels and transmit power levels based on the regulatory limits. The
+# country_code setting must be configured with the correct country for
+# IEEE 802.11d functions.
+# (default: 0 = disabled)
+#ieee80211d=1
+
+# Enable IEEE 802.11h. This enables radar detection and DFS support if
+# available. DFS support is required on outdoor 5 GHz channels in most countries
+# of the world. This can be used only with ieee80211d=1.
+# (default: 0 = disabled)
+#ieee80211h=1
+
+# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,
+# ad = IEEE 802.11ad (60 GHz); a/g options are used with IEEE 802.11n, too, to
+# specify band)
+# Default: IEEE 802.11b
+hw_mode=g
+
+# Channel number (IEEE 802.11)
+# (default: 0, i.e., not set)
+# Please note that some drivers do not use this value from hostapd and the
+# channel will need to be configured separately with iwconfig.
+#
+# If CONFIG_ACS build option is enabled, the channel can be selected
+# automatically at run time by setting channel=acs_survey or channel=0, both of
+# which will enable the ACS survey based algorithm.
+channel=1
+
+# ACS tuning - Automatic Channel Selection
+# See: http://wireless.kernel.org/en/users/Documentation/acs
+#
+# You can customize the ACS survey algorithm with following variables:
+#
+# acs_num_scans requirement is 1..100 - number of scans to be performed that
+# are used to trigger survey data gathering of an underlying device driver.
+# Scans are passive and typically take a little over 100ms (depending on the
+# driver) on each available channel for given hw_mode. Increasing this value
+# means sacrificing startup time and gathering more data wrt channel
+# interference that may help choosing a better channel. This can also help fine
+# tune the ACS scan time in case a driver has different scan dwell times.
+#
+# Defaults:
+#acs_num_scans=5
+
+# Beacon interval in kus (1.024 ms) (default: 100; range 15..65535)
+beacon_int=100
+
+# DTIM (delivery traffic information message) period (range 1..255):
+# number of beacons between DTIMs (1 = every beacon includes DTIM element)
+# (default: 2)
+dtim_period=2
+
+# Maximum number of stations allowed in station table. New stations will be
+# rejected after the station table is full. IEEE 802.11 has a limit of 2007
+# different association IDs, so this number should not be larger than that.
+# (default: 2007)
+max_num_sta=255
+
+# RTS/CTS threshold; 2347 = disabled (default); range 0..2347
+# If this field is not included in hostapd.conf, hostapd will not control
+# RTS threshold and 'iwconfig wlan# rts <val>' can be used to set it.
+rts_threshold=2347
+
+# Fragmentation threshold; 2346 = disabled (default); range 256..2346
+# If this field is not included in hostapd.conf, hostapd will not control
+# fragmentation threshold and 'iwconfig wlan# frag <val>' can be used to set
+# it.
+fragm_threshold=2346
+
+# Rate configuration
+# Default is to enable all rates supported by the hardware. This configuration
+# item allows this list be filtered so that only the listed rates will be left
+# in the list. If the list is empty, all rates are used. This list can have
+# entries that are not in the list of rates the hardware supports (such entries
+# are ignored). The entries in this list are in 100 kbps, i.e., 11 Mbps = 110.
+# If this item is present, at least one rate have to be matching with the rates
+# hardware supports.
+# default: use the most common supported rate setting for the selected
+# hw_mode (i.e., this line can be removed from configuration file in most
+# cases)
+#supported_rates=10 20 55 110 60 90 120 180 240 360 480 540
+
+# Basic rate set configuration
+# List of rates (in 100 kbps) that are included in the basic rate set.
+# If this item is not included, usually reasonable default set is used.
+#basic_rates=10 20
+#basic_rates=10 20 55 110
+#basic_rates=60 120 240
+
+# Short Preamble
+# This parameter can be used to enable optional use of short preamble for
+# frames sent at 2 Mbps, 5.5 Mbps, and 11 Mbps to improve network performance.
+# This applies only to IEEE 802.11b-compatible networks and this should only be
+# enabled if the local hardware supports use of short preamble. If any of the
+# associated STAs do not support short preamble, use of short preamble will be
+# disabled (and enabled when such STAs disassociate) dynamically.
+# 0 = do not allow use of short preamble (default)
+# 1 = allow use of short preamble
+#preamble=1
+
+# Station MAC address -based authentication
+# Please note that this kind of access control requires a driver that uses
+# hostapd to take care of management frame processing and as such, this can be
+# used with driver=hostap or driver=nl80211, but not with driver=madwifi.
+# 0 = accept unless in deny list
+# 1 = deny unless in accept list
+# 2 = use external RADIUS server (accept/deny lists are searched first)
+macaddr_acl=0
+
+# Accept/deny lists are read from separate files (containing list of
+# MAC addresses, one per line). Use absolute path name to make sure that the
+# files can be read on SIGHUP configuration reloads.
+#accept_mac_file=/etc/hostapd.accept
+#deny_mac_file=/etc/hostapd.deny
+
+# IEEE 802.11 specifies two authentication algorithms. hostapd can be
+# configured to allow both of these or only one. Open system authentication
+# should be used with IEEE 802.1X.
+# Bit fields of allowed authentication algorithms:
+# bit 0 = Open System Authentication
+# bit 1 = Shared Key Authentication (requires WEP)
+auth_algs=1
+
+# Send empty SSID in beacons and ignore probe request frames that do not
+# specify full SSID, i.e., require stations to know SSID.
+# default: disabled (0)
+# 1 = send empty (length=0) SSID in beacon and ignore probe request for
+# broadcast SSID
+# 2 = clear SSID (ASCII 0), but keep the original length (this may be required
+# with some clients that do not support empty SSID) and ignore probe
+# requests for broadcast SSID
+ignore_broadcast_ssid=0
+
+# Additional vendor specfic elements for Beacon and Probe Response frames
+# This parameter can be used to add additional vendor specific element(s) into
+# the end of the Beacon and Probe Response frames. The format for these
+# element(s) is a hexdump of the raw information elements (id+len+payload for
+# one or more elements)
+#vendor_elements=dd0411223301
+
+# TX queue parameters (EDCF / bursting)
+# tx_queue_<queue name>_<param>
+# queues: data0, data1, data2, data3, after_beacon, beacon
+# (data0 is the highest priority queue)
+# parameters:
+# aifs: AIFS (default 2)
+# cwmin: cwMin (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023)
+# cwmax: cwMax (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023); cwMax >= cwMin
+# burst: maximum length (in milliseconds with precision of up to 0.1 ms) for
+# bursting
+#
+# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
+# These parameters are used by the access point when transmitting frames
+# to the clients.
+#
+# Low priority / AC_BK = background
+#tx_queue_data3_aifs=7
+#tx_queue_data3_cwmin=15
+#tx_queue_data3_cwmax=1023
+#tx_queue_data3_burst=0
+# Note: for IEEE 802.11b mode: cWmin=31 cWmax=1023 burst=0
+#
+# Normal priority / AC_BE = best effort
+#tx_queue_data2_aifs=3
+#tx_queue_data2_cwmin=15
+#tx_queue_data2_cwmax=63
+#tx_queue_data2_burst=0
+# Note: for IEEE 802.11b mode: cWmin=31 cWmax=127 burst=0
+#
+# High priority / AC_VI = video
+#tx_queue_data1_aifs=1
+#tx_queue_data1_cwmin=7
+#tx_queue_data1_cwmax=15
+#tx_queue_data1_burst=3.0
+# Note: for IEEE 802.11b mode: cWmin=15 cWmax=31 burst=6.0
+#
+# Highest priority / AC_VO = voice
+#tx_queue_data0_aifs=1
+#tx_queue_data0_cwmin=3
+#tx_queue_data0_cwmax=7
+#tx_queue_data0_burst=1.5
+# Note: for IEEE 802.11b mode: cWmin=7 cWmax=15 burst=3.3
+
+# 802.1D Tag (= UP) to AC mappings
+# WMM specifies following mapping of data frames to different ACs. This mapping
+# can be configured using Linux QoS/tc and sch_pktpri.o module.
+# 802.1D Tag 802.1D Designation Access Category WMM Designation
+# 1 BK AC_BK Background
+# 2 - AC_BK Background
+# 0 BE AC_BE Best Effort
+# 3 EE AC_BE Best Effort
+# 4 CL AC_VI Video
+# 5 VI AC_VI Video
+# 6 VO AC_VO Voice
+# 7 NC AC_VO Voice
+# Data frames with no priority information: AC_BE
+# Management frames: AC_VO
+# PS-Poll frames: AC_BE
+
+# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
+# for 802.11a or 802.11g networks
+# These parameters are sent to WMM clients when they associate.
+# The parameters will be used by WMM clients for frames transmitted to the
+# access point.
+#
+# note - txop_limit is in units of 32microseconds
+# note - acm is admission control mandatory flag. 0 = admission control not
+# required, 1 = mandatory
+# note - here cwMin and cmMax are in exponent form. the actual cw value used
+# will be (2^n)-1 where n is the value given here
+#
+wmm_enabled=1
+#
+# WMM-PS Unscheduled Automatic Power Save Delivery [U-APSD]
+# Enable this flag if U-APSD supported outside hostapd (eg., Firmware/driver)
+#uapsd_advertisement_enabled=1
+#
+# Low priority / AC_BK = background
+wmm_ac_bk_cwmin=4
+wmm_ac_bk_cwmax=10
+wmm_ac_bk_aifs=7
+wmm_ac_bk_txop_limit=0
+wmm_ac_bk_acm=0
+# Note: for IEEE 802.11b mode: cWmin=5 cWmax=10
+#
+# Normal priority / AC_BE = best effort
+wmm_ac_be_aifs=3
+wmm_ac_be_cwmin=4
+wmm_ac_be_cwmax=10
+wmm_ac_be_txop_limit=0
+wmm_ac_be_acm=0
+# Note: for IEEE 802.11b mode: cWmin=5 cWmax=7
+#
+# High priority / AC_VI = video
+wmm_ac_vi_aifs=2
+wmm_ac_vi_cwmin=3
+wmm_ac_vi_cwmax=4
+wmm_ac_vi_txop_limit=94
+wmm_ac_vi_acm=0
+# Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188
+#
+# Highest priority / AC_VO = voice
+wmm_ac_vo_aifs=2
+wmm_ac_vo_cwmin=2
+wmm_ac_vo_cwmax=3
+wmm_ac_vo_txop_limit=47
+wmm_ac_vo_acm=0
+# Note: for IEEE 802.11b mode: cWmin=3 cWmax=4 burst=102
+
+# Static WEP key configuration
+#
+# The key number to use when transmitting.
+# It must be between 0 and 3, and the corresponding key must be set.
+# default: not set
+#wep_default_key=0
+# The WEP keys to use.
+# A key may be a quoted string or unquoted hexadecimal digits.
+# The key length should be 5, 13, or 16 characters, or 10, 26, or 32
+# digits, depending on whether 40-bit (64-bit), 104-bit (128-bit), or
+# 128-bit (152-bit) WEP is used.
+# Only the default key must be supplied; the others are optional.
+# default: not set
+#wep_key0=123456789a
+#wep_key1="vwxyz"
+#wep_key2=0102030405060708090a0b0c0d
+#wep_key3=".2.4.6.8.0.23"
+
+# Station inactivity limit
+#
+# If a station does not send anything in ap_max_inactivity seconds, an
+# empty data frame is sent to it in order to verify whether it is
+# still in range. If this frame is not ACKed, the station will be
+# disassociated and then deauthenticated. This feature is used to
+# clear station table of old entries when the STAs move out of the
+# range.
+#
+# The station can associate again with the AP if it is still in range;
+# this inactivity poll is just used as a nicer way of verifying
+# inactivity; i.e., client will not report broken connection because
+# disassociation frame is not sent immediately without first polling
+# the STA with a data frame.
+# default: 300 (i.e., 5 minutes)
+#ap_max_inactivity=300
+#
+# The inactivity polling can be disabled to disconnect stations based on
+# inactivity timeout so that idle stations are more likely to be disconnected
+# even if they are still in range of the AP. This can be done by setting
+# skip_inactivity_poll to 1 (default 0).
+#skip_inactivity_poll=0
+
+# Disassociate stations based on excessive transmission failures or other
+# indications of connection loss. This depends on the driver capabilities and
+# may not be available with all drivers.
+#disassoc_low_ack=1
+
+# Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to
+# remain asleep). Default: 65535 (no limit apart from field size)
+#max_listen_interval=100
+
+# WDS (4-address frame) mode with per-station virtual interfaces
+# (only supported with driver=nl80211)
+# This mode allows associated stations to use 4-address frames to allow layer 2
+# bridging to be used.
+#wds_sta=1
+
+# If bridge parameter is set, the WDS STA interface will be added to the same
+# bridge by default. This can be overridden with the wds_bridge parameter to
+# use a separate bridge.
+#wds_bridge=wds-br0
+
+# Start the AP with beaconing disabled by default.
+#start_disabled=0
+
+# Client isolation can be used to prevent low-level bridging of frames between
+# associated stations in the BSS. By default, this bridging is allowed.
+#ap_isolate=1
+
+# Fixed BSS Load value for testing purposes
+# This field can be used to configure hostapd to add a fixed BSS Load element
+# into Beacon and Probe Response frames for testing purposes. The format is
+# <station count>:<channel utilization>:<available admission capacity>
+#bss_load_test=12:80:20000
+
+##### IEEE 802.11n related configuration ######################################
+
+# ieee80211n: Whether IEEE 802.11n (HT) is enabled
+# 0 = disabled (default)
+# 1 = enabled
+# Note: You will also need to enable WMM for full HT functionality.
+ieee80211n=1
+
+# ht_capab: HT capabilities (list of flags)
+# LDPC coding capability: [LDPC] = supported
+# Supported channel width set: [HT40-] = both 20 MHz and 40 MHz with secondary
+# channel below the primary channel; [HT40+] = both 20 MHz and 40 MHz
+# with secondary channel below the primary channel
+# (20 MHz only if neither is set)
+# Note: There are limits on which channels can be used with HT40- and
+# HT40+. Following table shows the channels that may be available for
+# HT40- and HT40+ use per IEEE 802.11n Annex J:
+# freq HT40- HT40+
+# 2.4 GHz 5-13 1-7 (1-9 in Europe/Japan)
+# 5 GHz 40,48,56,64 36,44,52,60
+# (depending on the location, not all of these channels may be available
+# for use)
+# Please note that 40 MHz channels may switch their primary and secondary
+# channels if needed or creation of 40 MHz channel maybe rejected based
+# on overlapping BSSes. These changes are done automatically when hostapd
+# is setting up the 40 MHz channel.
+# Spatial Multiplexing (SM) Power Save: [SMPS-STATIC] or [SMPS-DYNAMIC]
+# (SMPS disabled if neither is set)
+# HT-greenfield: [GF] (disabled if not set)
+# Short GI for 20 MHz: [SHORT-GI-20] (disabled if not set)
+# Short GI for 40 MHz: [SHORT-GI-40] (disabled if not set)
+# Tx STBC: [TX-STBC] (disabled if not set)
+# Rx STBC: [RX-STBC1] (one spatial stream), [RX-STBC12] (one or two spatial
+# streams), or [RX-STBC123] (one, two, or three spatial streams); Rx STBC
+# disabled if none of these set
+# HT-delayed Block Ack: [DELAYED-BA] (disabled if not set)
+# Maximum A-MSDU length: [MAX-AMSDU-7935] for 7935 octets (3839 octets if not
+# set)
+# DSSS/CCK Mode in 40 MHz: [DSSS_CCK-40] = allowed (not allowed if not set)
+# PSMP support: [PSMP] (disabled if not set)
+# L-SIG TXOP protection support: [LSIG-TXOP-PROT] (disabled if not set)
+#ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40]
+
+# Require stations to support HT PHY (reject association if they do not)
+#require_ht=1
+
+# If set non-zero, require stations to perform scans of overlapping
+# channels to test for stations which would be affected by 40 MHz traffic.
+# This parameter sets the interval in seconds between these scans. This
+# is useful only for testing that stations properly set the OBSS interval,
+# since the other parameters in the OBSS scan parameters IE are set to 0.
+#obss_interval=0
+
+##### IEEE 802.11ac related configuration #####################################
+
+# ieee80211ac: Whether IEEE 802.11ac (VHT) is enabled
+# 0 = disabled (default)
+# 1 = enabled
+# Note: You will also need to enable WMM for full VHT functionality.
+#ieee80211ac=1
+
+# vht_capab: VHT capabilities (list of flags)
+#
+# vht_max_mpdu_len: [MAX-MPDU-7991] [MAX-MPDU-11454]
+# Indicates maximum MPDU length
+# 0 = 3895 octets (default)
+# 1 = 7991 octets
+# 2 = 11454 octets
+# 3 = reserved
+#
+# supported_chan_width: [VHT160] [VHT160-80PLUS80]
+# Indicates supported Channel widths
+# 0 = 160 MHz & 80+80 channel widths are not supported (default)
+# 1 = 160 MHz channel width is supported
+# 2 = 160 MHz & 80+80 channel widths are supported
+# 3 = reserved
+#
+# Rx LDPC coding capability: [RXLDPC]
+# Indicates support for receiving LDPC coded pkts
+# 0 = Not supported (default)
+# 1 = Supported
+#
+# Short GI for 80 MHz: [SHORT-GI-80]
+# Indicates short GI support for reception of packets transmitted with TXVECTOR
+# params format equal to VHT and CBW = 80Mhz
+# 0 = Not supported (default)
+# 1 = Supported
+#
+# Short GI for 160 MHz: [SHORT-GI-160]
+# Indicates short GI support for reception of packets transmitted with TXVECTOR
+# params format equal to VHT and CBW = 160Mhz
+# 0 = Not supported (default)
+# 1 = Supported
+#
+# Tx STBC: [TX-STBC-2BY1]
+# Indicates support for the transmission of at least 2x1 STBC
+# 0 = Not supported (default)
+# 1 = Supported
+#
+# Rx STBC: [RX-STBC-1] [RX-STBC-12] [RX-STBC-123] [RX-STBC-1234]
+# Indicates support for the reception of PPDUs using STBC
+# 0 = Not supported (default)
+# 1 = support of one spatial stream
+# 2 = support of one and two spatial streams
+# 3 = support of one, two and three spatial streams
+# 4 = support of one, two, three and four spatial streams
+# 5,6,7 = reserved
+#
+# SU Beamformer Capable: [SU-BEAMFORMER]
+# Indicates support for operation as a single user beamformer
+# 0 = Not supported (default)
+# 1 = Supported
+#
+# SU Beamformee Capable: [SU-BEAMFORMEE]
+# Indicates support for operation as a single user beamformee
+# 0 = Not supported (default)
+# 1 = Supported
+#
+# Compressed Steering Number of Beamformer Antennas Supported: [BF-ANTENNA-2]
+# Beamformee's capability indicating the maximum number of beamformer
+# antennas the beamformee can support when sending compressed beamforming
+# feedback
+# If SU beamformer capable, set to maximum value minus 1
+# else reserved (default)
+#
+# Number of Sounding Dimensions: [SOUNDING-DIMENSION-2]
+# Beamformer's capability indicating the maximum value of the NUM_STS parameter
+# in the TXVECTOR of a VHT NDP
+# If SU beamformer capable, set to maximum value minus 1
+# else reserved (default)
+#
+# MU Beamformer Capable: [MU-BEAMFORMER]
+# Indicates support for operation as an MU beamformer
+# 0 = Not supported or sent by Non-AP STA (default)
+# 1 = Supported
+#
+# MU Beamformee Capable: [MU-BEAMFORMEE]
+# Indicates support for operation as an MU beamformee
+# 0 = Not supported or sent by AP (default)
+# 1 = Supported
+#
+# VHT TXOP PS: [VHT-TXOP-PS]
+# Indicates whether or not the AP supports VHT TXOP Power Save Mode
+# or whether or not the STA is in VHT TXOP Power Save mode
+# 0 = VHT AP doesnt support VHT TXOP PS mode (OR) VHT Sta not in VHT TXOP PS
+# mode
+# 1 = VHT AP supports VHT TXOP PS mode (OR) VHT Sta is in VHT TXOP power save
+# mode
+#
+# +HTC-VHT Capable: [HTC-VHT]
+# Indicates whether or not the STA supports receiving a VHT variant HT Control
+# field.
+# 0 = Not supported (default)
+# 1 = supported
+#
+# Maximum A-MPDU Length Exponent: [MAX-A-MPDU-LEN-EXP0]..[MAX-A-MPDU-LEN-EXP7]
+# Indicates the maximum length of A-MPDU pre-EOF padding that the STA can recv
+# This field is an integer in the range of 0 to 7.
+# The length defined by this field is equal to
+# 2 pow(13 + Maximum A-MPDU Length Exponent) -1 octets
+#
+# VHT Link Adaptation Capable: [VHT-LINK-ADAPT2] [VHT-LINK-ADAPT3]
+# Indicates whether or not the STA supports link adaptation using VHT variant
+# HT Control field
+# If +HTC-VHTcapable is 1
+# 0 = (no feedback) if the STA does not provide VHT MFB (default)
+# 1 = reserved
+# 2 = (Unsolicited) if the STA provides only unsolicited VHT MFB
+# 3 = (Both) if the STA can provide VHT MFB in response to VHT MRQ and if the
+# STA provides unsolicited VHT MFB
+# Reserved if +HTC-VHTcapable is 0
+#
+# Rx Antenna Pattern Consistency: [RX-ANTENNA-PATTERN]
+# Indicates the possibility of Rx antenna pattern change
+# 0 = Rx antenna pattern might change during the lifetime of an association
+# 1 = Rx antenna pattern does not change during the lifetime of an association
+#
+# Tx Antenna Pattern Consistency: [TX-ANTENNA-PATTERN]
+# Indicates the possibility of Tx antenna pattern change
+# 0 = Tx antenna pattern might change during the lifetime of an association
+# 1 = Tx antenna pattern does not change during the lifetime of an association
+#vht_capab=[SHORT-GI-80][HTC-VHT]
+#
+# Require stations to support VHT PHY (reject association if they do not)
+#require_vht=1
+
+# 0 = 20 or 40 MHz operating Channel width
+# 1 = 80 MHz channel width
+# 2 = 160 MHz channel width
+# 3 = 80+80 MHz channel width
+#vht_oper_chwidth=1
+#
+# center freq = 5 GHz + (5 * index)
+# So index 42 gives center freq 5.210 GHz
+# which is channel 42 in 5G band
+#
+#vht_oper_centr_freq_seg0_idx=42
+#
+# center freq = 5 GHz + (5 * index)
+# So index 159 gives center freq 5.795 GHz
+# which is channel 159 in 5G band
+#
+#vht_oper_centr_freq_seg1_idx=159
+
+##### IEEE 802.1X-2004 related configuration ##################################
+
+# Require IEEE 802.1X authorization
+#ieee8021x=1
+
+# IEEE 802.1X/EAPOL version
+# hostapd is implemented based on IEEE Std 802.1X-2004 which defines EAPOL
+# version 2. However, there are many client implementations that do not handle
+# the new version number correctly (they seem to drop the frames completely).
+# In order to make hostapd interoperate with these clients, the version number
+# can be set to the older version (1) with this configuration value.
+#eapol_version=2
+
+# Optional displayable message sent with EAP Request-Identity. The first \0
+# in this string will be converted to ASCII-0 (nul). This can be used to
+# separate network info (comma separated list of attribute=value pairs); see,
+# e.g., RFC 4284.
+#eap_message=hello
+#eap_message=hello\0networkid=netw,nasid=foo,portid=0,NAIRealms=example.com
+
+# WEP rekeying (disabled if key lengths are not set or are set to 0)
+# Key lengths for default/broadcast and individual/unicast keys:
+# 5 = 40-bit WEP (also known as 64-bit WEP with 40 secret bits)
+# 13 = 104-bit WEP (also known as 128-bit WEP with 104 secret bits)
+#wep_key_len_broadcast=5
+#wep_key_len_unicast=5
+# Rekeying period in seconds. 0 = do not rekey (i.e., set keys only once)
+#wep_rekey_period=300
+
+# EAPOL-Key index workaround (set bit7) for WinXP Supplicant (needed only if
+# only broadcast keys are used)
+eapol_key_index_workaround=0
+
+# EAP reauthentication period in seconds (default: 3600 seconds; 0 = disable
+# reauthentication).
+#eap_reauth_period=3600
+
+# Use PAE group address (01:80:c2:00:00:03) instead of individual target
+# address when sending EAPOL frames with driver=wired. This is the most common
+# mechanism used in wired authentication, but it also requires that the port
+# is only used by one station.
+#use_pae_group_addr=1
+
+##### Integrated EAP server ###################################################
+
+# Optionally, hostapd can be configured to use an integrated EAP server
+# to process EAP authentication locally without need for an external RADIUS
+# server. This functionality can be used both as a local authentication server
+# for IEEE 802.1X/EAPOL and as a RADIUS server for other devices.
+
+# Use integrated EAP server instead of external RADIUS authentication
+# server. This is also needed if hostapd is configured to act as a RADIUS
+# authentication server.
+eap_server=0
+
+# Path for EAP server user database
+# If SQLite support is included, this can be set to "sqlite:/path/to/sqlite.db"
+# to use SQLite database instead of a text file.
+#eap_user_file=/etc/hostapd.eap_user
+
+# CA certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
+#ca_cert=/etc/hostapd.ca.pem
+
+# Server certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
+#server_cert=/etc/hostapd.server.pem
+
+# Private key matching with the server certificate for EAP-TLS/PEAP/TTLS
+# This may point to the same file as server_cert if both certificate and key
+# are included in a single file. PKCS#12 (PFX) file (.p12/.pfx) can also be
+# used by commenting out server_cert and specifying the PFX file as the
+# private_key.
+#private_key=/etc/hostapd.server.prv
+
+# Passphrase for private key
+#private_key_passwd=secret passphrase
+
+# Server identity
+# EAP methods that provide mechanism for authenticated server identity delivery
+# use this value. If not set, "hostapd" is used as a default.
+#server_id=server.example.com
+
+# Enable CRL verification.
+# Note: hostapd does not yet support CRL downloading based on CDP. Thus, a
+# valid CRL signed by the CA is required to be included in the ca_cert file.
+# This can be done by using PEM format for CA certificate and CRL and
+# concatenating these into one file. Whenever CRL changes, hostapd needs to be
+# restarted to take the new CRL into use.
+# 0 = do not verify CRLs (default)
+# 1 = check the CRL of the user certificate
+# 2 = check all CRLs in the certificate path
+#check_crl=1
+
+# Cached OCSP stapling response (DER encoded)
+# If set, this file is sent as a certificate status response by the EAP server
+# if the EAP peer requests certificate status in the ClientHello message.
+# This cache file can be updated, e.g., by running following command
+# periodically to get an update from the OCSP responder:
+# openssl ocsp \
+# -no_nonce \
+# -CAfile /etc/hostapd.ca.pem \
+# -issuer /etc/hostapd.ca.pem \
+# -cert /etc/hostapd.server.pem \
+# -url http://ocsp.example.com:8888/ \
+# -respout /tmp/ocsp-cache.der
+#ocsp_stapling_response=/tmp/ocsp-cache.der
+
+# dh_file: File path to DH/DSA parameters file (in PEM format)
+# This is an optional configuration file for setting parameters for an
+# ephemeral DH key exchange. In most cases, the default RSA authentication does
+# not use this configuration. However, it is possible setup RSA to use
+# ephemeral DH key exchange. In addition, ciphers with DSA keys always use
+# ephemeral DH keys. This can be used to achieve forward secrecy. If the file
+# is in DSA parameters format, it will be automatically converted into DH
+# params. This parameter is required if anonymous EAP-FAST is used.
+# You can generate DH parameters file with OpenSSL, e.g.,
+# "openssl dhparam -out /etc/hostapd.dh.pem 1024"
+#dh_file=/etc/hostapd.dh.pem
+
+# Fragment size for EAP methods
+#fragment_size=1400
+
+# Finite cyclic group for EAP-pwd. Number maps to group of domain parameters
+# using the IANA repository for IKE (RFC 2409).
+#pwd_group=19
+
+# Configuration data for EAP-SIM database/authentication gateway interface.
+# This is a text string in implementation specific format. The example
+# implementation in eap_sim_db.c uses this as the UNIX domain socket name for
+# the HLR/AuC gateway (e.g., hlr_auc_gw). In this case, the path uses "unix:"
+# prefix. If hostapd is built with SQLite support (CONFIG_SQLITE=y in .config),
+# database file can be described with an optional db=<path> parameter.
+#eap_sim_db=unix:/tmp/hlr_auc_gw.sock
+#eap_sim_db=unix:/tmp/hlr_auc_gw.sock db=/tmp/hostapd.db
+
+# Encryption key for EAP-FAST PAC-Opaque values. This key must be a secret,
+# random value. It is configured as a 16-octet value in hex format. It can be
+# generated, e.g., with the following command:
+# od -tx1 -v -N16 /dev/random | colrm 1 8 | tr -d ' '
+#pac_opaque_encr_key=000102030405060708090a0b0c0d0e0f
+
+# EAP-FAST authority identity (A-ID)
+# A-ID indicates the identity of the authority that issues PACs. The A-ID
+# should be unique across all issuing servers. In theory, this is a variable
+# length field, but due to some existing implementations requiring A-ID to be
+# 16 octets in length, it is strongly recommended to use that length for the
+# field to provid interoperability with deployed peer implementations. This
+# field is configured in hex format.
+#eap_fast_a_id=101112131415161718191a1b1c1d1e1f
+
+# EAP-FAST authority identifier information (A-ID-Info)
+# This is a user-friendly name for the A-ID. For example, the enterprise name
+# and server name in a human-readable format. This field is encoded as UTF-8.
+#eap_fast_a_id_info=test server
+
+# Enable/disable different EAP-FAST provisioning modes:
+#0 = provisioning disabled
+#1 = only anonymous provisioning allowed
+#2 = only authenticated provisioning allowed
+#3 = both provisioning modes allowed (default)
+#eap_fast_prov=3
+
+# EAP-FAST PAC-Key lifetime in seconds (hard limit)
+#pac_key_lifetime=604800
+
+# EAP-FAST PAC-Key refresh time in seconds (soft limit on remaining hard
+# limit). The server will generate a new PAC-Key when this number of seconds
+# (or fewer) of the lifetime remains.
+#pac_key_refresh_time=86400
+
+# EAP-SIM and EAP-AKA protected success/failure indication using AT_RESULT_IND
+# (default: 0 = disabled).
+#eap_sim_aka_result_ind=1
+
+# Trusted Network Connect (TNC)
+# If enabled, TNC validation will be required before the peer is allowed to
+# connect. Note: This is only used with EAP-TTLS and EAP-FAST. If any other
+# EAP method is enabled, the peer will be allowed to connect without TNC.
+#tnc=1
+
+
+##### IEEE 802.11f - Inter-Access Point Protocol (IAPP) #######################
+
+# Interface to be used for IAPP broadcast packets
+#iapp_interface=eth0
+
+
+##### RADIUS client configuration #############################################
+# for IEEE 802.1X with external Authentication Server, IEEE 802.11
+# authentication with external ACL for MAC addresses, and accounting
+
+# The own IP address of the access point (used as NAS-IP-Address)
+own_ip_addr=127.0.0.1
+
+# Optional NAS-Identifier string for RADIUS messages. When used, this should be
+# a unique to the NAS within the scope of the RADIUS server. For example, a
+# fully qualified domain name can be used here.
+# When using IEEE 802.11r, nas_identifier must be set and must be between 1 and
+# 48 octets long.
+#nas_identifier=ap.example.com
+
+# RADIUS authentication server
+#auth_server_addr=127.0.0.1
+#auth_server_port=1812
+#auth_server_shared_secret=secret
+
+# RADIUS accounting server
+#acct_server_addr=127.0.0.1
+#acct_server_port=1813
+#acct_server_shared_secret=secret
+
+# Secondary RADIUS servers; to be used if primary one does not reply to
+# RADIUS packets. These are optional and there can be more than one secondary
+# server listed.
+#auth_server_addr=127.0.0.2
+#auth_server_port=1812
+#auth_server_shared_secret=secret2
+#
+#acct_server_addr=127.0.0.2
+#acct_server_port=1813
+#acct_server_shared_secret=secret2
+
+# Retry interval for trying to return to the primary RADIUS server (in
+# seconds). RADIUS client code will automatically try to use the next server
+# when the current server is not replying to requests. If this interval is set,
+# primary server will be retried after configured amount of time even if the
+# currently used secondary server is still working.
+#radius_retry_primary_interval=600
+
+
+# Interim accounting update interval
+# If this is set (larger than 0) and acct_server is configured, hostapd will
+# send interim accounting updates every N seconds. Note: if set, this overrides
+# possible Acct-Interim-Interval attribute in Access-Accept message. Thus, this
+# value should not be configured in hostapd.conf, if RADIUS server is used to
+# control the interim interval.
+# This value should not be less 600 (10 minutes) and must not be less than
+# 60 (1 minute).
+#radius_acct_interim_interval=600
+
+# Request Chargeable-User-Identity (RFC 4372)
+# This parameter can be used to configure hostapd to request CUI from the
+# RADIUS server by including Chargeable-User-Identity attribute into
+# Access-Request packets.
+#radius_request_cui=1
+
+# Dynamic VLAN mode; allow RADIUS authentication server to decide which VLAN
+# is used for the stations. This information is parsed from following RADIUS
+# attributes based on RFC 3580 and RFC 2868: Tunnel-Type (value 13 = VLAN),
+# Tunnel-Medium-Type (value 6 = IEEE 802), Tunnel-Private-Group-ID (value
+# VLANID as a string). Optionally, the local MAC ACL list (accept_mac_file) can
+# be used to set static client MAC address to VLAN ID mapping.
+# 0 = disabled (default)
+# 1 = option; use default interface if RADIUS server does not include VLAN ID
+# 2 = required; reject authentication if RADIUS server does not include VLAN ID
+#dynamic_vlan=0
+
+# VLAN interface list for dynamic VLAN mode is read from a separate text file.
+# This list is used to map VLAN ID from the RADIUS server to a network
+# interface. Each station is bound to one interface in the same way as with
+# multiple BSSIDs or SSIDs. Each line in this text file is defining a new
+# interface and the line must include VLAN ID and interface name separated by
+# white space (space or tab).
+# If no entries are provided by this file, the station is statically mapped
+# to <bss-iface>.<vlan-id> interfaces.
+#vlan_file=/etc/hostapd.vlan
+
+# Interface where 802.1q tagged packets should appear when a RADIUS server is
+# used to determine which VLAN a station is on. hostapd creates a bridge for
+# each VLAN. Then hostapd adds a VLAN interface (associated with the interface
+# indicated by 'vlan_tagged_interface') and the appropriate wireless interface
+# to the bridge.
+#vlan_tagged_interface=eth0
+
+# Bridge (prefix) to add the wifi and the tagged interface to. This gets the
+# VLAN ID appended. It defaults to brvlan%d if no tagged interface is given
+# and br%s.%d if a tagged interface is given, provided %s = tagged interface
+# and %d = VLAN ID.
+#vlan_bridge=brvlan
+
+# When hostapd creates a VLAN interface on vlan_tagged_interfaces, it needs
+# to know how to name it.
+# 0 = vlan<XXX>, e.g., vlan1
+# 1 = <vlan_tagged_interface>.<XXX>, e.g. eth0.1
+#vlan_naming=0
+
+# Arbitrary RADIUS attributes can be added into Access-Request and
+# Accounting-Request packets by specifying the contents of the attributes with
+# the following configuration parameters. There can be multiple of these to
+# add multiple attributes. These parameters can also be used to override some
+# of the attributes added automatically by hostapd.
+# Format: <attr_id>[:<syntax:value>]
+# attr_id: RADIUS attribute type (e.g., 26 = Vendor-Specific)
+# syntax: s = string (UTF-8), d = integer, x = octet string
+# value: attribute value in format indicated by the syntax
+# If syntax and value parts are omitted, a null value (single 0x00 octet) is
+# used.
+#
+# Additional Access-Request attributes
+# radius_auth_req_attr=<attr_id>[:<syntax:value>]
+# Examples:
+# Operator-Name = "Operator"
+#radius_auth_req_attr=126:s:Operator
+# Service-Type = Framed (2)
+#radius_auth_req_attr=6:d:2
+# Connect-Info = "testing" (this overrides the automatically generated value)
+#radius_auth_req_attr=77:s:testing
+# Same Connect-Info value set as a hexdump
+#radius_auth_req_attr=77:x:74657374696e67
+
+#
+# Additional Accounting-Request attributes
+# radius_acct_req_attr=<attr_id>[:<syntax:value>]
+# Examples:
+# Operator-Name = "Operator"
+#radius_acct_req_attr=126:s:Operator
+
+# Dynamic Authorization Extensions (RFC 5176)
+# This mechanism can be used to allow dynamic changes to user session based on
+# commands from a RADIUS server (or some other disconnect client that has the
+# needed session information). For example, Disconnect message can be used to
+# request an associated station to be disconnected.
+#
+# This is disabled by default. Set radius_das_port to non-zero UDP port
+# number to enable.
+#radius_das_port=3799
+#
+# DAS client (the host that can send Disconnect/CoA requests) and shared secret
+#radius_das_client=192.168.1.123 shared secret here
+#
+# DAS Event-Timestamp time window in seconds
+#radius_das_time_window=300
+#
+# DAS require Event-Timestamp
+#radius_das_require_event_timestamp=1
+
+##### RADIUS authentication server configuration ##############################
+
+# hostapd can be used as a RADIUS authentication server for other hosts. This
+# requires that the integrated EAP server is also enabled and both
+# authentication services are sharing the same configuration.
+
+# File name of the RADIUS clients configuration for the RADIUS server. If this
+# commented out, RADIUS server is disabled.
+#radius_server_clients=/etc/hostapd.radius_clients
+
+# The UDP port number for the RADIUS authentication server
+#radius_server_auth_port=1812
+
+# Use IPv6 with RADIUS server (IPv4 will also be supported using IPv6 API)
+#radius_server_ipv6=1
+
+
+##### WPA/IEEE 802.11i configuration ##########################################
+
+# Enable WPA. Setting this variable configures the AP to require WPA (either
+# WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either
+# wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK.
+# Instead of wpa_psk / wpa_passphrase, wpa_psk_radius might suffice.
+# For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys),
+# RADIUS authentication server must be configured, and WPA-EAP must be included
+# in wpa_key_mgmt.
+# This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0)
+# and/or WPA2 (full IEEE 802.11i/RSN):
+# bit0 = WPA
+# bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled)
+wpa=2
+
+# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit
+# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase
+# (8..63 characters) that will be converted to PSK. This conversion uses SSID
+# so the PSK changes when ASCII passphrase is used and the SSID is changed.
+# wpa_psk (dot11RSNAConfigPSKValue)
+# wpa_passphrase (dot11RSNAConfigPSKPassPhrase)
+#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
+wpa_passphrase=12345678
+
+# Optionally, WPA PSKs can be read from a separate text file (containing list
+# of (PSK,MAC address) pairs. This allows more than one PSK to be configured.
+# Use absolute path name to make sure that the files can be read on SIGHUP
+# configuration reloads.
+#wpa_psk_file=/etc/hostapd.wpa_psk
+
+# Optionally, WPA passphrase can be received from RADIUS authentication server
+# This requires macaddr_acl to be set to 2 (RADIUS)
+# 0 = disabled (default)
+# 1 = optional; use default passphrase/psk if RADIUS server does not include
+# Tunnel-Password
+# 2 = required; reject authentication if RADIUS server does not include
+# Tunnel-Password
+#wpa_psk_radius=0
+
+# Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The
+# entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be
+# added to enable SHA256-based stronger algorithms.
+# (dot11RSNAConfigAuthenticationSuitesTable)
+wpa_key_mgmt=WPA-PSK
+
+# Set of accepted cipher suites (encryption algorithms) for pairwise keys
+# (unicast packets). This is a space separated list of algorithms:
+# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
+# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
+# Group cipher suite (encryption algorithm for broadcast and multicast frames)
+# is automatically selected based on this configuration. If only CCMP is
+# allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise,
+# TKIP will be used as the group cipher.
+# (dot11RSNAConfigPairwiseCiphersTable)
+# Pairwise cipher for WPA (v1) (default: TKIP)
+wpa_pairwise=TKIP CCMP
+# Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value)
+rsn_pairwise=CCMP
+
+# Time interval for rekeying GTK (broadcast/multicast encryption keys) in
+# seconds. (dot11RSNAConfigGroupRekeyTime)
+#wpa_group_rekey=600
+
+# Rekey GTK when any STA that possesses the current GTK is leaving the BSS.
+# (dot11RSNAConfigGroupRekeyStrict)
+#wpa_strict_rekey=1
+
+# Time interval for rekeying GMK (master key used internally to generate GTKs
+# (in seconds).
+#wpa_gmk_rekey=86400
+
+# Maximum lifetime for PTK in seconds. This can be used to enforce rekeying of
+# PTK to mitigate some attacks against TKIP deficiencies.
+#wpa_ptk_rekey=600
+
+# Enable IEEE 802.11i/RSN/WPA2 pre-authentication. This is used to speed up
+# roaming be pre-authenticating IEEE 802.1X/EAP part of the full RSN
+# authentication and key handshake before actually associating with a new AP.
+# (dot11RSNAPreauthenticationEnabled)
+#rsn_preauth=1
+#
+# Space separated list of interfaces from which pre-authentication frames are
+# accepted (e.g., 'eth0' or 'eth0 wlan0wds0'. This list should include all
+# interface that are used for connections to other APs. This could include
+# wired interfaces and WDS links. The normal wireless data interface towards
+# associated stations (e.g., wlan0) should not be added, since
+# pre-authentication is only used with APs other than the currently associated
+# one.
+#rsn_preauth_interfaces=eth0
+
+# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e) is
+# allowed. This is only used with RSN/WPA2.
+# 0 = disabled (default)
+# 1 = enabled
+#peerkey=1
+
+# ieee80211w: Whether management frame protection (MFP) is enabled
+# 0 = disabled (default)
+# 1 = optional
+# 2 = required
+#ieee80211w=0
+
+# Association SA Query maximum timeout (in TU = 1.024 ms; for MFP)
+# (maximum time to wait for a SA Query response)
+# dot11AssociationSAQueryMaximumTimeout, 1...4294967295
+#assoc_sa_query_max_timeout=1000
+
+# Association SA Query retry timeout (in TU = 1.024 ms; for MFP)
+# (time between two subsequent SA Query requests)
+# dot11AssociationSAQueryRetryTimeout, 1...4294967295
+#assoc_sa_query_retry_timeout=201
+
+# disable_pmksa_caching: Disable PMKSA caching
+# This parameter can be used to disable caching of PMKSA created through EAP
+# authentication. RSN preauthentication may still end up using PMKSA caching if
+# it is enabled (rsn_preauth=1).
+# 0 = PMKSA caching enabled (default)
+# 1 = PMKSA caching disabled
+#disable_pmksa_caching=0
+
+# okc: Opportunistic Key Caching (aka Proactive Key Caching)
+# Allow PMK cache to be shared opportunistically among configured interfaces
+# and BSSes (i.e., all configurations within a single hostapd process).
+# 0 = disabled (default)
+# 1 = enabled
+#okc=1
+
+# SAE threshold for anti-clogging mechanism (dot11RSNASAEAntiCloggingThreshold)
+# This parameter defines how many open SAE instances can be in progress at the
+# same time before the anti-clogging mechanism is taken into use.
+#sae_anti_clogging_threshold=5
+
+# Enabled SAE finite cyclic groups
+# SAE implementation are required to support group 19 (ECC group defined over a
+# 256-bit prime order field). All groups that are supported by the
+# implementation are enabled by default. This configuration parameter can be
+# used to specify a limited set of allowed groups. The group values are listed
+# in the IANA registry:
+# http://www.iana.org/assignments/ipsec-registry/ipsec-registry.xml#ipsec-registry-9
+#sae_groups=19 20 21 25 26
+
+##### IEEE 802.11r configuration ##############################################
+
+# Mobility Domain identifier (dot11FTMobilityDomainID, MDID)
+# MDID is used to indicate a group of APs (within an ESS, i.e., sharing the
+# same SSID) between which a STA can use Fast BSS Transition.
+# 2-octet identifier as a hex string.
+#mobility_domain=a1b2
+
+# PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID)
+# 1 to 48 octet identifier.
+# This is configured with nas_identifier (see RADIUS client section above).
+
+# Default lifetime of the PMK-RO in minutes; range 1..65535
+# (dot11FTR0KeyLifetime)
+#r0_key_lifetime=10000
+
+# PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID)
+# 6-octet identifier as a hex string.
+#r1_key_holder=000102030405
+
+# Reassociation deadline in time units (TUs / 1.024 ms; range 1000..65535)
+# (dot11FTReassociationDeadline)
+#reassociation_deadline=1000
+
+# List of R0KHs in the same Mobility Domain
+# format: <MAC address> <NAS Identifier> <128-bit key as hex string>
+# This list is used to map R0KH-ID (NAS Identifier) to a destination MAC
+# address when requesting PMK-R1 key from the R0KH that the STA used during the
+# Initial Mobility Domain Association.
+#r0kh=02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f
+#r0kh=02:01:02:03:04:06 r0kh-2.example.com 00112233445566778899aabbccddeeff
+# And so on.. One line per R0KH.
+
+# List of R1KHs in the same Mobility Domain
+# format: <MAC address> <R1KH-ID> <128-bit key as hex string>
+# This list is used to map R1KH-ID to a destination MAC address when sending
+# PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD
+# that can request PMK-R1 keys.
+#r1kh=02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f
+#r1kh=02:01:02:03:04:06 02:11:22:33:44:66 00112233445566778899aabbccddeeff
+# And so on.. One line per R1KH.
+
+# Whether PMK-R1 push is enabled at R0KH
+# 0 = do not push PMK-R1 to all configured R1KHs (default)
+# 1 = push PMK-R1 to all configured R1KHs whenever a new PMK-R0 is derived
+#pmk_r1_push=1
+
+##### Neighbor table ##########################################################
+# Maximum number of entries kept in AP table (either for neigbor table or for
+# detecting Overlapping Legacy BSS Condition). The oldest entry will be
+# removed when adding a new entry that would make the list grow over this
+# limit. Note! WFA certification for IEEE 802.11g requires that OLBC is
+# enabled, so this field should not be set to 0 when using IEEE 802.11g.
+# default: 255
+#ap_table_max_size=255
+
+# Number of seconds of no frames received after which entries may be deleted
+# from the AP table. Since passive scanning is not usually performed frequently
+# this should not be set to very small value. In addition, there is no
+# guarantee that every scan cycle will receive beacon frames from the
+# neighboring APs.
+# default: 60
+#ap_table_expiration_time=3600
+
+
+##### Wi-Fi Protected Setup (WPS) #############################################
+
+# WPS state
+# 0 = WPS disabled (default)
+# 1 = WPS enabled, not configured
+# 2 = WPS enabled, configured
+#wps_state=2
+
+# Whether to manage this interface independently from other WPS interfaces
+# By default, a single hostapd process applies WPS operations to all configured
+# interfaces. This parameter can be used to disable that behavior for a subset
+# of interfaces. If this is set to non-zero for an interface, WPS commands
+# issued on that interface do not apply to other interfaces and WPS operations
+# performed on other interfaces do not affect this interface.
+#wps_independent=0
+
+# AP can be configured into a locked state where new WPS Registrar are not
+# accepted, but previously authorized Registrars (including the internal one)
+# can continue to add new Enrollees.
+#ap_setup_locked=1
+
+# Universally Unique IDentifier (UUID; see RFC 4122) of the device
+# This value is used as the UUID for the internal WPS Registrar. If the AP
+# is also using UPnP, this value should be set to the device's UPnP UUID.
+# If not configured, UUID will be generated based on the local MAC address.
+#uuid=12345678-9abc-def0-1234-56789abcdef0
+
+# Note: If wpa_psk_file is set, WPS is used to generate random, per-device PSKs
+# that will be appended to the wpa_psk_file. If wpa_psk_file is not set, the
+# default PSK (wpa_psk/wpa_passphrase) will be delivered to Enrollees. Use of
+# per-device PSKs is recommended as the more secure option (i.e., make sure to
+# set wpa_psk_file when using WPS with WPA-PSK).
+
+# When an Enrollee requests access to the network with PIN method, the Enrollee
+# PIN will need to be entered for the Registrar. PIN request notifications are
+# sent to hostapd ctrl_iface monitor. In addition, they can be written to a
+# text file that could be used, e.g., to populate the AP administration UI with
+# pending PIN requests. If the following variable is set, the PIN requests will
+# be written to the configured file.
+#wps_pin_requests=/var/run/hostapd_wps_pin_requests
+
+# Device Name
+# User-friendly description of device; up to 32 octets encoded in UTF-8
+#device_name=Wireless AP
+
+# Manufacturer
+# The manufacturer of the device (up to 64 ASCII characters)
+#manufacturer=Company
+
+# Model Name
+# Model of the device (up to 32 ASCII characters)
+#model_name=WAP
+
+# Model Number
+# Additional device description (up to 32 ASCII characters)
+#model_number=123
+
+# Serial Number
+# Serial number of the device (up to 32 characters)
+#serial_number=12345
+
+# Primary Device Type
+# Used format: <categ>-<OUI>-<subcateg>
+# categ = Category as an integer value
+# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
+# default WPS OUI
+# subcateg = OUI-specific Sub Category as an integer value
+# Examples:
+# 1-0050F204-1 (Computer / PC)
+# 1-0050F204-2 (Computer / Server)
+# 5-0050F204-1 (Storage / NAS)
+# 6-0050F204-1 (Network Infrastructure / AP)
+#device_type=6-0050F204-1
+
+# OS Version
+# 4-octet operating system version number (hex string)
+#os_version=01020300
+
+# Config Methods
+# List of the supported configuration methods
+# Available methods: usba ethernet label display ext_nfc_token int_nfc_token
+# nfc_interface push_button keypad virtual_display physical_display
+# virtual_push_button physical_push_button
+#config_methods=label virtual_display virtual_push_button keypad
+
+# WPS capability discovery workaround for PBC with Windows 7
+# Windows 7 uses incorrect way of figuring out AP's WPS capabilities by acting
+# as a Registrar and using M1 from the AP. The config methods attribute in that
+# message is supposed to indicate only the configuration method supported by
+# the AP in Enrollee role, i.e., to add an external Registrar. For that case,
+# PBC shall not be used and as such, the PushButton config method is removed
+# from M1 by default. If pbc_in_m1=1 is included in the configuration file,
+# the PushButton config method is left in M1 (if included in config_methods
+# parameter) to allow Windows 7 to use PBC instead of PIN (e.g., from a label
+# in the AP).
+#pbc_in_m1=1
+
+# Static access point PIN for initial configuration and adding Registrars
+# If not set, hostapd will not allow external WPS Registrars to control the
+# access point. The AP PIN can also be set at runtime with hostapd_cli
+# wps_ap_pin command. Use of temporary (enabled by user action) and random
+# AP PIN is much more secure than configuring a static AP PIN here. As such,
+# use of the ap_pin parameter is not recommended if the AP device has means for
+# displaying a random PIN.
+#ap_pin=12345670
+
+# Skip building of automatic WPS credential
+# This can be used to allow the automatically generated Credential attribute to
+# be replaced with pre-configured Credential(s).
+#skip_cred_build=1
+
+# Additional Credential attribute(s)
+# This option can be used to add pre-configured Credential attributes into M8
+# message when acting as a Registrar. If skip_cred_build=1, this data will also
+# be able to override the Credential attribute that would have otherwise been
+# automatically generated based on network configuration. This configuration
+# option points to an external file that much contain the WPS Credential
+# attribute(s) as binary data.
+#extra_cred=hostapd.cred
+
+# Credential processing
+# 0 = process received credentials internally (default)
+# 1 = do not process received credentials; just pass them over ctrl_iface to
+# external program(s)
+# 2 = process received credentials internally and pass them over ctrl_iface
+# to external program(s)
+# Note: With wps_cred_processing=1, skip_cred_build should be set to 1 and
+# extra_cred be used to provide the Credential data for Enrollees.
+#
+# wps_cred_processing=1 will disabled automatic updates of hostapd.conf file
+# both for Credential processing and for marking AP Setup Locked based on
+# validation failures of AP PIN. An external program is responsible on updating
+# the configuration appropriately in this case.
+#wps_cred_processing=0
+
+# AP Settings Attributes for M7
+# By default, hostapd generates the AP Settings Attributes for M7 based on the
+# current configuration. It is possible to override this by providing a file
+# with pre-configured attributes. This is similar to extra_cred file format,
+# but the AP Settings attributes are not encapsulated in a Credential
+# attribute.
+#ap_settings=hostapd.ap_settings
+
+# WPS UPnP interface
+# If set, support for external Registrars is enabled.
+#upnp_iface=br0
+
+# Friendly Name (required for UPnP)
+# Short description for end use. Should be less than 64 characters.
+#friendly_name=WPS Access Point
+
+# Manufacturer URL (optional for UPnP)
+#manufacturer_url=http://www.example.com/
+
+# Model Description (recommended for UPnP)
+# Long description for end user. Should be less than 128 characters.
+#model_description=Wireless Access Point
+
+# Model URL (optional for UPnP)
+#model_url=http://www.example.com/model/
+
+# Universal Product Code (optional for UPnP)
+# 12-digit, all-numeric code that identifies the consumer package.
+#upc=123456789012
+
+# WPS RF Bands (a = 5G, b = 2.4G, g = 2.4G, ag = dual band)
+# This value should be set according to RF band(s) supported by the AP if
+# hw_mode is not set. For dual band dual concurrent devices, this needs to be
+# set to ag to allow both RF bands to be advertized.
+#wps_rf_bands=ag
+
+# NFC password token for WPS
+# These parameters can be used to configure a fixed NFC password token for the
+# AP. This can be generated, e.g., with nfc_pw_token from wpa_supplicant. When
+# these parameters are used, the AP is assumed to be deployed with a NFC tag
+# that includes the matching NFC password token (e.g., written based on the
+# NDEF record from nfc_pw_token).
+#
+#wps_nfc_dev_pw_id: Device Password ID (16..65535)
+#wps_nfc_dh_pubkey: Hexdump of DH Public Key
+#wps_nfc_dh_privkey: Hexdump of DH Private Key
+#wps_nfc_dev_pw: Hexdump of Device Password
+
+##### Wi-Fi Direct (P2P) ######################################################
+
+# Enable P2P Device management
+#manage_p2p=1
+
+# Allow cross connection
+#allow_cross_connection=1
+
+#### TDLS (IEEE 802.11z-2010) #################################################
+
+# Prohibit use of TDLS in this BSS
+#tdls_prohibit=1
+
+# Prohibit use of TDLS Channel Switching in this BSS
+#tdls_prohibit_chan_switch=1
+
+##### IEEE 802.11v-2011 #######################################################
+
+# Time advertisement
+# 0 = disabled (default)
+# 2 = UTC time at which the TSF timer is 0
+#time_advertisement=2
+
+# Local time zone as specified in 8.3 of IEEE Std 1003.1-2004:
+# stdoffset[dst[offset][,start[/time],end[/time]]]
+#time_zone=EST5
+
+# WNM-Sleep Mode (extended sleep mode for stations)
+# 0 = disabled (default)
+# 1 = enabled (allow stations to use WNM-Sleep Mode)
+#wnm_sleep_mode=1
+
+# BSS Transition Management
+# 0 = disabled (default)
+# 1 = enabled
+#bss_transition=1
+
+##### IEEE 802.11u-2011 #######################################################
+
+# Enable Interworking service
+#interworking=1
+
+# Access Network Type
+# 0 = Private network
+# 1 = Private network with guest access
+# 2 = Chargeable public network
+# 3 = Free public network
+# 4 = Personal device network
+# 5 = Emergency services only network
+# 14 = Test or experimental
+# 15 = Wildcard
+#access_network_type=0
+
+# Whether the network provides connectivity to the Internet
+# 0 = Unspecified
+# 1 = Network provides connectivity to the Internet
+#internet=1
+
+# Additional Step Required for Access
+# Note: This is only used with open network, i.e., ASRA shall ne set to 0 if
+# RSN is used.
+#asra=0
+
+# Emergency services reachable
+#esr=0
+
+# Unauthenticated emergency service accessible
+#uesa=0
+
+# Venue Info (optional)
+# The available values are defined in IEEE Std 802.11u-2011, 7.3.1.34.
+# Example values (group,type):
+# 0,0 = Unspecified
+# 1,7 = Convention Center
+# 1,13 = Coffee Shop
+# 2,0 = Unspecified Business
+# 7,1 Private Residence
+#venue_group=7
+#venue_type=1
+
+# Homogeneous ESS identifier (optional; dot11HESSID)
+# If set, this shall be identifical to one of the BSSIDs in the homogeneous
+# ESS and this shall be set to the same value across all BSSs in homogeneous
+# ESS.
+#hessid=02:03:04:05:06:07
+
+# Roaming Consortium List
+# Arbitrary number of Roaming Consortium OIs can be configured with each line
+# adding a new OI to the list. The first three entries are available through
+# Beacon and Probe Response frames. Any additional entry will be available only
+# through ANQP queries. Each OI is between 3 and 15 octets and is configured as
+# a hexstring.
+#roaming_consortium=021122
+#roaming_consortium=2233445566
+
+# Venue Name information
+# This parameter can be used to configure one or more Venue Name Duples for
+# Venue Name ANQP information. Each entry has a two or three character language
+# code (ISO-639) separated by colon from the venue name string.
+# Note that venue_group and venue_type have to be set for Venue Name
+# information to be complete.
+#venue_name=eng:Example venue
+#venue_name=fin:Esimerkkipaikka
+# Alternative format for language:value strings:
+# (double quoted string, printf-escaped string)
+#venue_name=P"eng:Example\nvenue"
+
+# Network Authentication Type
+# This parameter indicates what type of network authentication is used in the
+# network.
+# format: <network auth type indicator (1-octet hex str)> [redirect URL]
+# Network Authentication Type Indicator values:
+# 00 = Acceptance of terms and conditions
+# 01 = On-line enrollment supported
+# 02 = http/https redirection
+# 03 = DNS redirection
+#network_auth_type=00
+#network_auth_type=02http://www.example.com/redirect/me/here/
+
+# IP Address Type Availability
+# format: <1-octet encoded value as hex str>
+# (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3)
+# ipv4_type:
+# 0 = Address type not available
+# 1 = Public IPv4 address available
+# 2 = Port-restricted IPv4 address available
+# 3 = Single NATed private IPv4 address available
+# 4 = Double NATed private IPv4 address available
+# 5 = Port-restricted IPv4 address and single NATed IPv4 address available
+# 6 = Port-restricted IPv4 address and double NATed IPv4 address available
+# 7 = Availability of the address type is not known
+# ipv6_type:
+# 0 = Address type not available
+# 1 = Address type available
+# 2 = Availability of the address type not known
+#ipaddr_type_availability=14
+
+# Domain Name
+# format: <variable-octet str>[,<variable-octet str>]
+#domain_name=example.com,another.example.com,yet-another.example.com
+
+# 3GPP Cellular Network information
+# format: <MCC1,MNC1>[;<MCC2,MNC2>][;...]
+#anqp_3gpp_cell_net=244,91;310,026;234,56
+
+# NAI Realm information
+# One or more realm can be advertised. Each nai_realm line adds a new realm to
+# the set. These parameters provide information for stations using Interworking
+# network selection to allow automatic connection to a network based on
+# credentials.
+# format: <encoding>,<NAI Realm(s)>[,<EAP Method 1>][,<EAP Method 2>][,...]
+# encoding:
+# 0 = Realm formatted in accordance with IETF RFC 4282
+# 1 = UTF-8 formatted character string that is not formatted in
+# accordance with IETF RFC 4282
+# NAI Realm(s): Semi-colon delimited NAI Realm(s)
+# EAP Method: <EAP Method>[:<[AuthParam1:Val1]>][<[AuthParam2:Val2]>][...]
+# AuthParam (Table 8-188 in IEEE Std 802.11-2012):
+# ID 2 = Non-EAP Inner Authentication Type
+# 1 = PAP, 2 = CHAP, 3 = MSCHAP, 4 = MSCHAPV2
+# ID 3 = Inner authentication EAP Method Type
+# ID 5 = Credential Type
+# 1 = SIM, 2 = USIM, 3 = NFC Secure Element, 4 = Hardware Token,
+# 5 = Softoken, 6 = Certificate, 7 = username/password, 9 = Anonymous,
+# 10 = Vendor Specific
+#nai_realm=0,example.com;example.net
+# EAP methods EAP-TLS with certificate and EAP-TTLS/MSCHAPv2 with
+# username/password
+#nai_realm=0,example.org,13[5:6],21[2:4][5:7]
+
+# QoS Map Set configuration
+#
+# Comma delimited QoS Map Set in decimal values
+# (see IEEE Std 802.11-2012, 8.4.2.97)
+#
+# format:
+# [<DSCP Exceptions[DSCP,UP]>,]<UP 0 range[low,high]>,...<UP 7 range[low,high]>
+#
+# There can be up to 21 optional DSCP Exceptions which are pairs of DSCP Value
+# (0..63 or 255) and User Priority (0..7). This is followed by eight DSCP Range
+# descriptions with DSCP Low Value and DSCP High Value pairs (0..63 or 255) for
+# each UP starting from 0. If both low and high value are set to 255, the
+# corresponding UP is not used.
+#
+# default: not set
+#qos_map_set=53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,255
+
+##### Hotspot 2.0 #############################################################
+
+# Enable Hotspot 2.0 support
+#hs20=1
+
+# Disable Downstream Group-Addressed Forwarding (DGAF)
+# This can be used to configure a network where no group-addressed frames are
+# allowed. The AP will not forward any group-address frames to the stations and
+# random GTKs are issued for each station to prevent associated stations from
+# forging such frames to other stations in the BSS.
+#disable_dgaf=1
+
+# Operator Friendly Name
+# This parameter can be used to configure one or more Operator Friendly Name
+# Duples. Each entry has a two or three character language code (ISO-639)
+# separated by colon from the operator friendly name string.
+#hs20_oper_friendly_name=eng:Example operator
+#hs20_oper_friendly_name=fin:Esimerkkioperaattori
+
+# Connection Capability
+# This can be used to advertise what type of IP traffic can be sent through the
+# hotspot (e.g., due to firewall allowing/blocking protocols/ports).
+# format: <IP Protocol>:<Port Number>:<Status>
+# IP Protocol: 1 = ICMP, 6 = TCP, 17 = UDP
+# Port Number: 0..65535
+# Status: 0 = Closed, 1 = Open, 2 = Unknown
+# Each hs20_conn_capab line is added to the list of advertised tuples.
+#hs20_conn_capab=1:0:2
+#hs20_conn_capab=6:22:1
+#hs20_conn_capab=17:5060:0
+
+# WAN Metrics
+# format: <WAN Info>:<DL Speed>:<UL Speed>:<DL Load>:<UL Load>:<LMD>
+# WAN Info: B0-B1: Link Status, B2: Symmetric Link, B3: At Capabity
+# (encoded as two hex digits)
+# Link Status: 1 = Link up, 2 = Link down, 3 = Link in test state
+# Downlink Speed: Estimate of WAN backhaul link current downlink speed in kbps;
+# 1..4294967295; 0 = unknown
+# Uplink Speed: Estimate of WAN backhaul link current uplink speed in kbps
+# 1..4294967295; 0 = unknown
+# Downlink Load: Current load of downlink WAN connection (scaled to 255 = 100%)
+# Uplink Load: Current load of uplink WAN connection (scaled to 255 = 100%)
+# Load Measurement Duration: Duration for measuring downlink/uplink load in
+# tenths of a second (1..65535); 0 if load cannot be determined
+#hs20_wan_metrics=01:8000:1000:80:240:3000
+
+# Operating Class Indication
+# List of operating classes the BSSes in this ESS use. The Global operating
+# classes in Table E-4 of IEEE Std 802.11-2012 Annex E define the values that
+# can be used in this.
+# format: hexdump of operating class octets
+# for example, operating classes 81 (2.4 GHz channels 1-13) and 115 (5 GHz
+# channels 36-48):
+#hs20_operating_class=5173
+
+##### TESTING OPTIONS #########################################################
+#
+# The options in this section are only available when the build configuration
+# option CONFIG_TESTING_OPTIONS is set while compiling hostapd. They allow
+# testing some scenarios that are otherwise difficult to reproduce.
+#
+# Ignore probe requests sent to hostapd with the given probability, must be a
+# floating point number in the range [0, 1).
+#ignore_probe_probability=0.0
+#
+# Ignore authentication frames with the given probability
+#ignore_auth_probability=0.0
+#
+# Ignore association requests with the given probability
+#ignore_assoc_probability=0.0
+#
+# Ignore reassociation requests with the given probability
+#ignore_reassoc_probability=0.0
+#
+# Corrupt Key MIC in GTK rekey EAPOL-Key frames with the given probability
+#corrupt_gtk_rekey_mic_probability=0.0
+
+##### Multiple BSSID support ##################################################
+#
+# Above configuration is using the default interface (wlan#, or multi-SSID VLAN
+# interfaces). Other BSSIDs can be added by using separator 'bss' with
+# default interface name to be allocated for the data packets of the new BSS.
+#
+# hostapd will generate BSSID mask based on the BSSIDs that are
+# configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is
+# not the case, the MAC address of the radio must be changed before starting
+# hostapd (ifconfig wlan0 hw ether <MAC addr>). If a BSSID is configured for
+# every secondary BSS, this limitation is not applied at hostapd and other
+# masks may be used if the driver supports them (e.g., swap the locally
+# administered bit)
+#
+# BSSIDs are assigned in order to each BSS, unless an explicit BSSID is
+# specified using the 'bssid' parameter.
+# If an explicit BSSID is specified, it must be chosen such that it:
+# - results in a valid MASK that covers it and the dev_addr
+# - is not the same as the MAC address of the radio
+# - is not the same as any other explicitly specified BSSID
+#
+# Please note that hostapd uses some of the values configured for the first BSS
+# as the defaults for the following BSSes. However, it is recommended that all
+# BSSes include explicit configuration of all relevant configuration items.
+#
+#bss=wlan0_0
+#ssid=test2
+# most of the above items can be used here (apart from radio interface specific
+# items, like channel)
+
+#bss=wlan0_1
+#bssid=00:13:10:95:fe:0b
+# ...
diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service
new file mode 100644
index 0000000..df99402
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service
@@ -0,0 +1,23 @@
+[Unit]
+Description=Hostap daemon service
+Requires=sys-subsystem-net-devices-wlan0.device udhcpd-for-hostapd.service
+After=sys-subsystem-net-devices-wlan0.device
+Before=udhcpd-for-hostapd.service
+
+[Service]
+Type=simple
+
+# reload the driver for softap mode
+ExecStartPre=/sbin/modprobe -r bcm4334x
+ExecStartPre=/sbin/modprobe bcm4334x op_mode=2
+
+# start the service hostapd
+ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf
+
+# reload the driver for sta/p2p mode
+ExecStopPost=/sbin/modprobe -r bcm4334x
+ExecStopPost=/sbin/modprobe bcm4334x
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf
new file mode 100644
index 0000000..1015e39
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf
@@ -0,0 +1,107 @@
+# Sample udhcpd configuration file (/etc/udhcpd.conf)
+
+# The start and end of the IP lease block
+
+start 192.168.42.20 #default: 192.168.0.20
+end 192.168.42.254 #default: 192.168.0.254
+
+
+# The interface that udhcpd will use
+
+interface wlan0 #default: eth0
+
+
+# The maximim number of leases (includes addressesd reserved
+# by OFFER's, DECLINE's, and ARP conficts
+
+#max_leases 254 #default: 254
+
+
+# If remaining is true (default), udhcpd will store the time
+# remaining for each lease in the udhcpd leases file. This is
+# for embedded systems that cannot keep time between reboots.
+# If you set remaining to no, the absolute time that the lease
+# expires at will be stored in the dhcpd.leases file.
+
+remaining yes #default: yes
+
+
+# The time period at which udhcpd will write out a dhcpd.leases
+# file. If this is 0, udhcpd will never automatically write a
+# lease file. (specified in seconds)
+
+#auto_time 7200 #default: 7200 (2 hours)
+
+
+# The amount of time that an IP will be reserved (leased) for if a
+# DHCP decline message is received (seconds).
+
+#decline_time 3600 #default: 3600 (1 hour)
+
+
+# The amount of time that an IP will be reserved (leased) for if an
+# ARP conflct occurs. (seconds
+
+#conflict_time 3600 #default: 3600 (1 hour)
+
+
+# How long an offered address is reserved (leased) in seconds
+
+#offer_time 60 #default: 60 (1 minute)
+
+# If a lease to be given is below this value, the full lease time is
+# instead used (seconds).
+
+#min_lease 60 #defult: 60
+
+
+# The location of the leases file
+
+#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases
+
+# The location of the pid file
+pidfile /var/run/udhcpd-wlan0.pid #default: /var/run/udhcpd.pid
+
+# Every time udhcpd writes a leases file, the below script will be called.
+# Useful for writing the lease file to flash every few hours.
+
+#notify_file #default: (no script)
+
+#notify_file dumpleases # <--- useful for debugging
+
+# The following are bootp specific options, setable by udhcpd.
+
+#siaddr 192.168.0.22 #default: 0.0.0.0
+
+#sname zorak #default: (none)
+
+#boot_file /var/nfs_root #default: (none)
+
+# The remainer of options are DHCP options and can be specifed with the
+# keyword 'opt' or 'option'. If an option can take multiple items, such
+# as the dns option, they can be listed on the same line, or multiple
+# lines. The only option with a default is 'lease'.
+
+# Currently supported options, for more info, see options.c
+opt subnet 255.255.255.0
+#opt timezone
+#opt router
+#opt timesvr
+#opt namesvr
+#opt dns
+#opt logsvr
+#opt cookiesvr
+#opt lprsvr
+#opt bootsize
+#opt domain
+#opt swapsvr
+#opt rootpath
+#opt ipttl
+#opt mtu
+#opt broadcast
+#opt wins
+#opt lease
+#opt ntpsrv
+#opt tftp
+#opt bootfile
+
diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service
new file mode 100644
index 0000000..b7ca3ba
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=udhcpd daemon for hostapd
+Requires=hostapd.service
+After=hostapd.service
+StopWhenUnneeded=true
+
+[Service]
+Type=simple
+ExecStartPre=/sbin/ifconfig wlan0 192.168.42.1 up
+ExecStart=/usr/sbin/udhcpd -f -S /etc/hostapd/udhcpd-for-hostapd.conf
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb b/meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb
new file mode 100644
index 0000000..2e348f6
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb
@@ -0,0 +1,51 @@
+HOMEPAGE = "http://hostap.epitest.fi"
+SECTION = "kernel/userland"
+LICENSE = "GPLv2 | BSD"
+LIC_FILES_CHKSUM = "file://README;md5=0854a4da34ac3990770794d771fac7fd"
+DEPENDS = "libnl openssl"
+SUMMARY = "User space daemon for extended IEEE 802.11 management"
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "hostapd.service udhcpd-for-hostapd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+SRC_URI = " \
+ http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \
+ file://defconfig \
+ file://hostapd.service \
+ file://udhcpd-for-hostapd.service \
+ file://hostapd.conf-sane \
+ file://udhcpd-for-hostapd.conf \
+"
+
+S = "${WORKDIR}/hostapd-${PV}/hostapd"
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ echo "CFLAGS +=\"-I${STAGING_INCDIR}/libnl3\"" >> ${S}/.config
+}
+
+do_compile() {
+ make
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${S}/hostapd ${D}${sbindir}
+ install -m 0755 ${S}/hostapd_cli ${D}${sbindir}
+
+ install -d ${D}${sysconfdir}/hostapd
+ install -m 0644 ${WORKDIR}/hostapd.conf-sane ${D}${sysconfdir}/hostapd/hostapd.conf
+ install -m 0644 ${WORKDIR}/udhcpd-for-hostapd.conf ${D}${sysconfdir}/hostapd
+
+ if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ # Install hostapd service
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/hostapd.service ${D}${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/udhcpd-for-hostapd.service ${D}${systemd_unitdir}/system
+ fi
+}
+
+SRC_URI[md5sum] = "bb9c50e87c5af6f89f387e63911effac"
+SRC_URI[sha256sum] = "5c7110f55b6092e5277e26edc961eda2def12b94218129d116f5681e34bb2f88"
diff --git a/meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend b/meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend
new file mode 100644
index 0000000..b3c0900
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend
@@ -0,0 +1,2 @@
+PROVIDES = "libpcap"
+PACKAGECONFIG[bluetooth] = "--enable-bluetooth,--disable-bluetooth,bluez5"
diff --git a/meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend b/meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend
new file mode 100644
index 0000000..6fd9ffe
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend
@@ -0,0 +1 @@
+DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ${@base_contains('DISTRO_FEATURES', 'bluetooth','bluez5', '', d)}"
diff --git a/meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket
new file mode 100644
index 0000000..2a1b012
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket
@@ -0,0 +1,13 @@
+[Unit]
+Conflicts=sshd.service
+
+[Socket]
+ExecStartPre=/bin/mkdir -p /var/run/sshd
+ListenStream=22
+# restrict access to wired access for security reasons
+# comment this line to remove restriction
+BindToDevice=usb0
+Accept=yes
+
+[Install]
+WantedBy=sockets.target
diff --git a/meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service
new file mode 100644
index 0000000..e8133e4
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=OpenSSH Key Generation
+
+[Service]
+ExecStart=@BASE_BINDIR@/sh -c "if ! sshd -t &> /dev/null ; then rm /etc/ssh/*_key* ; ssh-keygen -A ; sync ; fi"
+Type=oneshot
+RemainAfterExit=yes
diff --git a/meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend b/meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend
new file mode 100644
index 0000000..1e72f89
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/openssh"
diff --git a/meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb b/meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb
new file mode 100644
index 0000000..320716d
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A /dev/crypto device driver"
+HOMEPAGE = "http://cryptodev-linux.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "http://download.gna.org/cryptodev-linux/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "eade38998313c25fd7934719cdf8a2ea"
+SRC_URI[sha256sum] = "75f1425c8ea1f8cae523905a5a046a35092327a6152800b0b86efc4e56fb3e2f"
+
+do_compile() {
+ :
+}
+
+# Just install cryptodev.h which is the only header file needed to be exported
+do_install() {
+ install -D ${S}/crypto/cryptodev.h ${D}${includedir}/crypto/cryptodev.h
+}
+
+ALLOW_EMPTY_${PN} = "1"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl.inc b/meta-edison-distro/recipes-connectivity/openssl/openssl.inc
new file mode 100644
index 0000000..ee02fb7
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl.inc
@@ -0,0 +1,173 @@
+SUMMARY = "Secure Socket Layer"
+DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools."
+HOMEPAGE = "http://www.openssl.org/"
+BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html"
+SECTION = "libs/network"
+
+# "openssl | SSLeay" dual license
+LICENSE = "openssl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"
+
+DEPENDS = "perl-native-runtime"
+
+SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
+ "
+S = "${WORKDIR}/openssl-${PV}"
+
+PACKAGECONFIG[perl] = ",,,"
+
+AR_append = " r"
+# Avoid binaries being marked as requiring an executable stack since it
+# doesn't(which causes and this causes issues with SELinux
+CFLAG = "${@base_conditional('SITEINFO_ENDIANNESS', 'le', '-DL_ENDIAN', '-DB_ENDIAN', d)} \
+ -DTERMIO ${CFLAGS} -Wall -Wa,--noexecstack"
+
+# -02 does not work on mipsel: ssh hangs when it tries to read /dev/urandom
+CFLAG_mtx-1 := "${@'${CFLAG}'.replace('-O2', '')}"
+CFLAG_mtx-2 := "${@'${CFLAG}'.replace('-O2', '')}"
+
+export DIRS = "crypto ssl apps"
+export EX_LIBS = "-lgcc -ldl"
+export AS = "${CC} -c"
+
+inherit pkgconfig siteinfo multilib_header
+
+PACKAGES =+ "libcrypto libssl ${PN}-misc openssl-conf"
+FILES_libcrypto = "${base_libdir}/libcrypto${SOLIBS}"
+FILES_libssl = "${libdir}/libssl.so.*"
+FILES_${PN} =+ " ${libdir}/ssl/*"
+FILES_${PN}-misc = "${libdir}/ssl/misc ${bindir}/c_rehash"
+RDEPENDS_${PN}-misc = "${@base_contains('PACKAGECONFIG', 'perl', 'perl', '', d)}"
+FILES_${PN}-dev += "${base_libdir}/libcrypto${SOLIBSDEV}"
+
+# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto
+# package RRECOMMENDS on this package. This will enable the configuration
+# file to be installed for both the base openssl package and the libcrypto
+# package since the base openssl package depends on the libcrypto package.
+FILES_openssl-conf = "${libdir}/ssl/openssl.cnf"
+CONFFILES_openssl-conf = "${libdir}/ssl/openssl.cnf"
+RRECOMMENDS_libcrypto += "openssl-conf"
+
+do_configure_prepend_darwin () {
+ sed -i -e '/version-script=openssl\.ld/d' Configure
+}
+
+do_configure () {
+ cd util
+ perl perlpath.pl ${STAGING_BINDIR_NATIVE}
+ cd ..
+ ln -sf apps/openssl.pod crypto/crypto.pod ssl/ssl.pod doc/
+
+ os=${HOST_OS}
+ if [ "x$os" = "xlinux-uclibc" ]; then
+ os=linux
+ elif [ "x$os" = "xlinux-uclibceabi" ]; then
+ os=linux
+ elif [ "x$os" = "xlinux-uclibcspe" ]; then
+ os=linux
+ elif [ "x$os" = "xlinux-gnuspe" ]; then
+ os=linux
+ elif [ "x$os" = "xlinux-gnueabi" ]; then
+ os=linux
+ fi
+ target="$os-${HOST_ARCH}"
+ case $target in
+ linux-arm)
+ target=linux-armv4
+ ;;
+ linux-armeb)
+ target=linux-elf-armeb
+ ;;
+ linux-aarch64*)
+ target=linux-generic64
+ ;;
+ linux-sh3)
+ target=debian-sh3
+ ;;
+ linux-sh4)
+ target=debian-sh4
+ ;;
+ linux-i486)
+ target=debian-i386-i486
+ ;;
+ linux-i586 | linux-viac3)
+ target=debian-i386-i586
+ ;;
+ linux-i686)
+ target=debian-i386-i686/cmov
+ ;;
+ linux-gnux32-x86_64)
+ target=linux-x32
+ ;;
+ linux-gnu64-x86_64)
+ target=linux-x86_64
+ ;;
+ linux-mips)
+ target=debian-mips
+ ;;
+ linux-mipsel)
+ target=debian-mipsel
+ ;;
+ linux-*-mips64)
+ target=linux-mips
+ ;;
+ linux-powerpc)
+ target=linux-ppc
+ ;;
+ linux-powerpc64)
+ target=linux-ppc64
+ ;;
+ linux-supersparc)
+ target=linux-sparcv8
+ ;;
+ linux-sparc)
+ target=linux-sparcv8
+ ;;
+ darwin-i386)
+ target=darwin-i386-cc
+ ;;
+ esac
+ # inject machine-specific flags
+ sed -i -e "s|^\(\"$target\",\s*\"[^:]\+\):\([^:]\+\)|\1:${CFLAG}|g" Configure
+ useprefix=${prefix}
+ if [ "x$useprefix" = "x" ]; then
+ useprefix=/
+ fi
+ perl ./Configure ${EXTRA_OECONF} shared --prefix=$useprefix --openssldir=${libdir}/ssl --libdir=`basename ${libdir}` $target
+}
+
+do_compile () {
+ oe_runmake
+}
+
+do_install () {
+ oe_runmake INSTALL_PREFIX="${D}" MANDIR="${mandir}" install
+
+ oe_libinstall -so libcrypto ${D}${libdir}
+ oe_libinstall -so libssl ${D}${libdir}
+
+ # Moving libcrypto to /lib
+ if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+ mkdir -p ${D}/${base_libdir}/
+ mv ${D}${libdir}/libcrypto* ${D}${base_libdir}/
+ sed -i s#libdir=\$\{exec_prefix\}\/lib#libdir=${base_libdir}# ${D}/${libdir}/pkgconfig/libcrypto.pc
+ fi
+
+ install -d ${D}${includedir}
+ cp --dereference -R include/openssl ${D}${includedir}
+
+ oe_multilib_header openssl/opensslconf.h
+ if [ "${@base_contains('PACKAGECONFIG', 'perl', 'perl', '', d)}" = "perl" ]; then
+ install -m 0755 ${S}/tools/c_rehash ${D}${bindir}
+ sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${bindir}/c_rehash
+ sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl
+ sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/tsget
+ # The c_rehash utility isn't installed by the normal installation process.
+ else
+ rm -f ${D}${bindir}/c_rehash
+ rm -f ${D}${libdir}/ssl/misc/CA.pl ${D}${libdir}/ssl/misc/tsget
+ fi
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch
new file mode 100644
index 0000000..c1f3d08
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+The number of colons are important :)
+
+
+---
+ Configure | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+--- a/Configure
++++ b/Configure
+@@ -403,6 +403,22 @@ my %table=(
+ "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
+ "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
+
++ # Linux on ARM
++"linux-elf-arm","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-elf-armeb","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-gnueabi-arm","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-gnueabi-armeb","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-uclibceabi-arm","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-uclibceabi-armeb","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++
++"linux-avr32","$ENV{'CC'}:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).",
++
++#### Linux on MIPS/MIPS64
++"linux-mips","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-mips64","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -mabi=64 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-mips64el","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -mabi=64 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-mipsel","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++
+ # Android: linux-* but without -DTERMIO and pointers to headers and libs.
+ "android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch
new file mode 100644
index 0000000..ac1b19b
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch
@@ -0,0 +1,45 @@
+Upstream-Status: Backport [debian]
+
+From 83f318d68bbdab1ca898c94576a838cc97df4700 Mon Sep 17 00:00:00 2001
+From: Ludwig Nussel <ludwig.nussel@suse.de>
+Date: Wed, 21 Apr 2010 15:52:10 +0200
+Subject: [PATCH] also create old hash for compatibility
+
+---
+ tools/c_rehash.in | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+Index: openssl-1.0.0d/tools/c_rehash.in
+===================================================================
+--- openssl-1.0.0d.orig/tools/c_rehash.in 2011-04-13 20:41:28.000000000 +0000
++++ openssl-1.0.0d/tools/c_rehash.in 2011-04-13 20:41:28.000000000 +0000
+@@ -86,6 +86,7 @@
+ }
+ }
+ link_hash_cert($fname) if($cert);
++ link_hash_cert_old($fname) if($cert);
+ link_hash_crl($fname) if($crl);
+ }
+ }
+@@ -119,8 +120,9 @@
+
+ sub link_hash_cert {
+ my $fname = $_[0];
++ my $hashopt = $_[1] || '-subject_hash';
+ $fname =~ s/'/'\\''/g;
+- my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in "$fname"`;
++ my ($hash, $fprint) = `"$openssl" x509 $hashopt -fingerprint -noout -in "$fname"`;
+ chomp $hash;
+ chomp $fprint;
+ $fprint =~ s/^.*=//;
+@@ -150,6 +152,10 @@
+ $hashlist{$hash} = $fprint;
+ }
+
++sub link_hash_cert_old {
++ link_hash_cert($_[0], '-subject_hash_old');
++}
++
+ # Same as above except for a CRL. CRL links are of the form <hash>.r<n>
+
+ sub link_hash_crl {
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch
new file mode 100644
index 0000000..aba4d42
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch
@@ -0,0 +1,22 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-0.9.8m/apps/CA.pl.in
+===================================================================
+--- openssl-0.9.8m.orig/apps/CA.pl.in 2006-04-28 00:28:51.000000000 +0000
++++ openssl-0.9.8m/apps/CA.pl.in 2010-02-27 00:36:51.000000000 +0000
+@@ -65,6 +65,7 @@
+ foreach (@ARGV) {
+ if ( /^(-\?|-h|-help)$/ ) {
+ print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
+ exit 0;
+ } elsif (/^-newcert$/) {
+ # create a certificate
+@@ -165,6 +166,7 @@
+ } else {
+ print STDERR "Unknown arg $_\n";
+ print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
+ exit 1;
+ }
+ }
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch
new file mode 100644
index 0000000..8101edf
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch
@@ -0,0 +1,66 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.1/Configure
+===================================================================
+--- openssl-1.0.1.orig/Configure 2012-03-17 15:37:54.000000000 +0000
++++ openssl-1.0.1/Configure 2012-03-17 16:13:49.000000000 +0000
+@@ -105,6 +105,10 @@
+
+ my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED";
+
++# There are no separate CFLAGS/CPPFLAGS/LDFLAGS, set everything in CFLAGS
++my $debian_cflags = `dpkg-buildflags --get CFLAGS` . `dpkg-buildflags --get CPPFLAGS` . `dpkg-buildflags --get LDFLAGS` . "-Wa,--noexecstack -Wall";
++$debian_cflags =~ s/\n/ /g;
++
+ my $strict_warnings = 0;
+
+ my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
+@@ -338,6 +342,48 @@
+ "osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
+ "tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
+
++# Debian GNU/* (various architectures)
++"debian-alpha","gcc:-DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-alpha-ev4","gcc:-DTERMIO ${debian_cflags} -mcpu=ev4::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-alpha-ev5","gcc:-DTERMIO ${debian_cflags} -mcpu=ev5::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-armeb","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-armel","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-armhf","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-amd64", "gcc:-m64 -DL_ENDIAN -DTERMIO ${debian_cflags} -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::",
++"debian-avr32", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags} -fomit-frame-pointer::-D_REENTRANT::-ldl:BN_LLONG_BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-kfreebsd-amd64","gcc:-m64 -DL_ENDIAN -DTERMIOS ${debian_cflags} -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-kfreebsd-i386","gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -march=i486::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-hppa","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-hurd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -mtune=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-ia64","gcc:-DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386-i486","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags} -march=i486::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386-i586","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags} -march=i586::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386-i686/cmov","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags} -march=i686::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-m68k","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-mips", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-mipsel", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-netbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-netbsd-m68k", "gcc:-DB_ENDIAN -DTERMIOS ${debian_cflags}::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-netbsd-sparc", "gcc:-DB_ENDIAN -DTERMIOS ${debian_cflags} -mv8::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-openbsd-alpha","gcc:-DTERMIOS ${debian_cflags}::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-openbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-openbsd-mips","gcc:-DL_ENDIAN ${debian_cflags}::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-powerpc","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-powerpcspe","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-ppc64","gcc:-m64 -DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-s390","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-s390x","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh3", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh4", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh3eb", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh4eb", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-m32r","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc-v8","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags} -mcpu=v8 -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc-v9","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags} -mcpu=v9 -Wa,-Av8plus -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc64","gcc:-m64 -DB_ENDIAN -DTERMIO ${debian_cflags} -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++
+ ####
+ #### Variety of LINUX:-)
+ ####
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch
new file mode 100644
index 0000000..ee0a62c
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.1/Makefile.org
+===================================================================
+--- openssl-1.0.1.orig/Makefile.org 2012-03-17 09:41:07.000000000 +0000
++++ openssl-1.0.1/Makefile.org 2012-03-17 09:41:21.000000000 +0000
+@@ -135,7 +135,7 @@
+
+ BASEADDR=
+
+-DIRS= crypto ssl engines apps test tools
++DIRS= crypto ssl engines apps tools
+ ENGDIRS= ccgost
+ SHLIBDIRS= crypto ssl
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch
new file mode 100644
index 0000000..4085e3b
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.0c/Makefile.org
+===================================================================
+--- openssl-1.0.0c.orig/Makefile.org 2010-12-12 16:11:27.000000000 +0100
++++ openssl-1.0.0c/Makefile.org 2010-12-12 16:11:37.000000000 +0100
+@@ -131,7 +131,7 @@
+
+ MAKEFILE= Makefile
+
+-MANDIR=$(OPENSSLDIR)/man
++MANDIR=/usr/share/man
+ MAN1=1
+ MAN3=3
+ MANSUFFIX=
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch
new file mode 100644
index 0000000..21c1d1a
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.0c/Makefile.org
+===================================================================
+--- openssl-1.0.0c.orig/Makefile.org 2010-12-12 16:11:37.000000000 +0100
++++ openssl-1.0.0c/Makefile.org 2010-12-12 16:13:28.000000000 +0100
+@@ -160,7 +160,8 @@
+ MANDIR=/usr/share/man
+ MAN1=1
+ MAN3=3
+-MANSUFFIX=
++MANSUFFIX=ssl
++MANSECTION=SSL
+ HTMLSUFFIX=html
+ HTMLDIR=$(OPENSSLDIR)/html
+ SHELL=/bin/sh
+@@ -651,7 +652,7 @@
+ echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
+ (cd `$(PERL) util/dirname.pl $$i`; \
+ sh -c "$$pod2man \
+- --section=$$sec --center=OpenSSL \
++ --section=$${sec}$(MANSECTION) --center=OpenSSL \
+ --release=$(VERSION) `basename $$i`") \
+ > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
+ $(PERL) util/extract-names.pl < $$i | \
+@@ -668,7 +669,7 @@
+ echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
+ (cd `$(PERL) util/dirname.pl $$i`; \
+ sh -c "$$pod2man \
+- --section=$$sec --center=OpenSSL \
++ --section=$${sec}$(MANSECTION) --center=OpenSSL \
+ --release=$(VERSION) `basename $$i`") \
+ > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
+ $(PERL) util/extract-names.pl < $$i | \
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch
new file mode 100644
index 0000000..1ccb3b8
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.0c/Makefile.shared
+===================================================================
+--- openssl-1.0.0c.orig/Makefile.shared 2010-08-21 13:36:49.000000000 +0200
++++ openssl-1.0.0c/Makefile.shared 2010-12-12 16:13:36.000000000 +0100
+@@ -153,7 +153,7 @@
+ NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"
+
+-DO_GNU_APP=LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBRPATH)"
++DO_GNU_APP=LDFLAGS="$(CFLAGS)"
+
+ #This is rather special. It's a special target with which one can link
+ #applications without bothering with any features that have anything to
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch
new file mode 100644
index 0000000..cc4408a
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.0c/Makefile.shared
+===================================================================
+--- openssl-1.0.0c.orig/Makefile.shared 2010-12-12 16:13:36.000000000 +0100
++++ openssl-1.0.0c/Makefile.shared 2010-12-12 16:13:44.000000000 +0100
+@@ -151,7 +151,7 @@
+ SHLIB_SUFFIX=; \
+ ALLSYMSFLAGS='-Wl,--whole-archive'; \
+ NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+- SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"
++ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"
+
+ DO_GNU_APP=LDFLAGS="$(CFLAGS)"
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch
new file mode 100644
index 0000000..bfda388
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch
@@ -0,0 +1,177 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.1c/crypto/des/asm/desboth.pl
+===================================================================
+--- openssl-1.0.1c.orig/crypto/des/asm/desboth.pl 2001-10-24 23:20:56.000000000 +0200
++++ openssl-1.0.1c/crypto/des/asm/desboth.pl 2012-07-29 14:15:26.000000000 +0200
+@@ -16,6 +16,11 @@
+
+ &push("edi");
+
++ &call (&label("pic_point0"));
++ &set_label("pic_point0");
++ &blindpop("ebp");
++ &add ("ebp", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point0") . "]");
++
+ &comment("");
+ &comment("Load the data words");
+ &mov($L,&DWP(0,"ebx","",0));
+@@ -47,15 +52,21 @@
+ &mov(&swtmp(2), (DWC(($enc)?"1":"0")));
+ &mov(&swtmp(1), "eax");
+ &mov(&swtmp(0), "ebx");
+- &call("DES_encrypt2");
++ &exch("ebx", "ebp");
++ &call("DES_encrypt2\@PLT");
++ &exch("ebx", "ebp");
+ &mov(&swtmp(2), (DWC(($enc)?"0":"1")));
+ &mov(&swtmp(1), "edi");
+ &mov(&swtmp(0), "ebx");
+- &call("DES_encrypt2");
++ &exch("ebx", "ebp");
++ &call("DES_encrypt2\@PLT");
++ &exch("ebx", "ebp");
+ &mov(&swtmp(2), (DWC(($enc)?"1":"0")));
+ &mov(&swtmp(1), "esi");
+ &mov(&swtmp(0), "ebx");
+- &call("DES_encrypt2");
++ &exch("ebx", "ebp");
++ &call("DES_encrypt2\@PLT");
++ &exch("ebx", "ebp");
+
+ &stack_pop(3);
+ &mov($L,&DWP(0,"ebx","",0));
+Index: openssl-1.0.1c/crypto/perlasm/cbc.pl
+===================================================================
+--- openssl-1.0.1c.orig/crypto/perlasm/cbc.pl 2011-07-13 08:22:46.000000000 +0200
++++ openssl-1.0.1c/crypto/perlasm/cbc.pl 2012-07-29 14:15:26.000000000 +0200
+@@ -122,7 +122,11 @@
+ &mov(&DWP($data_off,"esp","",0), "eax"); # put in array for call
+ &mov(&DWP($data_off+4,"esp","",0), "ebx"); #
+
+- &call($enc_func);
++ &call (&label("pic_point0"));
++ &set_label("pic_point0");
++ &blindpop("ebx");
++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point0") . "]");
++ &call("$enc_func\@PLT");
+
+ &mov("eax", &DWP($data_off,"esp","",0));
+ &mov("ebx", &DWP($data_off+4,"esp","",0));
+@@ -185,7 +189,11 @@
+ &mov(&DWP($data_off,"esp","",0), "eax"); # put in array for call
+ &mov(&DWP($data_off+4,"esp","",0), "ebx"); #
+
+- &call($enc_func);
++ &call (&label("pic_point1"));
++ &set_label("pic_point1");
++ &blindpop("ebx");
++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point1") . "]");
++ &call("$enc_func\@PLT");
+
+ &mov("eax", &DWP($data_off,"esp","",0));
+ &mov("ebx", &DWP($data_off+4,"esp","",0));
+@@ -218,7 +226,11 @@
+ &mov(&DWP($data_off,"esp","",0), "eax"); # put back
+ &mov(&DWP($data_off+4,"esp","",0), "ebx"); #
+
+- &call($dec_func);
++ &call (&label("pic_point2"));
++ &set_label("pic_point2");
++ &blindpop("ebx");
++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point2") . "]");
++ &call("$dec_func\@PLT");
+
+ &mov("eax", &DWP($data_off,"esp","",0)); # get return
+ &mov("ebx", &DWP($data_off+4,"esp","",0)); #
+@@ -261,7 +273,11 @@
+ &mov(&DWP($data_off,"esp","",0), "eax"); # put back
+ &mov(&DWP($data_off+4,"esp","",0), "ebx"); #
+
+- &call($dec_func);
++ &call (&label("pic_point3"));
++ &set_label("pic_point3");
++ &blindpop("ebx");
++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point3") . "]");
++ &call("$dec_func\@PLT");
+
+ &mov("eax", &DWP($data_off,"esp","",0)); # get return
+ &mov("ebx", &DWP($data_off+4,"esp","",0)); #
+Index: openssl-1.0.1c/crypto/perlasm/x86gas.pl
+===================================================================
+--- openssl-1.0.1c.orig/crypto/perlasm/x86gas.pl 2011-12-09 20:16:35.000000000 +0100
++++ openssl-1.0.1c/crypto/perlasm/x86gas.pl 2012-07-29 14:15:26.000000000 +0200
+@@ -161,6 +161,7 @@
+ if ($::macosx) { push (@out,"$tmp,2\n"); }
+ elsif ($::elf) { push (@out,"$tmp,4\n"); }
+ else { push (@out,"$tmp\n"); }
++ if ($::elf) { push (@out,".hidden\tOPENSSL_ia32cap_P\n"); }
+ }
+ push(@out,$initseg) if ($initseg);
+ }
+@@ -218,8 +219,23 @@
+ elsif ($::elf)
+ { $initseg.=<<___;
+ .section .init
++___
++ if ($::pic)
++ { $initseg.=<<___;
++ pushl %ebx
++ call .pic_point0
++.pic_point0:
++ popl %ebx
++ addl \$_GLOBAL_OFFSET_TABLE_+[.-.pic_point0],%ebx
++ call $f\@PLT
++ popl %ebx
++___
++ }
++ else
++ { $initseg.=<<___;
+ call $f
+ ___
++ }
+ }
+ elsif ($::coff)
+ { $initseg.=<<___; # applies to both Cygwin and Mingw
+Index: openssl-1.0.1c/crypto/x86cpuid.pl
+===================================================================
+--- openssl-1.0.1c.orig/crypto/x86cpuid.pl 2012-02-28 15:20:34.000000000 +0100
++++ openssl-1.0.1c/crypto/x86cpuid.pl 2012-07-29 14:15:26.000000000 +0200
+@@ -8,6 +8,8 @@
+
+ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
+
++push(@out, ".hidden OPENSSL_ia32cap_P\n");
++
+ &function_begin("OPENSSL_ia32_cpuid");
+ &xor ("edx","edx");
+ &pushf ();
+@@ -139,9 +141,7 @@
+ &set_label("nocpuid");
+ &function_end("OPENSSL_ia32_cpuid");
+
+-&external_label("OPENSSL_ia32cap_P");
+-
+-&function_begin_B("OPENSSL_rdtsc","EXTRN\t_OPENSSL_ia32cap_P:DWORD");
++&function_begin_B("OPENSSL_rdtsc");
+ &xor ("eax","eax");
+ &xor ("edx","edx");
+ &picmeup("ecx","OPENSSL_ia32cap_P");
+@@ -155,7 +155,7 @@
+ # This works in Ring 0 only [read DJGPP+MS-DOS+privileged DPMI host],
+ # but it's safe to call it on any [supported] 32-bit platform...
+ # Just check for [non-]zero return value...
+-&function_begin_B("OPENSSL_instrument_halt","EXTRN\t_OPENSSL_ia32cap_P:DWORD");
++&function_begin_B("OPENSSL_instrument_halt");
+ &picmeup("ecx","OPENSSL_ia32cap_P");
+ &bt (&DWP(0,"ecx"),4);
+ &jnc (&label("nohalt")); # no TSC
+@@ -222,7 +222,7 @@
+ &ret ();
+ &function_end_B("OPENSSL_far_spin");
+
+-&function_begin_B("OPENSSL_wipe_cpu","EXTRN\t_OPENSSL_ia32cap_P:DWORD");
++&function_begin_B("OPENSSL_wipe_cpu");
+ &xor ("eax","eax");
+ &xor ("edx","edx");
+ &picmeup("ecx","OPENSSL_ia32cap_P");
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch
new file mode 100644
index 0000000..ece8b9b
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch
@@ -0,0 +1,4670 @@
+Upstream-Status: Backport [debian]
+
+Index: openssl-1.0.1d/Configure
+===================================================================
+--- openssl-1.0.1d.orig/Configure 2013-02-06 19:41:43.000000000 +0100
++++ openssl-1.0.1d/Configure 2013-02-06 19:41:43.000000000 +0100
+@@ -1621,6 +1621,8 @@
+ }
+ }
+
++$shared_ldflag .= " -Wl,--version-script=openssl.ld";
++
+ open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
+ unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
+ open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
+Index: openssl-1.0.1d/openssl.ld
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ openssl-1.0.1d/openssl.ld 2013-02-06 19:44:25.000000000 +0100
+@@ -0,0 +1,4620 @@
++OPENSSL_1.0.0 {
++ global:
++ BIO_f_ssl;
++ BIO_new_buffer_ssl_connect;
++ BIO_new_ssl;
++ BIO_new_ssl_connect;
++ BIO_proxy_ssl_copy_session_id;
++ BIO_ssl_copy_session_id;
++ BIO_ssl_shutdown;
++ d2i_SSL_SESSION;
++ DTLSv1_client_method;
++ DTLSv1_method;
++ DTLSv1_server_method;
++ ERR_load_SSL_strings;
++ i2d_SSL_SESSION;
++ kssl_build_principal_2;
++ kssl_cget_tkt;
++ kssl_check_authent;
++ kssl_ctx_free;
++ kssl_ctx_new;
++ kssl_ctx_setkey;
++ kssl_ctx_setprinc;
++ kssl_ctx_setstring;
++ kssl_ctx_show;
++ kssl_err_set;
++ kssl_krb5_free_data_contents;
++ kssl_sget_tkt;
++ kssl_skip_confound;
++ kssl_validate_times;
++ PEM_read_bio_SSL_SESSION;
++ PEM_read_SSL_SESSION;
++ PEM_write_bio_SSL_SESSION;
++ PEM_write_SSL_SESSION;
++ SSL_accept;
++ SSL_add_client_CA;
++ SSL_add_dir_cert_subjects_to_stack;
++ SSL_add_dir_cert_subjs_to_stk;
++ SSL_add_file_cert_subjects_to_stack;
++ SSL_add_file_cert_subjs_to_stk;
++ SSL_alert_desc_string;
++ SSL_alert_desc_string_long;
++ SSL_alert_type_string;
++ SSL_alert_type_string_long;
++ SSL_callback_ctrl;
++ SSL_check_private_key;
++ SSL_CIPHER_description;
++ SSL_CIPHER_get_bits;
++ SSL_CIPHER_get_name;
++ SSL_CIPHER_get_version;
++ SSL_clear;
++ SSL_COMP_add_compression_method;
++ SSL_COMP_get_compression_methods;
++ SSL_COMP_get_compress_methods;
++ SSL_COMP_get_name;
++ SSL_connect;
++ SSL_copy_session_id;
++ SSL_ctrl;
++ SSL_CTX_add_client_CA;
++ SSL_CTX_add_session;
++ SSL_CTX_callback_ctrl;
++ SSL_CTX_check_private_key;
++ SSL_CTX_ctrl;
++ SSL_CTX_flush_sessions;
++ SSL_CTX_free;
++ SSL_CTX_get_cert_store;
++ SSL_CTX_get_client_CA_list;
++ SSL_CTX_get_client_cert_cb;
++ SSL_CTX_get_ex_data;
++ SSL_CTX_get_ex_new_index;
++ SSL_CTX_get_info_callback;
++ SSL_CTX_get_quiet_shutdown;
++ SSL_CTX_get_timeout;
++ SSL_CTX_get_verify_callback;
++ SSL_CTX_get_verify_depth;
++ SSL_CTX_get_verify_mode;
++ SSL_CTX_load_verify_locations;
++ SSL_CTX_new;
++ SSL_CTX_remove_session;
++ SSL_CTX_sess_get_get_cb;
++ SSL_CTX_sess_get_new_cb;
++ SSL_CTX_sess_get_remove_cb;
++ SSL_CTX_sessions;
++ SSL_CTX_sess_set_get_cb;
++ SSL_CTX_sess_set_new_cb;
++ SSL_CTX_sess_set_remove_cb;
++ SSL_CTX_set1_param;
++ SSL_CTX_set_cert_store;
++ SSL_CTX_set_cert_verify_callback;
++ SSL_CTX_set_cert_verify_cb;
++ SSL_CTX_set_cipher_list;
++ SSL_CTX_set_client_CA_list;
++ SSL_CTX_set_client_cert_cb;
++ SSL_CTX_set_client_cert_engine;
++ SSL_CTX_set_cookie_generate_cb;
++ SSL_CTX_set_cookie_verify_cb;
++ SSL_CTX_set_default_passwd_cb;
++ SSL_CTX_set_default_passwd_cb_userdata;
++ SSL_CTX_set_default_verify_paths;
++ SSL_CTX_set_def_passwd_cb_ud;
++ SSL_CTX_set_def_verify_paths;
++ SSL_CTX_set_ex_data;
++ SSL_CTX_set_generate_session_id;
++ SSL_CTX_set_info_callback;
++ SSL_CTX_set_msg_callback;
++ SSL_CTX_set_psk_client_callback;
++ SSL_CTX_set_psk_server_callback;
++ SSL_CTX_set_purpose;
++ SSL_CTX_set_quiet_shutdown;
++ SSL_CTX_set_session_id_context;
++ SSL_CTX_set_ssl_version;
++ SSL_CTX_set_timeout;
++ SSL_CTX_set_tmp_dh_callback;
++ SSL_CTX_set_tmp_ecdh_callback;
++ SSL_CTX_set_tmp_rsa_callback;
++ SSL_CTX_set_trust;
++ SSL_CTX_set_verify;
++ SSL_CTX_set_verify_depth;
++ SSL_CTX_use_cert_chain_file;
++ SSL_CTX_use_certificate;
++ SSL_CTX_use_certificate_ASN1;
++ SSL_CTX_use_certificate_chain_file;
++ SSL_CTX_use_certificate_file;
++ SSL_CTX_use_PrivateKey;
++ SSL_CTX_use_PrivateKey_ASN1;
++ SSL_CTX_use_PrivateKey_file;
++ SSL_CTX_use_psk_identity_hint;
++ SSL_CTX_use_RSAPrivateKey;
++ SSL_CTX_use_RSAPrivateKey_ASN1;
++ SSL_CTX_use_RSAPrivateKey_file;
++ SSL_do_handshake;
++ SSL_dup;
++ SSL_dup_CA_list;
++ SSLeay_add_ssl_algorithms;
++ SSL_free;
++ SSL_get1_session;
++ SSL_get_certificate;
++ SSL_get_cipher_list;
++ SSL_get_ciphers;
++ SSL_get_client_CA_list;
++ SSL_get_current_cipher;
++ SSL_get_current_compression;
++ SSL_get_current_expansion;
++ SSL_get_default_timeout;
++ SSL_get_error;
++ SSL_get_ex_data;
++ SSL_get_ex_data_X509_STORE_CTX_idx;
++ SSL_get_ex_d_X509_STORE_CTX_idx;
++ SSL_get_ex_new_index;
++ SSL_get_fd;
++ SSL_get_finished;
++ SSL_get_info_callback;
++ SSL_get_peer_cert_chain;
++ SSL_get_peer_certificate;
++ SSL_get_peer_finished;
++ SSL_get_privatekey;
++ SSL_get_psk_identity;
++ SSL_get_psk_identity_hint;
++ SSL_get_quiet_shutdown;
++ SSL_get_rbio;
++ SSL_get_read_ahead;
++ SSL_get_rfd;
++ SSL_get_servername;
++ SSL_get_servername_type;
++ SSL_get_session;
++ SSL_get_shared_ciphers;
++ SSL_get_shutdown;
++ SSL_get_SSL_CTX;
++ SSL_get_ssl_method;
++ SSL_get_verify_callback;
++ SSL_get_verify_depth;
++ SSL_get_verify_mode;
++ SSL_get_verify_result;
++ SSL_get_version;
++ SSL_get_wbio;
++ SSL_get_wfd;
++ SSL_has_matching_session_id;
++ SSL_library_init;
++ SSL_load_client_CA_file;
++ SSL_load_error_strings;
++ SSL_new;
++ SSL_peek;
++ SSL_pending;
++ SSL_read;
++ SSL_renegotiate;
++ SSL_renegotiate_pending;
++ SSL_rstate_string;
++ SSL_rstate_string_long;
++ SSL_SESSION_cmp;
++ SSL_SESSION_free;
++ SSL_SESSION_get_ex_data;
++ SSL_SESSION_get_ex_new_index;
++ SSL_SESSION_get_id;
++ SSL_SESSION_get_time;
++ SSL_SESSION_get_timeout;
++ SSL_SESSION_hash;
++ SSL_SESSION_new;
++ SSL_SESSION_print;
++ SSL_SESSION_print_fp;
++ SSL_SESSION_set_ex_data;
++ SSL_SESSION_set_time;
++ SSL_SESSION_set_timeout;
++ SSL_set1_param;
++ SSL_set_accept_state;
++ SSL_set_bio;
++ SSL_set_cipher_list;
++ SSL_set_client_CA_list;
++ SSL_set_connect_state;
++ SSL_set_ex_data;
++ SSL_set_fd;
++ SSL_set_generate_session_id;
++ SSL_set_info_callback;
++ SSL_set_msg_callback;
++ SSL_set_psk_client_callback;
++ SSL_set_psk_server_callback;
++ SSL_set_purpose;
++ SSL_set_quiet_shutdown;
++ SSL_set_read_ahead;
++ SSL_set_rfd;
++ SSL_set_session;
++ SSL_set_session_id_context;
++ SSL_set_session_secret_cb;
++ SSL_set_session_ticket_ext;
++ SSL_set_session_ticket_ext_cb;
++ SSL_set_shutdown;
++ SSL_set_SSL_CTX;
++ SSL_set_ssl_method;
++ SSL_set_tmp_dh_callback;
++ SSL_set_tmp_ecdh_callback;
++ SSL_set_tmp_rsa_callback;
++ SSL_set_trust;
++ SSL_set_verify;
++ SSL_set_verify_depth;
++ SSL_set_verify_result;
++ SSL_set_wfd;
++ SSL_shutdown;
++ SSL_state;
++ SSL_state_string;
++ SSL_state_string_long;
++ SSL_use_certificate;
++ SSL_use_certificate_ASN1;
++ SSL_use_certificate_file;
++ SSL_use_PrivateKey;
++ SSL_use_PrivateKey_ASN1;
++ SSL_use_PrivateKey_file;
++ SSL_use_psk_identity_hint;
++ SSL_use_RSAPrivateKey;
++ SSL_use_RSAPrivateKey_ASN1;
++ SSL_use_RSAPrivateKey_file;
++ SSLv23_client_method;
++ SSLv23_method;
++ SSLv23_server_method;
++ SSLv2_client_method;
++ SSLv2_method;
++ SSLv2_server_method;
++ SSLv3_client_method;
++ SSLv3_method;
++ SSLv3_server_method;
++ SSL_version;
++ SSL_want;
++ SSL_write;
++ TLSv1_client_method;
++ TLSv1_method;
++ TLSv1_server_method;
++
++
++ SSLeay;
++ SSLeay_version;
++ ASN1_BIT_STRING_asn1_meth;
++ ASN1_HEADER_free;
++ ASN1_HEADER_new;
++ ASN1_IA5STRING_asn1_meth;
++ ASN1_INTEGER_get;
++ ASN1_INTEGER_set;
++ ASN1_INTEGER_to_BN;
++ ASN1_OBJECT_create;
++ ASN1_OBJECT_free;
++ ASN1_OBJECT_new;
++ ASN1_PRINTABLE_type;
++ ASN1_STRING_cmp;
++ ASN1_STRING_dup;
++ ASN1_STRING_free;
++ ASN1_STRING_new;
++ ASN1_STRING_print;
++ ASN1_STRING_set;
++ ASN1_STRING_type_new;
++ ASN1_TYPE_free;
++ ASN1_TYPE_new;
++ ASN1_UNIVERSALSTRING_to_string;
++ ASN1_UTCTIME_check;
++ ASN1_UTCTIME_print;
++ ASN1_UTCTIME_set;
++ ASN1_check_infinite_end;
++ ASN1_d2i_bio;
++ ASN1_d2i_fp;
++ ASN1_digest;
++ ASN1_dup;
++ ASN1_get_object;
++ ASN1_i2d_bio;
++ ASN1_i2d_fp;
++ ASN1_object_size;
++ ASN1_parse;
++ ASN1_put_object;
++ ASN1_sign;
++ ASN1_verify;
++ BF_cbc_encrypt;
++ BF_cfb64_encrypt;
++ BF_ecb_encrypt;
++ BF_encrypt;
++ BF_ofb64_encrypt;
++ BF_options;
++ BF_set_key;
++ BIO_CONNECT_free;
++ BIO_CONNECT_new;
++ BIO_accept;
++ BIO_ctrl;
++ BIO_int_ctrl;
++ BIO_debug_callback;
++ BIO_dump;
++ BIO_dup_chain;
++ BIO_f_base64;
++ BIO_f_buffer;
++ BIO_f_cipher;
++ BIO_f_md;
++ BIO_f_null;
++ BIO_f_proxy_server;
++ BIO_fd_non_fatal_error;
++ BIO_fd_should_retry;
++ BIO_find_type;
++ BIO_free;
++ BIO_free_all;
++ BIO_get_accept_socket;
++ BIO_get_filter_bio;
++ BIO_get_host_ip;
++ BIO_get_port;
++ BIO_get_retry_BIO;
++ BIO_get_retry_reason;
++ BIO_gethostbyname;
++ BIO_gets;
++ BIO_new;
++ BIO_new_accept;
++ BIO_new_connect;
++ BIO_new_fd;
++ BIO_new_file;
++ BIO_new_fp;
++ BIO_new_socket;
++ BIO_pop;
++ BIO_printf;
++ BIO_push;
++ BIO_puts;
++ BIO_read;
++ BIO_s_accept;
++ BIO_s_connect;
++ BIO_s_fd;
++ BIO_s_file;
++ BIO_s_mem;
++ BIO_s_null;
++ BIO_s_proxy_client;
++ BIO_s_socket;
++ BIO_set;
++ BIO_set_cipher;
++ BIO_set_tcp_ndelay;
++ BIO_sock_cleanup;
++ BIO_sock_error;
++ BIO_sock_init;
++ BIO_sock_non_fatal_error;
++ BIO_sock_should_retry;
++ BIO_socket_ioctl;
++ BIO_write;
++ BN_CTX_free;
++ BN_CTX_new;
++ BN_MONT_CTX_free;
++ BN_MONT_CTX_new;
++ BN_MONT_CTX_set;
++ BN_add;
++ BN_add_word;
++ BN_hex2bn;
++ BN_bin2bn;
++ BN_bn2hex;
++ BN_bn2bin;
++ BN_clear;
++ BN_clear_bit;
++ BN_clear_free;
++ BN_cmp;
++ BN_copy;
++ BN_div;
++ BN_div_word;
++ BN_dup;
++ BN_free;
++ BN_from_montgomery;
++ BN_gcd;
++ BN_generate_prime;
++ BN_get_word;
++ BN_is_bit_set;
++ BN_is_prime;
++ BN_lshift;
++ BN_lshift1;
++ BN_mask_bits;
++ BN_mod;
++ BN_mod_exp;
++ BN_mod_exp_mont;
++ BN_mod_exp_simple;
++ BN_mod_inverse;
++ BN_mod_mul;
++ BN_mod_mul_montgomery;
++ BN_mod_word;
++ BN_mul;
++ BN_new;
++ BN_num_bits;
++ BN_num_bits_word;
++ BN_options;
++ BN_print;
++ BN_print_fp;
++ BN_rand;
++ BN_reciprocal;
++ BN_rshift;
++ BN_rshift1;
++ BN_set_bit;
++ BN_set_word;
++ BN_sqr;
++ BN_sub;
++ BN_to_ASN1_INTEGER;
++ BN_ucmp;
++ BN_value_one;
++ BUF_MEM_free;
++ BUF_MEM_grow;
++ BUF_MEM_new;
++ BUF_strdup;
++ CONF_free;
++ CONF_get_number;
++ CONF_get_section;
++ CONF_get_string;
++ CONF_load;
++ CRYPTO_add_lock;
++ CRYPTO_dbg_free;
++ CRYPTO_dbg_malloc;
++ CRYPTO_dbg_realloc;
++ CRYPTO_dbg_remalloc;
++ CRYPTO_free;
++ CRYPTO_get_add_lock_callback;
++ CRYPTO_get_id_callback;
++ CRYPTO_get_lock_name;
++ CRYPTO_get_locking_callback;
++ CRYPTO_get_mem_functions;
++ CRYPTO_lock;
++ CRYPTO_malloc;
++ CRYPTO_mem_ctrl;
++ CRYPTO_mem_leaks;
++ CRYPTO_mem_leaks_cb;
++ CRYPTO_mem_leaks_fp;
++ CRYPTO_realloc;
++ CRYPTO_remalloc;
++ CRYPTO_set_add_lock_callback;
++ CRYPTO_set_id_callback;
++ CRYPTO_set_locking_callback;
++ CRYPTO_set_mem_functions;
++ CRYPTO_thread_id;
++ DH_check;
++ DH_compute_key;
++ DH_free;
++ DH_generate_key;
++ DH_generate_parameters;
++ DH_new;
++ DH_size;
++ DHparams_print;
++ DHparams_print_fp;
++ DSA_free;
++ DSA_generate_key;
++ DSA_generate_parameters;
++ DSA_is_prime;
++ DSA_new;
++ DSA_print;
++ DSA_print_fp;
++ DSA_sign;
++ DSA_sign_setup;
++ DSA_size;
++ DSA_verify;
++ DSAparams_print;
++ DSAparams_print_fp;
++ ERR_clear_error;
++ ERR_error_string;
++ ERR_free_strings;
++ ERR_func_error_string;
++ ERR_get_err_state_table;
++ ERR_get_error;
++ ERR_get_error_line;
++ ERR_get_state;
++ ERR_get_string_table;
++ ERR_lib_error_string;
++ ERR_load_ASN1_strings;
++ ERR_load_BIO_strings;
++ ERR_load_BN_strings;
++ ERR_load_BUF_strings;
++ ERR_load_CONF_strings;
++ ERR_load_DH_strings;
++ ERR_load_DSA_strings;
++ ERR_load_ERR_strings;
++ ERR_load_EVP_strings;
++ ERR_load_OBJ_strings;
++ ERR_load_PEM_strings;
++ ERR_load_PROXY_strings;
++ ERR_load_RSA_strings;
++ ERR_load_X509_strings;
++ ERR_load_crypto_strings;
++ ERR_load_strings;
++ ERR_peek_error;
++ ERR_peek_error_line;
++ ERR_print_errors;
++ ERR_print_errors_fp;
++ ERR_put_error;
++ ERR_reason_error_string;
++ ERR_remove_state;
++ EVP_BytesToKey;
++ EVP_CIPHER_CTX_cleanup;
++ EVP_CipherFinal;
++ EVP_CipherInit;
++ EVP_CipherUpdate;
++ EVP_DecodeBlock;
++ EVP_DecodeFinal;
++ EVP_DecodeInit;
++ EVP_DecodeUpdate;
++ EVP_DecryptFinal;
++ EVP_DecryptInit;
++ EVP_DecryptUpdate;
++ EVP_DigestFinal;
++ EVP_DigestInit;
++ EVP_DigestUpdate;
++ EVP_EncodeBlock;
++ EVP_EncodeFinal;
++ EVP_EncodeInit;
++ EVP_EncodeUpdate;
++ EVP_EncryptFinal;
++ EVP_EncryptInit;
++ EVP_EncryptUpdate;
++ EVP_OpenFinal;
++ EVP_OpenInit;
++ EVP_PKEY_assign;
++ EVP_PKEY_copy_parameters;
++ EVP_PKEY_free;
++ EVP_PKEY_missing_parameters;
++ EVP_PKEY_new;
++ EVP_PKEY_save_parameters;
++ EVP_PKEY_size;
++ EVP_PKEY_type;
++ EVP_SealFinal;
++ EVP_SealInit;
++ EVP_SignFinal;
++ EVP_VerifyFinal;
++ EVP_add_alias;
++ EVP_add_cipher;
++ EVP_add_digest;
++ EVP_bf_cbc;
++ EVP_bf_cfb64;
++ EVP_bf_ecb;
++ EVP_bf_ofb;
++ EVP_cleanup;
++ EVP_des_cbc;
++ EVP_des_cfb64;
++ EVP_des_ecb;
++ EVP_des_ede;
++ EVP_des_ede3;
++ EVP_des_ede3_cbc;
++ EVP_des_ede3_cfb64;
++ EVP_des_ede3_ofb;
++ EVP_des_ede_cbc;
++ EVP_des_ede_cfb64;
++ EVP_des_ede_ofb;
++ EVP_des_ofb;
++ EVP_desx_cbc;
++ EVP_dss;
++ EVP_dss1;
++ EVP_enc_null;
++ EVP_get_cipherbyname;
++ EVP_get_digestbyname;
++ EVP_get_pw_prompt;
++ EVP_idea_cbc;
++ EVP_idea_cfb64;
++ EVP_idea_ecb;
++ EVP_idea_ofb;
++ EVP_md2;
++ EVP_md5;
++ EVP_md_null;
++ EVP_rc2_cbc;
++ EVP_rc2_cfb64;
++ EVP_rc2_ecb;
++ EVP_rc2_ofb;
++ EVP_rc4;
++ EVP_read_pw_string;
++ EVP_set_pw_prompt;
++ EVP_sha;
++ EVP_sha1;
++ MD2;
++ MD2_Final;
++ MD2_Init;
++ MD2_Update;
++ MD2_options;
++ MD5;
++ MD5_Final;
++ MD5_Init;
++ MD5_Update;
++ MDC2;
++ MDC2_Final;
++ MDC2_Init;
++ MDC2_Update;
++ NETSCAPE_SPKAC_free;
++ NETSCAPE_SPKAC_new;
++ NETSCAPE_SPKI_free;
++ NETSCAPE_SPKI_new;
++ NETSCAPE_SPKI_sign;
++ NETSCAPE_SPKI_verify;
++ OBJ_add_object;
++ OBJ_bsearch;
++ OBJ_cleanup;
++ OBJ_cmp;
++ OBJ_create;
++ OBJ_dup;
++ OBJ_ln2nid;
++ OBJ_new_nid;
++ OBJ_nid2ln;
++ OBJ_nid2obj;
++ OBJ_nid2sn;
++ OBJ_obj2nid;
++ OBJ_sn2nid;
++ OBJ_txt2nid;
++ PEM_ASN1_read;
++ PEM_ASN1_read_bio;
++ PEM_ASN1_write;
++ PEM_ASN1_write_bio;
++ PEM_SealFinal;
++ PEM_SealInit;
++ PEM_SealUpdate;
++ PEM_SignFinal;
++ PEM_SignInit;
++ PEM_SignUpdate;
++ PEM_X509_INFO_read;
++ PEM_X509_INFO_read_bio;
++ PEM_X509_INFO_write_bio;
++ PEM_dek_info;
++ PEM_do_header;
++ PEM_get_EVP_CIPHER_INFO;
++ PEM_proc_type;
++ PEM_read;
++ PEM_read_DHparams;
++ PEM_read_DSAPrivateKey;
++ PEM_read_DSAparams;
++ PEM_read_PKCS7;
++ PEM_read_PrivateKey;
++ PEM_read_RSAPrivateKey;
++ PEM_read_X509;
++ PEM_read_X509_CRL;
++ PEM_read_X509_REQ;
++ PEM_read_bio;
++ PEM_read_bio_DHparams;
++ PEM_read_bio_DSAPrivateKey;
++ PEM_read_bio_DSAparams;
++ PEM_read_bio_PKCS7;
++ PEM_read_bio_PrivateKey;
++ PEM_read_bio_RSAPrivateKey;
++ PEM_read_bio_X509;
++ PEM_read_bio_X509_CRL;
++ PEM_read_bio_X509_REQ;
++ PEM_write;
++ PEM_write_DHparams;
++ PEM_write_DSAPrivateKey;
++ PEM_write_DSAparams;
++ PEM_write_PKCS7;
++ PEM_write_PrivateKey;
++ PEM_write_RSAPrivateKey;
++ PEM_write_X509;
++ PEM_write_X509_CRL;
++ PEM_write_X509_REQ;
++ PEM_write_bio;
++ PEM_write_bio_DHparams;
++ PEM_write_bio_DSAPrivateKey;
++ PEM_write_bio_DSAparams;
++ PEM_write_bio_PKCS7;
++ PEM_write_bio_PrivateKey;
++ PEM_write_bio_RSAPrivateKey;
++ PEM_write_bio_X509;
++ PEM_write_bio_X509_CRL;
++ PEM_write_bio_X509_REQ;
++ PKCS7_DIGEST_free;
++ PKCS7_DIGEST_new;
++ PKCS7_ENCRYPT_free;
++ PKCS7_ENCRYPT_new;
++ PKCS7_ENC_CONTENT_free;
++ PKCS7_ENC_CONTENT_new;
++ PKCS7_ENVELOPE_free;
++ PKCS7_ENVELOPE_new;
++ PKCS7_ISSUER_AND_SERIAL_digest;
++ PKCS7_ISSUER_AND_SERIAL_free;
++ PKCS7_ISSUER_AND_SERIAL_new;
++ PKCS7_RECIP_INFO_free;
++ PKCS7_RECIP_INFO_new;
++ PKCS7_SIGNED_free;
++ PKCS7_SIGNED_new;
++ PKCS7_SIGNER_INFO_free;
++ PKCS7_SIGNER_INFO_new;
++ PKCS7_SIGN_ENVELOPE_free;
++ PKCS7_SIGN_ENVELOPE_new;
++ PKCS7_dup;
++ PKCS7_free;
++ PKCS7_new;
++ PROXY_ENTRY_add_noproxy;
++ PROXY_ENTRY_clear_noproxy;
++ PROXY_ENTRY_free;
++ PROXY_ENTRY_get_noproxy;
++ PROXY_ENTRY_new;
++ PROXY_ENTRY_set_server;
++ PROXY_add_noproxy;
++ PROXY_add_server;
++ PROXY_check_by_host;
++ PROXY_check_url;
++ PROXY_clear_noproxy;
++ PROXY_free;
++ PROXY_get_noproxy;
++ PROXY_get_proxies;
++ PROXY_get_proxy_entry;
++ PROXY_load_conf;
++ PROXY_new;
++ PROXY_print;
++ RAND_bytes;
++ RAND_cleanup;
++ RAND_file_name;
++ RAND_load_file;
++ RAND_screen;
++ RAND_seed;
++ RAND_write_file;
++ RC2_cbc_encrypt;
++ RC2_cfb64_encrypt;
++ RC2_ecb_encrypt;
++ RC2_encrypt;
++ RC2_ofb64_encrypt;
++ RC2_set_key;
++ RC4;
++ RC4_options;
++ RC4_set_key;
++ RSAPrivateKey_asn1_meth;
++ RSAPrivateKey_dup;
++ RSAPublicKey_dup;
++ RSA_PKCS1_SSLeay;
++ RSA_free;
++ RSA_generate_key;
++ RSA_new;
++ RSA_new_method;
++ RSA_print;
++ RSA_print_fp;
++ RSA_private_decrypt;
++ RSA_private_encrypt;
++ RSA_public_decrypt;
++ RSA_public_encrypt;
++ RSA_set_default_method;
++ RSA_sign;
++ RSA_sign_ASN1_OCTET_STRING;
++ RSA_size;
++ RSA_verify;
++ RSA_verify_ASN1_OCTET_STRING;
++ SHA;
++ SHA1;
++ SHA1_Final;
++ SHA1_Init;
++ SHA1_Update;
++ SHA_Final;
++ SHA_Init;
++ SHA_Update;
++ OpenSSL_add_all_algorithms;
++ OpenSSL_add_all_ciphers;
++ OpenSSL_add_all_digests;
++ TXT_DB_create_index;
++ TXT_DB_free;
++ TXT_DB_get_by_index;
++ TXT_DB_insert;
++ TXT_DB_read;
++ TXT_DB_write;
++ X509_ALGOR_free;
++ X509_ALGOR_new;
++ X509_ATTRIBUTE_free;
++ X509_ATTRIBUTE_new;
++ X509_CINF_free;
++ X509_CINF_new;
++ X509_CRL_INFO_free;
++ X509_CRL_INFO_new;
++ X509_CRL_add_ext;
++ X509_CRL_cmp;
++ X509_CRL_delete_ext;
++ X509_CRL_dup;
++ X509_CRL_free;
++ X509_CRL_get_ext;
++ X509_CRL_get_ext_by_NID;
++ X509_CRL_get_ext_by_OBJ;
++ X509_CRL_get_ext_by_critical;
++ X509_CRL_get_ext_count;
++ X509_CRL_new;
++ X509_CRL_sign;
++ X509_CRL_verify;
++ X509_EXTENSION_create_by_NID;
++ X509_EXTENSION_create_by_OBJ;
++ X509_EXTENSION_dup;
++ X509_EXTENSION_free;
++ X509_EXTENSION_get_critical;
++ X509_EXTENSION_get_data;
++ X509_EXTENSION_get_object;
++ X509_EXTENSION_new;
++ X509_EXTENSION_set_critical;
++ X509_EXTENSION_set_data;
++ X509_EXTENSION_set_object;
++ X509_INFO_free;
++ X509_INFO_new;
++ X509_LOOKUP_by_alias;
++ X509_LOOKUP_by_fingerprint;
++ X509_LOOKUP_by_issuer_serial;
++ X509_LOOKUP_by_subject;
++ X509_LOOKUP_ctrl;
++ X509_LOOKUP_file;
++ X509_LOOKUP_free;
++ X509_LOOKUP_hash_dir;
++ X509_LOOKUP_init;
++ X509_LOOKUP_new;
++ X509_LOOKUP_shutdown;
++ X509_NAME_ENTRY_create_by_NID;
++ X509_NAME_ENTRY_create_by_OBJ;
++ X509_NAME_ENTRY_dup;
++ X509_NAME_ENTRY_free;
++ X509_NAME_ENTRY_get_data;
++ X509_NAME_ENTRY_get_object;
++ X509_NAME_ENTRY_new;
++ X509_NAME_ENTRY_set_data;
++ X509_NAME_ENTRY_set_object;
++ X509_NAME_add_entry;
++ X509_NAME_cmp;
++ X509_NAME_delete_entry;
++ X509_NAME_digest;
++ X509_NAME_dup;
++ X509_NAME_entry_count;
++ X509_NAME_free;
++ X509_NAME_get_entry;
++ X509_NAME_get_index_by_NID;
++ X509_NAME_get_index_by_OBJ;
++ X509_NAME_get_text_by_NID;
++ X509_NAME_get_text_by_OBJ;
++ X509_NAME_hash;
++ X509_NAME_new;
++ X509_NAME_oneline;
++ X509_NAME_print;
++ X509_NAME_set;
++ X509_OBJECT_free_contents;
++ X509_OBJECT_retrieve_by_subject;
++ X509_OBJECT_up_ref_count;
++ X509_PKEY_free;
++ X509_PKEY_new;
++ X509_PUBKEY_free;
++ X509_PUBKEY_get;
++ X509_PUBKEY_new;
++ X509_PUBKEY_set;
++ X509_REQ_INFO_free;
++ X509_REQ_INFO_new;
++ X509_REQ_dup;
++ X509_REQ_free;
++ X509_REQ_get_pubkey;
++ X509_REQ_new;
++ X509_REQ_print;
++ X509_REQ_print_fp;
++ X509_REQ_set_pubkey;
++ X509_REQ_set_subject_name;
++ X509_REQ_set_version;
++ X509_REQ_sign;
++ X509_REQ_to_X509;
++ X509_REQ_verify;
++ X509_REVOKED_add_ext;
++ X509_REVOKED_delete_ext;
++ X509_REVOKED_free;
++ X509_REVOKED_get_ext;
++ X509_REVOKED_get_ext_by_NID;
++ X509_REVOKED_get_ext_by_OBJ;
++ X509_REVOKED_get_ext_by_critical;
++ X509_REVOKED_get_ext_by_critic;
++ X509_REVOKED_get_ext_count;
++ X509_REVOKED_new;
++ X509_SIG_free;
++ X509_SIG_new;
++ X509_STORE_CTX_cleanup;
++ X509_STORE_CTX_init;
++ X509_STORE_add_cert;
++ X509_STORE_add_lookup;
++ X509_STORE_free;
++ X509_STORE_get_by_subject;
++ X509_STORE_load_locations;
++ X509_STORE_new;
++ X509_STORE_set_default_paths;
++ X509_VAL_free;
++ X509_VAL_new;
++ X509_add_ext;
++ X509_asn1_meth;
++ X509_certificate_type;
++ X509_check_private_key;
++ X509_cmp_current_time;
++ X509_delete_ext;
++ X509_digest;
++ X509_dup;
++ X509_free;
++ X509_get_default_cert_area;
++ X509_get_default_cert_dir;
++ X509_get_default_cert_dir_env;
++ X509_get_default_cert_file;
++ X509_get_default_cert_file_env;
++ X509_get_default_private_dir;
++ X509_get_ext;
++ X509_get_ext_by_NID;
++ X509_get_ext_by_OBJ;
++ X509_get_ext_by_critical;
++ X509_get_ext_count;
++ X509_get_issuer_name;
++ X509_get_pubkey;
++ X509_get_pubkey_parameters;
++ X509_get_serialNumber;
++ X509_get_subject_name;
++ X509_gmtime_adj;
++ X509_issuer_and_serial_cmp;
++ X509_issuer_and_serial_hash;
++ X509_issuer_name_cmp;
++ X509_issuer_name_hash;
++ X509_load_cert_file;
++ X509_new;
++ X509_print;
++ X509_print_fp;
++ X509_set_issuer_name;
++ X509_set_notAfter;
++ X509_set_notBefore;
++ X509_set_pubkey;
++ X509_set_serialNumber;
++ X509_set_subject_name;
++ X509_set_version;
++ X509_sign;
++ X509_subject_name_cmp;
++ X509_subject_name_hash;
++ X509_to_X509_REQ;
++ X509_verify;
++ X509_verify_cert;
++ X509_verify_cert_error_string;
++ X509v3_add_ext;
++ X509v3_add_extension;
++ X509v3_add_netscape_extensions;
++ X509v3_add_standard_extensions;
++ X509v3_cleanup_extensions;
++ X509v3_data_type_by_NID;
++ X509v3_data_type_by_OBJ;
++ X509v3_delete_ext;
++ X509v3_get_ext;
++ X509v3_get_ext_by_NID;
++ X509v3_get_ext_by_OBJ;
++ X509v3_get_ext_by_critical;
++ X509v3_get_ext_count;
++ X509v3_pack_string;
++ X509v3_pack_type_by_NID;
++ X509v3_pack_type_by_OBJ;
++ X509v3_unpack_string;
++ _des_crypt;
++ a2d_ASN1_OBJECT;
++ a2i_ASN1_INTEGER;
++ a2i_ASN1_STRING;
++ asn1_Finish;
++ asn1_GetSequence;
++ bn_div_words;
++ bn_expand2;
++ bn_mul_add_words;
++ bn_mul_words;
++ BN_uadd;
++ BN_usub;
++ bn_sqr_words;
++ _ossl_old_crypt;
++ d2i_ASN1_BIT_STRING;
++ d2i_ASN1_BOOLEAN;
++ d2i_ASN1_HEADER;
++ d2i_ASN1_IA5STRING;
++ d2i_ASN1_INTEGER;
++ d2i_ASN1_OBJECT;
++ d2i_ASN1_OCTET_STRING;
++ d2i_ASN1_PRINTABLE;
++ d2i_ASN1_PRINTABLESTRING;
++ d2i_ASN1_SET;
++ d2i_ASN1_T61STRING;
++ d2i_ASN1_TYPE;
++ d2i_ASN1_UTCTIME;
++ d2i_ASN1_bytes;
++ d2i_ASN1_type_bytes;
++ d2i_DHparams;
++ d2i_DSAPrivateKey;
++ d2i_DSAPrivateKey_bio;
++ d2i_DSAPrivateKey_fp;
++ d2i_DSAPublicKey;
++ d2i_DSAparams;
++ d2i_NETSCAPE_SPKAC;
++ d2i_NETSCAPE_SPKI;
++ d2i_Netscape_RSA;
++ d2i_PKCS7;
++ d2i_PKCS7_DIGEST;
++ d2i_PKCS7_ENCRYPT;
++ d2i_PKCS7_ENC_CONTENT;
++ d2i_PKCS7_ENVELOPE;
++ d2i_PKCS7_ISSUER_AND_SERIAL;
++ d2i_PKCS7_RECIP_INFO;
++ d2i_PKCS7_SIGNED;
++ d2i_PKCS7_SIGNER_INFO;
++ d2i_PKCS7_SIGN_ENVELOPE;
++ d2i_PKCS7_bio;
++ d2i_PKCS7_fp;
++ d2i_PrivateKey;
++ d2i_PublicKey;
++ d2i_RSAPrivateKey;
++ d2i_RSAPrivateKey_bio;
++ d2i_RSAPrivateKey_fp;
++ d2i_RSAPublicKey;
++ d2i_X509;
++ d2i_X509_ALGOR;
++ d2i_X509_ATTRIBUTE;
++ d2i_X509_CINF;
++ d2i_X509_CRL;
++ d2i_X509_CRL_INFO;
++ d2i_X509_CRL_bio;
++ d2i_X509_CRL_fp;
++ d2i_X509_EXTENSION;
++ d2i_X509_NAME;
++ d2i_X509_NAME_ENTRY;
++ d2i_X509_PKEY;
++ d2i_X509_PUBKEY;
++ d2i_X509_REQ;
++ d2i_X509_REQ_INFO;
++ d2i_X509_REQ_bio;
++ d2i_X509_REQ_fp;
++ d2i_X509_REVOKED;
++ d2i_X509_SIG;
++ d2i_X509_VAL;
++ d2i_X509_bio;
++ d2i_X509_fp;
++ DES_cbc_cksum;
++ DES_cbc_encrypt;
++ DES_cblock_print_file;
++ DES_cfb64_encrypt;
++ DES_cfb_encrypt;
++ DES_decrypt3;
++ DES_ecb3_encrypt;
++ DES_ecb_encrypt;
++ DES_ede3_cbc_encrypt;
++ DES_ede3_cfb64_encrypt;
++ DES_ede3_ofb64_encrypt;
++ DES_enc_read;
++ DES_enc_write;
++ DES_encrypt1;
++ DES_encrypt2;
++ DES_encrypt3;
++ DES_fcrypt;
++ DES_is_weak_key;
++ DES_key_sched;
++ DES_ncbc_encrypt;
++ DES_ofb64_encrypt;
++ DES_ofb_encrypt;
++ DES_options;
++ DES_pcbc_encrypt;
++ DES_quad_cksum;
++ DES_random_key;
++ _ossl_old_des_random_seed;
++ _ossl_old_des_read_2passwords;
++ _ossl_old_des_read_password;
++ _ossl_old_des_read_pw;
++ _ossl_old_des_read_pw_string;
++ DES_set_key;
++ DES_set_odd_parity;
++ DES_string_to_2keys;
++ DES_string_to_key;
++ DES_xcbc_encrypt;
++ DES_xwhite_in2out;
++ fcrypt_body;
++ i2a_ASN1_INTEGER;
++ i2a_ASN1_OBJECT;
++ i2a_ASN1_STRING;
++ i2d_ASN1_BIT_STRING;
++ i2d_ASN1_BOOLEAN;
++ i2d_ASN1_HEADER;
++ i2d_ASN1_IA5STRING;
++ i2d_ASN1_INTEGER;
++ i2d_ASN1_OBJECT;
++ i2d_ASN1_OCTET_STRING;
++ i2d_ASN1_PRINTABLE;
++ i2d_ASN1_SET;
++ i2d_ASN1_TYPE;
++ i2d_ASN1_UTCTIME;
++ i2d_ASN1_bytes;
++ i2d_DHparams;
++ i2d_DSAPrivateKey;
++ i2d_DSAPrivateKey_bio;
++ i2d_DSAPrivateKey_fp;
++ i2d_DSAPublicKey;
++ i2d_DSAparams;
++ i2d_NETSCAPE_SPKAC;
++ i2d_NETSCAPE_SPKI;
++ i2d_Netscape_RSA;
++ i2d_PKCS7;
++ i2d_PKCS7_DIGEST;
++ i2d_PKCS7_ENCRYPT;
++ i2d_PKCS7_ENC_CONTENT;
++ i2d_PKCS7_ENVELOPE;
++ i2d_PKCS7_ISSUER_AND_SERIAL;
++ i2d_PKCS7_RECIP_INFO;
++ i2d_PKCS7_SIGNED;
++ i2d_PKCS7_SIGNER_INFO;
++ i2d_PKCS7_SIGN_ENVELOPE;
++ i2d_PKCS7_bio;
++ i2d_PKCS7_fp;
++ i2d_PrivateKey;
++ i2d_PublicKey;
++ i2d_RSAPrivateKey;
++ i2d_RSAPrivateKey_bio;
++ i2d_RSAPrivateKey_fp;
++ i2d_RSAPublicKey;
++ i2d_X509;
++ i2d_X509_ALGOR;
++ i2d_X509_ATTRIBUTE;
++ i2d_X509_CINF;
++ i2d_X509_CRL;
++ i2d_X509_CRL_INFO;
++ i2d_X509_CRL_bio;
++ i2d_X509_CRL_fp;
++ i2d_X509_EXTENSION;
++ i2d_X509_NAME;
++ i2d_X509_NAME_ENTRY;
++ i2d_X509_PKEY;
++ i2d_X509_PUBKEY;
++ i2d_X509_REQ;
++ i2d_X509_REQ_INFO;
++ i2d_X509_REQ_bio;
++ i2d_X509_REQ_fp;
++ i2d_X509_REVOKED;
++ i2d_X509_SIG;
++ i2d_X509_VAL;
++ i2d_X509_bio;
++ i2d_X509_fp;
++ idea_cbc_encrypt;
++ idea_cfb64_encrypt;
++ idea_ecb_encrypt;
++ idea_encrypt;
++ idea_ofb64_encrypt;
++ idea_options;
++ idea_set_decrypt_key;
++ idea_set_encrypt_key;
++ lh_delete;
++ lh_doall;
++ lh_doall_arg;
++ lh_free;
++ lh_insert;
++ lh_new;
++ lh_node_stats;
++ lh_node_stats_bio;
++ lh_node_usage_stats;
++ lh_node_usage_stats_bio;
++ lh_retrieve;
++ lh_stats;
++ lh_stats_bio;
++ lh_strhash;
++ sk_delete;
++ sk_delete_ptr;
++ sk_dup;
++ sk_find;
++ sk_free;
++ sk_insert;
++ sk_new;
++ sk_pop;
++ sk_pop_free;
++ sk_push;
++ sk_set_cmp_func;
++ sk_shift;
++ sk_unshift;
++ sk_zero;
++ BIO_f_nbio_test;
++ ASN1_TYPE_get;
++ ASN1_TYPE_set;
++ PKCS7_content_free;
++ ERR_load_PKCS7_strings;
++ X509_find_by_issuer_and_serial;
++ X509_find_by_subject;
++ PKCS7_ctrl;
++ PKCS7_set_type;
++ PKCS7_set_content;
++ PKCS7_SIGNER_INFO_set;
++ PKCS7_add_signer;
++ PKCS7_add_certificate;
++ PKCS7_add_crl;
++ PKCS7_content_new;
++ PKCS7_dataSign;
++ PKCS7_dataVerify;
++ PKCS7_dataInit;
++ PKCS7_add_signature;
++ PKCS7_cert_from_signer_info;
++ PKCS7_get_signer_info;
++ EVP_delete_alias;
++ EVP_mdc2;
++ PEM_read_bio_RSAPublicKey;
++ PEM_write_bio_RSAPublicKey;
++ d2i_RSAPublicKey_bio;
++ i2d_RSAPublicKey_bio;
++ PEM_read_RSAPublicKey;
++ PEM_write_RSAPublicKey;
++ d2i_RSAPublicKey_fp;
++ i2d_RSAPublicKey_fp;
++ BIO_copy_next_retry;
++ RSA_flags;
++ X509_STORE_add_crl;
++ X509_load_crl_file;
++ EVP_rc2_40_cbc;
++ EVP_rc4_40;
++ EVP_CIPHER_CTX_init;
++ HMAC;
++ HMAC_Init;
++ HMAC_Update;
++ HMAC_Final;
++ ERR_get_next_error_library;
++ EVP_PKEY_cmp_parameters;
++ HMAC_cleanup;
++ BIO_ptr_ctrl;
++ BIO_new_file_internal;
++ BIO_new_fp_internal;
++ BIO_s_file_internal;
++ BN_BLINDING_convert;
++ BN_BLINDING_invert;
++ BN_BLINDING_update;
++ RSA_blinding_on;
++ RSA_blinding_off;
++ i2t_ASN1_OBJECT;
++ BN_BLINDING_new;
++ BN_BLINDING_free;
++ EVP_cast5_cbc;
++ EVP_cast5_cfb64;
++ EVP_cast5_ecb;
++ EVP_cast5_ofb;
++ BF_decrypt;
++ CAST_set_key;
++ CAST_encrypt;
++ CAST_decrypt;
++ CAST_ecb_encrypt;
++ CAST_cbc_encrypt;
++ CAST_cfb64_encrypt;
++ CAST_ofb64_encrypt;
++ RC2_decrypt;
++ OBJ_create_objects;
++ BN_exp;
++ BN_mul_word;
++ BN_sub_word;
++ BN_dec2bn;
++ BN_bn2dec;
++ BIO_ghbn_ctrl;
++ CRYPTO_free_ex_data;
++ CRYPTO_get_ex_data;
++ CRYPTO_set_ex_data;
++ ERR_load_CRYPTO_strings;
++ ERR_load_CRYPTOlib_strings;
++ EVP_PKEY_bits;
++ MD5_Transform;
++ SHA1_Transform;
++ SHA_Transform;
++ X509_STORE_CTX_get_chain;
++ X509_STORE_CTX_get_current_cert;
++ X509_STORE_CTX_get_error;
++ X509_STORE_CTX_get_error_depth;
++ X509_STORE_CTX_get_ex_data;
++ X509_STORE_CTX_set_cert;
++ X509_STORE_CTX_set_chain;
++ X509_STORE_CTX_set_error;
++ X509_STORE_CTX_set_ex_data;
++ CRYPTO_dup_ex_data;
++ CRYPTO_get_new_lockid;
++ CRYPTO_new_ex_data;
++ RSA_set_ex_data;
++ RSA_get_ex_data;
++ RSA_get_ex_new_index;
++ RSA_padding_add_PKCS1_type_1;
++ RSA_padding_add_PKCS1_type_2;
++ RSA_padding_add_SSLv23;
++ RSA_padding_add_none;
++ RSA_padding_check_PKCS1_type_1;
++ RSA_padding_check_PKCS1_type_2;
++ RSA_padding_check_SSLv23;
++ RSA_padding_check_none;
++ bn_add_words;
++ d2i_Netscape_RSA_2;
++ CRYPTO_get_ex_new_index;
++ RIPEMD160_Init;
++ RIPEMD160_Update;
++ RIPEMD160_Final;
++ RIPEMD160;
++ RIPEMD160_Transform;
++ RC5_32_set_key;
++ RC5_32_ecb_encrypt;
++ RC5_32_encrypt;
++ RC5_32_decrypt;
++ RC5_32_cbc_encrypt;
++ RC5_32_cfb64_encrypt;
++ RC5_32_ofb64_encrypt;
++ BN_bn2mpi;
++ BN_mpi2bn;
++ ASN1_BIT_STRING_get_bit;
++ ASN1_BIT_STRING_set_bit;
++ BIO_get_ex_data;
++ BIO_get_ex_new_index;
++ BIO_set_ex_data;
++ X509v3_get_key_usage;
++ X509v3_set_key_usage;
++ a2i_X509v3_key_usage;
++ i2a_X509v3_key_usage;
++ EVP_PKEY_decrypt;
++ EVP_PKEY_encrypt;
++ PKCS7_RECIP_INFO_set;
++ PKCS7_add_recipient;
++ PKCS7_add_recipient_info;
++ PKCS7_set_cipher;
++ ASN1_TYPE_get_int_octetstring;
++ ASN1_TYPE_get_octetstring;
++ ASN1_TYPE_set_int_octetstring;
++ ASN1_TYPE_set_octetstring;
++ ASN1_UTCTIME_set_string;
++ ERR_add_error_data;
++ ERR_set_error_data;
++ EVP_CIPHER_asn1_to_param;
++ EVP_CIPHER_param_to_asn1;
++ EVP_CIPHER_get_asn1_iv;
++ EVP_CIPHER_set_asn1_iv;
++ EVP_rc5_32_12_16_cbc;
++ EVP_rc5_32_12_16_cfb64;
++ EVP_rc5_32_12_16_ecb;
++ EVP_rc5_32_12_16_ofb;
++ asn1_add_error;
++ d2i_ASN1_BMPSTRING;
++ i2d_ASN1_BMPSTRING;
++ BIO_f_ber;
++ BN_init;
++ COMP_CTX_new;
++ COMP_CTX_free;
++ COMP_CTX_compress_block;
++ COMP_CTX_expand_block;
++ X509_STORE_CTX_get_ex_new_index;
++ OBJ_NAME_add;
++ BIO_socket_nbio;
++ EVP_rc2_64_cbc;
++ OBJ_NAME_cleanup;
++ OBJ_NAME_get;
++ OBJ_NAME_init;
++ OBJ_NAME_new_index;
++ OBJ_NAME_remove;
++ BN_MONT_CTX_copy;
++ BIO_new_socks4a_connect;
++ BIO_s_socks4a_connect;
++ PROXY_set_connect_mode;
++ RAND_SSLeay;
++ RAND_set_rand_method;
++ RSA_memory_lock;
++ bn_sub_words;
++ bn_mul_normal;
++ bn_mul_comba8;
++ bn_mul_comba4;
++ bn_sqr_normal;
++ bn_sqr_comba8;
++ bn_sqr_comba4;
++ bn_cmp_words;
++ bn_mul_recursive;
++ bn_mul_part_recursive;
++ bn_sqr_recursive;
++ bn_mul_low_normal;
++ BN_RECP_CTX_init;
++ BN_RECP_CTX_new;
++ BN_RECP_CTX_free;
++ BN_RECP_CTX_set;
++ BN_mod_mul_reciprocal;
++ BN_mod_exp_recp;
++ BN_div_recp;
++ BN_CTX_init;
++ BN_MONT_CTX_init;
++ RAND_get_rand_method;
++ PKCS7_add_attribute;
++ PKCS7_add_signed_attribute;
++ PKCS7_digest_from_attributes;
++ PKCS7_get_attribute;
++ PKCS7_get_issuer_and_serial;
++ PKCS7_get_signed_attribute;
++ COMP_compress_block;
++ COMP_expand_block;
++ COMP_rle;
++ COMP_zlib;
++ ms_time_diff;
++ ms_time_new;
++ ms_time_free;
++ ms_time_cmp;
++ ms_time_get;
++ PKCS7_set_attributes;
++ PKCS7_set_signed_attributes;
++ X509_ATTRIBUTE_create;
++ X509_ATTRIBUTE_dup;
++ ASN1_GENERALIZEDTIME_check;
++ ASN1_GENERALIZEDTIME_print;
++ ASN1_GENERALIZEDTIME_set;
++ ASN1_GENERALIZEDTIME_set_string;
++ ASN1_TIME_print;
++ BASIC_CONSTRAINTS_free;
++ BASIC_CONSTRAINTS_new;
++ ERR_load_X509V3_strings;
++ NETSCAPE_CERT_SEQUENCE_free;
++ NETSCAPE_CERT_SEQUENCE_new;
++ OBJ_txt2obj;
++ PEM_read_NETSCAPE_CERT_SEQUENCE;
++ PEM_read_NS_CERT_SEQ;
++ PEM_read_bio_NETSCAPE_CERT_SEQUENCE;
++ PEM_read_bio_NS_CERT_SEQ;
++ PEM_write_NETSCAPE_CERT_SEQUENCE;
++ PEM_write_NS_CERT_SEQ;
++ PEM_write_bio_NETSCAPE_CERT_SEQUENCE;
++ PEM_write_bio_NS_CERT_SEQ;
++ X509V3_EXT_add;
++ X509V3_EXT_add_alias;
++ X509V3_EXT_add_conf;
++ X509V3_EXT_cleanup;
++ X509V3_EXT_conf;
++ X509V3_EXT_conf_nid;
++ X509V3_EXT_get;
++ X509V3_EXT_get_nid;
++ X509V3_EXT_print;
++ X509V3_EXT_print_fp;
++ X509V3_add_standard_extensions;
++ X509V3_add_value;
++ X509V3_add_value_bool;
++ X509V3_add_value_int;
++ X509V3_conf_free;
++ X509V3_get_value_bool;
++ X509V3_get_value_int;
++ X509V3_parse_list;
++ d2i_ASN1_GENERALIZEDTIME;
++ d2i_ASN1_TIME;
++ d2i_BASIC_CONSTRAINTS;
++ d2i_NETSCAPE_CERT_SEQUENCE;
++ d2i_ext_ku;
++ ext_ku_free;
++ ext_ku_new;
++ i2d_ASN1_GENERALIZEDTIME;
++ i2d_ASN1_TIME;
++ i2d_BASIC_CONSTRAINTS;
++ i2d_NETSCAPE_CERT_SEQUENCE;
++ i2d_ext_ku;
++ EVP_MD_CTX_copy;
++ i2d_ASN1_ENUMERATED;
++ d2i_ASN1_ENUMERATED;
++ ASN1_ENUMERATED_set;
++ ASN1_ENUMERATED_get;
++ BN_to_ASN1_ENUMERATED;
++ ASN1_ENUMERATED_to_BN;
++ i2a_ASN1_ENUMERATED;
++ a2i_ASN1_ENUMERATED;
++ i2d_GENERAL_NAME;
++ d2i_GENERAL_NAME;
++ GENERAL_NAME_new;
++ GENERAL_NAME_free;
++ GENERAL_NAMES_new;
++ GENERAL_NAMES_free;
++ d2i_GENERAL_NAMES;
++ i2d_GENERAL_NAMES;
++ i2v_GENERAL_NAMES;
++ i2s_ASN1_OCTET_STRING;
++ s2i_ASN1_OCTET_STRING;
++ X509V3_EXT_check_conf;
++ hex_to_string;
++ string_to_hex;
++ DES_ede3_cbcm_encrypt;
++ RSA_padding_add_PKCS1_OAEP;
++ RSA_padding_check_PKCS1_OAEP;
++ X509_CRL_print_fp;
++ X509_CRL_print;
++ i2v_GENERAL_NAME;
++ v2i_GENERAL_NAME;
++ i2d_PKEY_USAGE_PERIOD;
++ d2i_PKEY_USAGE_PERIOD;
++ PKEY_USAGE_PERIOD_new;
++ PKEY_USAGE_PERIOD_free;
++ v2i_GENERAL_NAMES;
++ i2s_ASN1_INTEGER;
++ X509V3_EXT_d2i;
++ name_cmp;
++ str_dup;
++ i2s_ASN1_ENUMERATED;
++ i2s_ASN1_ENUMERATED_TABLE;
++ BIO_s_log;
++ BIO_f_reliable;
++ PKCS7_dataFinal;
++ PKCS7_dataDecode;
++ X509V3_EXT_CRL_add_conf;
++ BN_set_params;
++ BN_get_params;
++ BIO_get_ex_num;
++ BIO_set_ex_free_func;
++ EVP_ripemd160;
++ ASN1_TIME_set;
++ i2d_AUTHORITY_KEYID;
++ d2i_AUTHORITY_KEYID;
++ AUTHORITY_KEYID_new;
++ AUTHORITY_KEYID_free;
++ ASN1_seq_unpack;
++ ASN1_seq_pack;
++ ASN1_unpack_string;
++ ASN1_pack_string;
++ PKCS12_pack_safebag;
++ PKCS12_MAKE_KEYBAG;
++ PKCS8_encrypt;
++ PKCS12_MAKE_SHKEYBAG;
++ PKCS12_pack_p7data;
++ PKCS12_pack_p7encdata;
++ PKCS12_add_localkeyid;
++ PKCS12_add_friendlyname_asc;
++ PKCS12_add_friendlyname_uni;
++ PKCS12_get_friendlyname;
++ PKCS12_pbe_crypt;
++ PKCS12_decrypt_d2i;
++ PKCS12_i2d_encrypt;
++ PKCS12_init;
++ PKCS12_key_gen_asc;
++ PKCS12_key_gen_uni;
++ PKCS12_gen_mac;
++ PKCS12_verify_mac;
++ PKCS12_set_mac;
++ PKCS12_setup_mac;
++ OPENSSL_asc2uni;
++ OPENSSL_uni2asc;
++ i2d_PKCS12_BAGS;
++ PKCS12_BAGS_new;
++ d2i_PKCS12_BAGS;
++ PKCS12_BAGS_free;
++ i2d_PKCS12;
++ d2i_PKCS12;
++ PKCS12_new;
++ PKCS12_free;
++ i2d_PKCS12_MAC_DATA;
++ PKCS12_MAC_DATA_new;
++ d2i_PKCS12_MAC_DATA;
++ PKCS12_MAC_DATA_free;
++ i2d_PKCS12_SAFEBAG;
++ PKCS12_SAFEBAG_new;
++ d2i_PKCS12_SAFEBAG;
++ PKCS12_SAFEBAG_free;
++ ERR_load_PKCS12_strings;
++ PKCS12_PBE_add;
++ PKCS8_add_keyusage;
++ PKCS12_get_attr_gen;
++ PKCS12_parse;
++ PKCS12_create;
++ i2d_PKCS12_bio;
++ i2d_PKCS12_fp;
++ d2i_PKCS12_bio;
++ d2i_PKCS12_fp;
++ i2d_PBEPARAM;
++ PBEPARAM_new;
++ d2i_PBEPARAM;
++ PBEPARAM_free;
++ i2d_PKCS8_PRIV_KEY_INFO;
++ PKCS8_PRIV_KEY_INFO_new;
++ d2i_PKCS8_PRIV_KEY_INFO;
++ PKCS8_PRIV_KEY_INFO_free;
++ EVP_PKCS82PKEY;
++ EVP_PKEY2PKCS8;
++ PKCS8_set_broken;
++ EVP_PBE_ALGOR_CipherInit;
++ EVP_PBE_alg_add;
++ PKCS5_pbe_set;
++ EVP_PBE_cleanup;
++ i2d_SXNET;
++ d2i_SXNET;
++ SXNET_new;
++ SXNET_free;
++ i2d_SXNETID;
++ d2i_SXNETID;
++ SXNETID_new;
++ SXNETID_free;
++ DSA_SIG_new;
++ DSA_SIG_free;
++ DSA_do_sign;
++ DSA_do_verify;
++ d2i_DSA_SIG;
++ i2d_DSA_SIG;
++ i2d_ASN1_VISIBLESTRING;
++ d2i_ASN1_VISIBLESTRING;
++ i2d_ASN1_UTF8STRING;
++ d2i_ASN1_UTF8STRING;
++ i2d_DIRECTORYSTRING;
++ d2i_DIRECTORYSTRING;
++ i2d_DISPLAYTEXT;
++ d2i_DISPLAYTEXT;
++ d2i_ASN1_SET_OF_X509;
++ i2d_ASN1_SET_OF_X509;
++ i2d_PBKDF2PARAM;
++ PBKDF2PARAM_new;
++ d2i_PBKDF2PARAM;
++ PBKDF2PARAM_free;
++ i2d_PBE2PARAM;
++ PBE2PARAM_new;
++ d2i_PBE2PARAM;
++ PBE2PARAM_free;
++ d2i_ASN1_SET_OF_GENERAL_NAME;
++ i2d_ASN1_SET_OF_GENERAL_NAME;
++ d2i_ASN1_SET_OF_SXNETID;
++ i2d_ASN1_SET_OF_SXNETID;
++ d2i_ASN1_SET_OF_POLICYQUALINFO;
++ i2d_ASN1_SET_OF_POLICYQUALINFO;
++ d2i_ASN1_SET_OF_POLICYINFO;
++ i2d_ASN1_SET_OF_POLICYINFO;
++ SXNET_add_id_asc;
++ SXNET_add_id_ulong;
++ SXNET_add_id_INTEGER;
++ SXNET_get_id_asc;
++ SXNET_get_id_ulong;
++ SXNET_get_id_INTEGER;
++ X509V3_set_conf_lhash;
++ i2d_CERTIFICATEPOLICIES;
++ CERTIFICATEPOLICIES_new;
++ CERTIFICATEPOLICIES_free;
++ d2i_CERTIFICATEPOLICIES;
++ i2d_POLICYINFO;
++ POLICYINFO_new;
++ d2i_POLICYINFO;
++ POLICYINFO_free;
++ i2d_POLICYQUALINFO;
++ POLICYQUALINFO_new;
++ d2i_POLICYQUALINFO;
++ POLICYQUALINFO_free;
++ i2d_USERNOTICE;
++ USERNOTICE_new;
++ d2i_USERNOTICE;
++ USERNOTICE_free;
++ i2d_NOTICEREF;
++ NOTICEREF_new;
++ d2i_NOTICEREF;
++ NOTICEREF_free;
++ X509V3_get_string;
++ X509V3_get_section;
++ X509V3_string_free;
++ X509V3_section_free;
++ X509V3_set_ctx;
++ s2i_ASN1_INTEGER;
++ CRYPTO_set_locked_mem_functions;
++ CRYPTO_get_locked_mem_functions;
++ CRYPTO_malloc_locked;
++ CRYPTO_free_locked;
++ BN_mod_exp2_mont;
++ ERR_get_error_line_data;
++ ERR_peek_error_line_data;
++ PKCS12_PBE_keyivgen;
++ X509_ALGOR_dup;
++ d2i_ASN1_SET_OF_DIST_POINT;
++ i2d_ASN1_SET_OF_DIST_POINT;
++ i2d_CRL_DIST_POINTS;
++ CRL_DIST_POINTS_new;
++ CRL_DIST_POINTS_free;
++ d2i_CRL_DIST_POINTS;
++ i2d_DIST_POINT;
++ DIST_POINT_new;
++ d2i_DIST_POINT;
++ DIST_POINT_free;
++ i2d_DIST_POINT_NAME;
++ DIST_POINT_NAME_new;
++ DIST_POINT_NAME_free;
++ d2i_DIST_POINT_NAME;
++ X509V3_add_value_uchar;
++ d2i_ASN1_SET_OF_X509_ATTRIBUTE;
++ i2d_ASN1_SET_OF_ASN1_TYPE;
++ d2i_ASN1_SET_OF_X509_EXTENSION;
++ d2i_ASN1_SET_OF_X509_NAME_ENTRY;
++ d2i_ASN1_SET_OF_ASN1_TYPE;
++ i2d_ASN1_SET_OF_X509_ATTRIBUTE;
++ i2d_ASN1_SET_OF_X509_EXTENSION;
++ i2d_ASN1_SET_OF_X509_NAME_ENTRY;
++ X509V3_EXT_i2d;
++ X509V3_EXT_val_prn;
++ X509V3_EXT_add_list;
++ EVP_CIPHER_type;
++ EVP_PBE_CipherInit;
++ X509V3_add_value_bool_nf;
++ d2i_ASN1_UINTEGER;
++ sk_value;
++ sk_num;
++ sk_set;
++ i2d_ASN1_SET_OF_X509_REVOKED;
++ sk_sort;
++ d2i_ASN1_SET_OF_X509_REVOKED;
++ i2d_ASN1_SET_OF_X509_ALGOR;
++ i2d_ASN1_SET_OF_X509_CRL;
++ d2i_ASN1_SET_OF_X509_ALGOR;
++ d2i_ASN1_SET_OF_X509_CRL;
++ i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO;
++ i2d_ASN1_SET_OF_PKCS7_RECIP_INFO;
++ d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO;
++ d2i_ASN1_SET_OF_PKCS7_RECIP_INFO;
++ PKCS5_PBE_add;
++ PEM_write_bio_PKCS8;
++ i2d_PKCS8_fp;
++ PEM_read_bio_PKCS8_PRIV_KEY_INFO;
++ PEM_read_bio_P8_PRIV_KEY_INFO;
++ d2i_PKCS8_bio;
++ d2i_PKCS8_PRIV_KEY_INFO_fp;
++ PEM_write_bio_PKCS8_PRIV_KEY_INFO;
++ PEM_write_bio_P8_PRIV_KEY_INFO;
++ PEM_read_PKCS8;
++ d2i_PKCS8_PRIV_KEY_INFO_bio;
++ d2i_PKCS8_fp;
++ PEM_write_PKCS8;
++ PEM_read_PKCS8_PRIV_KEY_INFO;
++ PEM_read_P8_PRIV_KEY_INFO;
++ PEM_read_bio_PKCS8;
++ PEM_write_PKCS8_PRIV_KEY_INFO;
++ PEM_write_P8_PRIV_KEY_INFO;
++ PKCS5_PBE_keyivgen;
++ i2d_PKCS8_bio;
++ i2d_PKCS8_PRIV_KEY_INFO_fp;
++ i2d_PKCS8_PRIV_KEY_INFO_bio;
++ BIO_s_bio;
++ PKCS5_pbe2_set;
++ PKCS5_PBKDF2_HMAC_SHA1;
++ PKCS5_v2_PBE_keyivgen;
++ PEM_write_bio_PKCS8PrivateKey;
++ PEM_write_PKCS8PrivateKey;
++ BIO_ctrl_get_read_request;
++ BIO_ctrl_pending;
++ BIO_ctrl_wpending;
++ BIO_new_bio_pair;
++ BIO_ctrl_get_write_guarantee;
++ CRYPTO_num_locks;
++ CONF_load_bio;
++ CONF_load_fp;
++ i2d_ASN1_SET_OF_ASN1_OBJECT;
++ d2i_ASN1_SET_OF_ASN1_OBJECT;
++ PKCS7_signatureVerify;
++ RSA_set_method;
++ RSA_get_method;
++ RSA_get_default_method;
++ RSA_check_key;
++ OBJ_obj2txt;
++ DSA_dup_DH;
++ X509_REQ_get_extensions;
++ X509_REQ_set_extension_nids;
++ BIO_nwrite;
++ X509_REQ_extension_nid;
++ BIO_nread;
++ X509_REQ_get_extension_nids;
++ BIO_nwrite0;
++ X509_REQ_add_extensions_nid;
++ BIO_nread0;
++ X509_REQ_add_extensions;
++ BIO_new_mem_buf;
++ DH_set_ex_data;
++ DH_set_method;
++ DSA_OpenSSL;
++ DH_get_ex_data;
++ DH_get_ex_new_index;
++ DSA_new_method;
++ DH_new_method;
++ DH_OpenSSL;
++ DSA_get_ex_new_index;
++ DH_get_default_method;
++ DSA_set_ex_data;
++ DH_set_default_method;
++ DSA_get_ex_data;
++ X509V3_EXT_REQ_add_conf;
++ NETSCAPE_SPKI_print;
++ NETSCAPE_SPKI_set_pubkey;
++ NETSCAPE_SPKI_b64_encode;
++ NETSCAPE_SPKI_get_pubkey;
++ NETSCAPE_SPKI_b64_decode;
++ UTF8_putc;
++ UTF8_getc;
++ RSA_null_method;
++ ASN1_tag2str;
++ BIO_ctrl_reset_read_request;
++ DISPLAYTEXT_new;
++ ASN1_GENERALIZEDTIME_free;
++ X509_REVOKED_get_ext_d2i;
++ X509_set_ex_data;
++ X509_reject_set_bit_asc;
++ X509_NAME_add_entry_by_txt;
++ X509_NAME_add_entry_by_NID;
++ X509_PURPOSE_get0;
++ PEM_read_X509_AUX;
++ d2i_AUTHORITY_INFO_ACCESS;
++ PEM_write_PUBKEY;
++ ACCESS_DESCRIPTION_new;
++ X509_CERT_AUX_free;
++ d2i_ACCESS_DESCRIPTION;
++ X509_trust_clear;
++ X509_TRUST_add;
++ ASN1_VISIBLESTRING_new;
++ X509_alias_set1;
++ ASN1_PRINTABLESTRING_free;
++ EVP_PKEY_get1_DSA;
++ ASN1_BMPSTRING_new;
++ ASN1_mbstring_copy;
++ ASN1_UTF8STRING_new;
++ DSA_get_default_method;
++ i2d_ASN1_SET_OF_ACCESS_DESCRIPTION;
++ ASN1_T61STRING_free;
++ DSA_set_method;
++ X509_get_ex_data;
++ ASN1_STRING_type;
++ X509_PURPOSE_get_by_sname;
++ ASN1_TIME_free;
++ ASN1_OCTET_STRING_cmp;
++ ASN1_BIT_STRING_new;
++ X509_get_ext_d2i;
++ PEM_read_bio_X509_AUX;
++ ASN1_STRING_set_default_mask_asc;
++ ASN1_STRING_set_def_mask_asc;
++ PEM_write_bio_RSA_PUBKEY;
++ ASN1_INTEGER_cmp;
++ d2i_RSA_PUBKEY_fp;
++ X509_trust_set_bit_asc;
++ PEM_write_bio_DSA_PUBKEY;
++ X509_STORE_CTX_free;
++ EVP_PKEY_set1_DSA;
++ i2d_DSA_PUBKEY_fp;
++ X509_load_cert_crl_file;
++ ASN1_TIME_new;
++ i2d_RSA_PUBKEY;
++ X509_STORE_CTX_purpose_inherit;
++ PEM_read_RSA_PUBKEY;
++ d2i_X509_AUX;
++ i2d_DSA_PUBKEY;
++ X509_CERT_AUX_print;
++ PEM_read_DSA_PUBKEY;
++ i2d_RSA_PUBKEY_bio;
++ ASN1_BIT_STRING_num_asc;
++ i2d_PUBKEY;
++ ASN1_UTCTIME_free;
++ DSA_set_default_method;
++ X509_PURPOSE_get_by_id;
++ ACCESS_DESCRIPTION_free;
++ PEM_read_bio_PUBKEY;
++ ASN1_STRING_set_by_NID;
++ X509_PURPOSE_get_id;
++ DISPLAYTEXT_free;
++ OTHERNAME_new;
++ X509_CERT_AUX_new;
++ X509_TRUST_cleanup;
++ X509_NAME_add_entry_by_OBJ;
++ X509_CRL_get_ext_d2i;
++ X509_PURPOSE_get0_name;
++ PEM_read_PUBKEY;
++ i2d_DSA_PUBKEY_bio;
++ i2d_OTHERNAME;
++ ASN1_OCTET_STRING_free;
++ ASN1_BIT_STRING_set_asc;
++ X509_get_ex_new_index;
++ ASN1_STRING_TABLE_cleanup;
++ X509_TRUST_get_by_id;
++ X509_PURPOSE_get_trust;
++ ASN1_STRING_length;
++ d2i_ASN1_SET_OF_ACCESS_DESCRIPTION;
++ ASN1_PRINTABLESTRING_new;
++ X509V3_get_d2i;
++ ASN1_ENUMERATED_free;
++ i2d_X509_CERT_AUX;
++ X509_STORE_CTX_set_trust;
++ ASN1_STRING_set_default_mask;
++ X509_STORE_CTX_new;
++ EVP_PKEY_get1_RSA;
++ DIRECTORYSTRING_free;
++ PEM_write_X509_AUX;
++ ASN1_OCTET_STRING_set;
++ d2i_DSA_PUBKEY_fp;
++ d2i_RSA_PUBKEY;
++ X509_TRUST_get0_name;
++ X509_TRUST_get0;
++ AUTHORITY_INFO_ACCESS_free;
++ ASN1_IA5STRING_new;
++ d2i_DSA_PUBKEY;
++ X509_check_purpose;
++ ASN1_ENUMERATED_new;
++ d2i_RSA_PUBKEY_bio;
++ d2i_PUBKEY;
++ X509_TRUST_get_trust;
++ X509_TRUST_get_flags;
++ ASN1_BMPSTRING_free;
++ ASN1_T61STRING_new;
++ ASN1_UTCTIME_new;
++ i2d_AUTHORITY_INFO_ACCESS;
++ EVP_PKEY_set1_RSA;
++ X509_STORE_CTX_set_purpose;
++ ASN1_IA5STRING_free;
++ PEM_write_bio_X509_AUX;
++ X509_PURPOSE_get_count;
++ CRYPTO_add_info;
++ X509_NAME_ENTRY_create_by_txt;
++ ASN1_STRING_get_default_mask;
++ X509_alias_get0;
++ ASN1_STRING_data;
++ i2d_ACCESS_DESCRIPTION;
++ X509_trust_set_bit;
++ ASN1_BIT_STRING_free;
++ PEM_read_bio_RSA_PUBKEY;
++ X509_add1_reject_object;
++ X509_check_trust;
++ PEM_read_bio_DSA_PUBKEY;
++ X509_PURPOSE_add;
++ ASN1_STRING_TABLE_get;
++ ASN1_UTF8STRING_free;
++ d2i_DSA_PUBKEY_bio;
++ PEM_write_RSA_PUBKEY;
++ d2i_OTHERNAME;
++ X509_reject_set_bit;
++ PEM_write_DSA_PUBKEY;
++ X509_PURPOSE_get0_sname;
++ EVP_PKEY_set1_DH;
++ ASN1_OCTET_STRING_dup;
++ ASN1_BIT_STRING_set;
++ X509_TRUST_get_count;
++ ASN1_INTEGER_free;
++ OTHERNAME_free;
++ i2d_RSA_PUBKEY_fp;
++ ASN1_INTEGER_dup;
++ d2i_X509_CERT_AUX;
++ PEM_write_bio_PUBKEY;
++ ASN1_VISIBLESTRING_free;
++ X509_PURPOSE_cleanup;
++ ASN1_mbstring_ncopy;
++ ASN1_GENERALIZEDTIME_new;
++ EVP_PKEY_get1_DH;
++ ASN1_OCTET_STRING_new;
++ ASN1_INTEGER_new;
++ i2d_X509_AUX;
++ ASN1_BIT_STRING_name_print;
++ X509_cmp;
++ ASN1_STRING_length_set;
++ DIRECTORYSTRING_new;
++ X509_add1_trust_object;
++ PKCS12_newpass;
++ SMIME_write_PKCS7;
++ SMIME_read_PKCS7;
++ DES_set_key_checked;
++ PKCS7_verify;
++ PKCS7_encrypt;
++ DES_set_key_unchecked;
++ SMIME_crlf_copy;
++ i2d_ASN1_PRINTABLESTRING;
++ PKCS7_get0_signers;
++ PKCS7_decrypt;
++ SMIME_text;
++ PKCS7_simple_smimecap;
++ PKCS7_get_smimecap;
++ PKCS7_sign;
++ PKCS7_add_attrib_smimecap;
++ CRYPTO_dbg_set_options;
++ CRYPTO_remove_all_info;
++ CRYPTO_get_mem_debug_functions;
++ CRYPTO_is_mem_check_on;
++ CRYPTO_set_mem_debug_functions;
++ CRYPTO_pop_info;
++ CRYPTO_push_info_;
++ CRYPTO_set_mem_debug_options;
++ PEM_write_PKCS8PrivateKey_nid;
++ PEM_write_bio_PKCS8PrivateKey_nid;
++ PEM_write_bio_PKCS8PrivKey_nid;
++ d2i_PKCS8PrivateKey_bio;
++ ASN1_NULL_free;
++ d2i_ASN1_NULL;
++ ASN1_NULL_new;
++ i2d_PKCS8PrivateKey_bio;
++ i2d_PKCS8PrivateKey_fp;
++ i2d_ASN1_NULL;
++ i2d_PKCS8PrivateKey_nid_fp;
++ d2i_PKCS8PrivateKey_fp;
++ i2d_PKCS8PrivateKey_nid_bio;
++ i2d_PKCS8PrivateKeyInfo_fp;
++ i2d_PKCS8PrivateKeyInfo_bio;
++ PEM_cb;
++ i2d_PrivateKey_fp;
++ d2i_PrivateKey_bio;
++ d2i_PrivateKey_fp;
++ i2d_PrivateKey_bio;
++ X509_reject_clear;
++ X509_TRUST_set_default;
++ d2i_AutoPrivateKey;
++ X509_ATTRIBUTE_get0_type;
++ X509_ATTRIBUTE_set1_data;
++ X509at_get_attr;
++ X509at_get_attr_count;
++ X509_ATTRIBUTE_create_by_NID;
++ X509_ATTRIBUTE_set1_object;
++ X509_ATTRIBUTE_count;
++ X509_ATTRIBUTE_create_by_OBJ;
++ X509_ATTRIBUTE_get0_object;
++ X509at_get_attr_by_NID;
++ X509at_add1_attr;
++ X509_ATTRIBUTE_get0_data;
++ X509at_delete_attr;
++ X509at_get_attr_by_OBJ;
++ RAND_add;
++ BIO_number_written;
++ BIO_number_read;
++ X509_STORE_CTX_get1_chain;
++ ERR_load_RAND_strings;
++ RAND_pseudo_bytes;
++ X509_REQ_get_attr_by_NID;
++ X509_REQ_get_attr;
++ X509_REQ_add1_attr_by_NID;
++ X509_REQ_get_attr_by_OBJ;
++ X509at_add1_attr_by_NID;
++ X509_REQ_add1_attr_by_OBJ;
++ X509_REQ_get_attr_count;
++ X509_REQ_add1_attr;
++ X509_REQ_delete_attr;
++ X509at_add1_attr_by_OBJ;
++ X509_REQ_add1_attr_by_txt;
++ X509_ATTRIBUTE_create_by_txt;
++ X509at_add1_attr_by_txt;
++ BN_pseudo_rand;
++ BN_is_prime_fasttest;
++ BN_CTX_end;
++ BN_CTX_start;
++ BN_CTX_get;
++ EVP_PKEY2PKCS8_broken;
++ ASN1_STRING_TABLE_add;
++ CRYPTO_dbg_get_options;
++ AUTHORITY_INFO_ACCESS_new;
++ CRYPTO_get_mem_debug_options;
++ DES_crypt;
++ PEM_write_bio_X509_REQ_NEW;
++ PEM_write_X509_REQ_NEW;
++ BIO_callback_ctrl;
++ RAND_egd;
++ RAND_status;
++ bn_dump1;
++ DES_check_key_parity;
++ lh_num_items;
++ RAND_event;
++ DSO_new;
++ DSO_new_method;
++ DSO_free;
++ DSO_flags;
++ DSO_up;
++ DSO_set_default_method;
++ DSO_get_default_method;
++ DSO_get_method;
++ DSO_set_method;
++ DSO_load;
++ DSO_bind_var;
++ DSO_METHOD_null;
++ DSO_METHOD_openssl;
++ DSO_METHOD_dlfcn;
++ DSO_METHOD_win32;
++ ERR_load_DSO_strings;
++ DSO_METHOD_dl;
++ NCONF_load;
++ NCONF_load_fp;
++ NCONF_new;
++ NCONF_get_string;
++ NCONF_free;
++ NCONF_get_number;
++ CONF_dump_fp;
++ NCONF_load_bio;
++ NCONF_dump_fp;
++ NCONF_get_section;
++ NCONF_dump_bio;
++ CONF_dump_bio;
++ NCONF_free_data;
++ CONF_set_default_method;
++ ERR_error_string_n;
++ BIO_snprintf;
++ DSO_ctrl;
++ i2d_ASN1_SET_OF_ASN1_INTEGER;
++ i2d_ASN1_SET_OF_PKCS12_SAFEBAG;
++ i2d_ASN1_SET_OF_PKCS7;
++ BIO_vfree;
++ d2i_ASN1_SET_OF_ASN1_INTEGER;
++ d2i_ASN1_SET_OF_PKCS12_SAFEBAG;
++ ASN1_UTCTIME_get;
++ X509_REQ_digest;
++ X509_CRL_digest;
++ d2i_ASN1_SET_OF_PKCS7;
++ EVP_CIPHER_CTX_set_key_length;
++ EVP_CIPHER_CTX_ctrl;
++ BN_mod_exp_mont_word;
++ RAND_egd_bytes;
++ X509_REQ_get1_email;
++ X509_get1_email;
++ X509_email_free;
++ i2d_RSA_NET;
++ d2i_RSA_NET_2;
++ d2i_RSA_NET;
++ DSO_bind_func;
++ CRYPTO_get_new_dynlockid;
++ sk_new_null;
++ CRYPTO_set_dynlock_destroy_callback;
++ CRYPTO_set_dynlock_destroy_cb;
++ CRYPTO_destroy_dynlockid;
++ CRYPTO_set_dynlock_size;
++ CRYPTO_set_dynlock_create_callback;
++ CRYPTO_set_dynlock_create_cb;
++ CRYPTO_set_dynlock_lock_callback;
++ CRYPTO_set_dynlock_lock_cb;
++ CRYPTO_get_dynlock_lock_callback;
++ CRYPTO_get_dynlock_lock_cb;
++ CRYPTO_get_dynlock_destroy_callback;
++ CRYPTO_get_dynlock_destroy_cb;
++ CRYPTO_get_dynlock_value;
++ CRYPTO_get_dynlock_create_callback;
++ CRYPTO_get_dynlock_create_cb;
++ c2i_ASN1_BIT_STRING;
++ i2c_ASN1_BIT_STRING;
++ RAND_poll;
++ c2i_ASN1_INTEGER;
++ i2c_ASN1_INTEGER;
++ BIO_dump_indent;
++ ASN1_parse_dump;
++ c2i_ASN1_OBJECT;
++ X509_NAME_print_ex_fp;
++ ASN1_STRING_print_ex_fp;
++ X509_NAME_print_ex;
++ ASN1_STRING_print_ex;
++ MD4;
++ MD4_Transform;
++ MD4_Final;
++ MD4_Update;
++ MD4_Init;
++ EVP_md4;
++ i2d_PUBKEY_bio;
++ i2d_PUBKEY_fp;
++ d2i_PUBKEY_bio;
++ ASN1_STRING_to_UTF8;
++ BIO_vprintf;
++ BIO_vsnprintf;
++ d2i_PUBKEY_fp;
++ X509_cmp_time;
++ X509_STORE_CTX_set_time;
++ X509_STORE_CTX_get1_issuer;
++ X509_OBJECT_retrieve_match;
++ X509_OBJECT_idx_by_subject;
++ X509_STORE_CTX_set_flags;
++ X509_STORE_CTX_trusted_stack;
++ X509_time_adj;
++ X509_check_issued;
++ ASN1_UTCTIME_cmp_time_t;
++ DES_set_weak_key_flag;
++ DES_check_key;
++ DES_rw_mode;
++ RSA_PKCS1_RSAref;
++ X509_keyid_set1;
++ BIO_next;
++ DSO_METHOD_vms;
++ BIO_f_linebuffer;
++ BN_bntest_rand;
++ OPENSSL_issetugid;
++ BN_rand_range;
++ ERR_load_ENGINE_strings;
++ ENGINE_set_DSA;
++ ENGINE_get_finish_function;
++ ENGINE_get_default_RSA;
++ ENGINE_get_BN_mod_exp;
++ DSA_get_default_openssl_method;
++ ENGINE_set_DH;
++ ENGINE_set_def_BN_mod_exp_crt;
++ ENGINE_set_default_BN_mod_exp_crt;
++ ENGINE_init;
++ DH_get_default_openssl_method;
++ RSA_set_default_openssl_method;
++ ENGINE_finish;
++ ENGINE_load_public_key;
++ ENGINE_get_DH;
++ ENGINE_ctrl;
++ ENGINE_get_init_function;
++ ENGINE_set_init_function;
++ ENGINE_set_default_DSA;
++ ENGINE_get_name;
++ ENGINE_get_last;
++ ENGINE_get_prev;
++ ENGINE_get_default_DH;
++ ENGINE_get_RSA;
++ ENGINE_set_default;
++ ENGINE_get_RAND;
++ ENGINE_get_first;
++ ENGINE_by_id;
++ ENGINE_set_finish_function;
++ ENGINE_get_def_BN_mod_exp_crt;
++ ENGINE_get_default_BN_mod_exp_crt;
++ RSA_get_default_openssl_method;
++ ENGINE_set_RSA;
++ ENGINE_load_private_key;
++ ENGINE_set_default_RAND;
++ ENGINE_set_BN_mod_exp;
++ ENGINE_remove;
++ ENGINE_free;
++ ENGINE_get_BN_mod_exp_crt;
++ ENGINE_get_next;
++ ENGINE_set_name;
++ ENGINE_get_default_DSA;
++ ENGINE_set_default_BN_mod_exp;
++ ENGINE_set_default_RSA;
++ ENGINE_get_default_RAND;
++ ENGINE_get_default_BN_mod_exp;
++ ENGINE_set_RAND;
++ ENGINE_set_id;
++ ENGINE_set_BN_mod_exp_crt;
++ ENGINE_set_default_DH;
++ ENGINE_new;
++ ENGINE_get_id;
++ DSA_set_default_openssl_method;
++ ENGINE_add;
++ DH_set_default_openssl_method;
++ ENGINE_get_DSA;
++ ENGINE_get_ctrl_function;
++ ENGINE_set_ctrl_function;
++ BN_pseudo_rand_range;
++ X509_STORE_CTX_set_verify_cb;
++ ERR_load_COMP_strings;
++ PKCS12_item_decrypt_d2i;
++ ASN1_UTF8STRING_it;
++ ASN1_UTF8STRING_it;
++ ENGINE_unregister_ciphers;
++ ENGINE_get_ciphers;
++ d2i_OCSP_BASICRESP;
++ KRB5_CHECKSUM_it;
++ KRB5_CHECKSUM_it;
++ EC_POINT_add;
++ ASN1_item_ex_i2d;
++ OCSP_CERTID_it;
++ OCSP_CERTID_it;
++ d2i_OCSP_RESPBYTES;
++ X509V3_add1_i2d;
++ PKCS7_ENVELOPE_it;
++ PKCS7_ENVELOPE_it;
++ UI_add_input_boolean;
++ ENGINE_unregister_RSA;
++ X509V3_EXT_nconf;
++ ASN1_GENERALSTRING_free;
++ d2i_OCSP_CERTSTATUS;
++ X509_REVOKED_set_serialNumber;
++ X509_print_ex;
++ OCSP_ONEREQ_get1_ext_d2i;
++ ENGINE_register_all_RAND;
++ ENGINE_load_dynamic;
++ PBKDF2PARAM_it;
++ PBKDF2PARAM_it;
++ EXTENDED_KEY_USAGE_new;
++ EC_GROUP_clear_free;
++ OCSP_sendreq_bio;
++ ASN1_item_digest;
++ OCSP_BASICRESP_delete_ext;
++ OCSP_SIGNATURE_it;
++ OCSP_SIGNATURE_it;
++ X509_CRL_it;
++ X509_CRL_it;
++ OCSP_BASICRESP_add_ext;
++ KRB5_ENCKEY_it;
++ KRB5_ENCKEY_it;
++ UI_method_set_closer;
++ X509_STORE_set_purpose;
++ i2d_ASN1_GENERALSTRING;
++ OCSP_response_status;
++ i2d_OCSP_SERVICELOC;
++ ENGINE_get_digest_engine;
++ EC_GROUP_set_curve_GFp;
++ OCSP_REQUEST_get_ext_by_OBJ;
++ _ossl_old_des_random_key;
++ ASN1_T61STRING_it;
++ ASN1_T61STRING_it;
++ EC_GROUP_method_of;
++ i2d_KRB5_APREQ;
++ _ossl_old_des_encrypt;
++ ASN1_PRINTABLE_new;
++ HMAC_Init_ex;
++ d2i_KRB5_AUTHENT;
++ OCSP_archive_cutoff_new;
++ EC_POINT_set_Jprojective_coordinates_GFp;
++ EC_POINT_set_Jproj_coords_GFp;
++ _ossl_old_des_is_weak_key;
++ OCSP_BASICRESP_get_ext_by_OBJ;
++ EC_POINT_oct2point;
++ OCSP_SINGLERESP_get_ext_count;
++ UI_ctrl;
++ _shadow_DES_rw_mode;
++ _shadow_DES_rw_mode;
++ asn1_do_adb;
++ ASN1_template_i2d;
++ ENGINE_register_DH;
++ UI_construct_prompt;
++ X509_STORE_set_trust;
++ UI_dup_input_string;
++ d2i_KRB5_APREQ;
++ EVP_MD_CTX_copy_ex;
++ OCSP_request_is_signed;
++ i2d_OCSP_REQINFO;
++ KRB5_ENCKEY_free;
++ OCSP_resp_get0;
++ GENERAL_NAME_it;
++ GENERAL_NAME_it;
++ ASN1_GENERALIZEDTIME_it;
++ ASN1_GENERALIZEDTIME_it;
++ X509_STORE_set_flags;
++ EC_POINT_set_compressed_coordinates_GFp;
++ EC_POINT_set_compr_coords_GFp;
++ OCSP_response_status_str;
++ d2i_OCSP_REVOKEDINFO;
++ OCSP_basic_add1_cert;
++ ERR_get_implementation;
++ EVP_CipherFinal_ex;
++ OCSP_CERTSTATUS_new;
++ CRYPTO_cleanup_all_ex_data;
++ OCSP_resp_find;
++ BN_nnmod;
++ X509_CRL_sort;
++ X509_REVOKED_set_revocationDate;
++ ENGINE_register_RAND;
++ OCSP_SERVICELOC_new;
++ EC_POINT_set_affine_coordinates_GFp;
++ EC_POINT_set_affine_coords_GFp;
++ _ossl_old_des_options;
++ SXNET_it;
++ SXNET_it;
++ UI_dup_input_boolean;
++ PKCS12_add_CSPName_asc;
++ EC_POINT_is_at_infinity;
++ ENGINE_load_cryptodev;
++ DSO_convert_filename;
++ POLICYQUALINFO_it;
++ POLICYQUALINFO_it;
++ ENGINE_register_ciphers;
++ BN_mod_lshift_quick;
++ DSO_set_filename;
++ ASN1_item_free;
++ KRB5_TKTBODY_free;
++ AUTHORITY_KEYID_it;
++ AUTHORITY_KEYID_it;
++ KRB5_APREQBODY_new;
++ X509V3_EXT_REQ_add_nconf;
++ ENGINE_ctrl_cmd_string;
++ i2d_OCSP_RESPDATA;
++ EVP_MD_CTX_init;
++ EXTENDED_KEY_USAGE_free;
++ PKCS7_ATTR_SIGN_it;
++ PKCS7_ATTR_SIGN_it;
++ UI_add_error_string;
++ KRB5_CHECKSUM_free;
++ OCSP_REQUEST_get_ext;
++ ENGINE_load_ubsec;
++ ENGINE_register_all_digests;
++ PKEY_USAGE_PERIOD_it;
++ PKEY_USAGE_PERIOD_it;
++ PKCS12_unpack_authsafes;
++ ASN1_item_unpack;
++ NETSCAPE_SPKAC_it;
++ NETSCAPE_SPKAC_it;
++ X509_REVOKED_it;
++ X509_REVOKED_it;
++ ASN1_STRING_encode;
++ EVP_aes_128_ecb;
++ KRB5_AUTHENT_free;
++ OCSP_BASICRESP_get_ext_by_critical;
++ OCSP_BASICRESP_get_ext_by_crit;
++ OCSP_cert_status_str;
++ d2i_OCSP_REQUEST;
++ UI_dup_info_string;
++ _ossl_old_des_xwhite_in2out;
++ PKCS12_it;
++ PKCS12_it;
++ OCSP_SINGLERESP_get_ext_by_critical;
++ OCSP_SINGLERESP_get_ext_by_crit;
++ OCSP_CERTSTATUS_free;
++ _ossl_old_des_crypt;
++ ASN1_item_i2d;
++ EVP_DecryptFinal_ex;
++ ENGINE_load_openssl;
++ ENGINE_get_cmd_defns;
++ ENGINE_set_load_privkey_function;
++ ENGINE_set_load_privkey_fn;
++ EVP_EncryptFinal_ex;
++ ENGINE_set_default_digests;
++ X509_get0_pubkey_bitstr;
++ asn1_ex_i2c;
++ ENGINE_register_RSA;
++ ENGINE_unregister_DSA;
++ _ossl_old_des_key_sched;
++ X509_EXTENSION_it;
++ X509_EXTENSION_it;
++ i2d_KRB5_AUTHENT;
++ SXNETID_it;
++ SXNETID_it;
++ d2i_OCSP_SINGLERESP;
++ EDIPARTYNAME_new;
++ PKCS12_certbag2x509;
++ _ossl_old_des_ofb64_encrypt;
++ d2i_EXTENDED_KEY_USAGE;
++ ERR_print_errors_cb;
++ ENGINE_set_ciphers;
++ d2i_KRB5_APREQBODY;
++ UI_method_get_flusher;
++ X509_PUBKEY_it;
++ X509_PUBKEY_it;
++ _ossl_old_des_enc_read;
++ PKCS7_ENCRYPT_it;
++ PKCS7_ENCRYPT_it;
++ i2d_OCSP_RESPONSE;
++ EC_GROUP_get_cofactor;
++ PKCS12_unpack_p7data;
++ d2i_KRB5_AUTHDATA;
++ OCSP_copy_nonce;
++ KRB5_AUTHDATA_new;
++ OCSP_RESPDATA_new;
++ EC_GFp_mont_method;
++ OCSP_REVOKEDINFO_free;
++ UI_get_ex_data;
++ KRB5_APREQBODY_free;
++ EC_GROUP_get0_generator;
++ UI_get_default_method;
++ X509V3_set_nconf;
++ PKCS12_item_i2d_encrypt;
++ X509_add1_ext_i2d;
++ PKCS7_SIGNER_INFO_it;
++ PKCS7_SIGNER_INFO_it;
++ KRB5_PRINCNAME_new;
++ PKCS12_SAFEBAG_it;
++ PKCS12_SAFEBAG_it;
++ EC_GROUP_get_order;
++ d2i_OCSP_RESPID;
++ OCSP_request_verify;
++ NCONF_get_number_e;
++ _ossl_old_des_decrypt3;
++ X509_signature_print;
++ OCSP_SINGLERESP_free;
++ ENGINE_load_builtin_engines;
++ i2d_OCSP_ONEREQ;
++ OCSP_REQUEST_add_ext;
++ OCSP_RESPBYTES_new;
++ EVP_MD_CTX_create;
++ OCSP_resp_find_status;
++ X509_ALGOR_it;
++ X509_ALGOR_it;
++ ASN1_TIME_it;
++ ASN1_TIME_it;
++ OCSP_request_set1_name;
++ OCSP_ONEREQ_get_ext_count;
++ UI_get0_result;
++ PKCS12_AUTHSAFES_it;
++ PKCS12_AUTHSAFES_it;
++ EVP_aes_256_ecb;
++ PKCS12_pack_authsafes;
++ ASN1_IA5STRING_it;
++ ASN1_IA5STRING_it;
++ UI_get_input_flags;
++ EC_GROUP_set_generator;
++ _ossl_old_des_string_to_2keys;
++ OCSP_CERTID_free;
++ X509_CERT_AUX_it;
++ X509_CERT_AUX_it;
++ CERTIFICATEPOLICIES_it;
++ CERTIFICATEPOLICIES_it;
++ _ossl_old_des_ede3_cbc_encrypt;
++ RAND_set_rand_engine;
++ DSO_get_loaded_filename;
++ X509_ATTRIBUTE_it;
++ X509_ATTRIBUTE_it;
++ OCSP_ONEREQ_get_ext_by_NID;
++ PKCS12_decrypt_skey;
++ KRB5_AUTHENT_it;
++ KRB5_AUTHENT_it;
++ UI_dup_error_string;
++ RSAPublicKey_it;
++ RSAPublicKey_it;
++ i2d_OCSP_REQUEST;
++ PKCS12_x509crl2certbag;
++ OCSP_SERVICELOC_it;
++ OCSP_SERVICELOC_it;
++ ASN1_item_sign;
++ X509_CRL_set_issuer_name;
++ OBJ_NAME_do_all_sorted;
++ i2d_OCSP_BASICRESP;
++ i2d_OCSP_RESPBYTES;
++ PKCS12_unpack_p7encdata;
++ HMAC_CTX_init;
++ ENGINE_get_digest;
++ OCSP_RESPONSE_print;
++ KRB5_TKTBODY_it;
++ KRB5_TKTBODY_it;
++ ACCESS_DESCRIPTION_it;
++ ACCESS_DESCRIPTION_it;
++ PKCS7_ISSUER_AND_SERIAL_it;
++ PKCS7_ISSUER_AND_SERIAL_it;
++ PBE2PARAM_it;
++ PBE2PARAM_it;
++ PKCS12_certbag2x509crl;
++ PKCS7_SIGNED_it;
++ PKCS7_SIGNED_it;
++ ENGINE_get_cipher;
++ i2d_OCSP_CRLID;
++ OCSP_SINGLERESP_new;
++ ENGINE_cmd_is_executable;
++ RSA_up_ref;
++ ASN1_GENERALSTRING_it;
++ ASN1_GENERALSTRING_it;
++ ENGINE_register_DSA;
++ X509V3_EXT_add_nconf_sk;
++ ENGINE_set_load_pubkey_function;
++ PKCS8_decrypt;
++ PEM_bytes_read_bio;
++ DIRECTORYSTRING_it;
++ DIRECTORYSTRING_it;
++ d2i_OCSP_CRLID;
++ EC_POINT_is_on_curve;
++ CRYPTO_set_locked_mem_ex_functions;
++ CRYPTO_set_locked_mem_ex_funcs;
++ d2i_KRB5_CHECKSUM;
++ ASN1_item_dup;
++ X509_it;
++ X509_it;
++ BN_mod_add;
++ KRB5_AUTHDATA_free;
++ _ossl_old_des_cbc_cksum;
++ ASN1_item_verify;
++ CRYPTO_set_mem_ex_functions;
++ EC_POINT_get_Jprojective_coordinates_GFp;
++ EC_POINT_get_Jproj_coords_GFp;
++ ZLONG_it;
++ ZLONG_it;
++ CRYPTO_get_locked_mem_ex_functions;
++ CRYPTO_get_locked_mem_ex_funcs;
++ ASN1_TIME_check;
++ UI_get0_user_data;
++ HMAC_CTX_cleanup;
++ DSA_up_ref;
++ _ossl_old_des_ede3_cfb64_encrypt;
++ _ossl_odes_ede3_cfb64_encrypt;
++ ASN1_BMPSTRING_it;
++ ASN1_BMPSTRING_it;
++ ASN1_tag2bit;
++ UI_method_set_flusher;
++ X509_ocspid_print;
++ KRB5_ENCDATA_it;
++ KRB5_ENCDATA_it;
++ ENGINE_get_load_pubkey_function;
++ UI_add_user_data;
++ OCSP_REQUEST_delete_ext;
++ UI_get_method;
++ OCSP_ONEREQ_free;
++ ASN1_PRINTABLESTRING_it;
++ ASN1_PRINTABLESTRING_it;
++ X509_CRL_set_nextUpdate;
++ OCSP_REQUEST_it;
++ OCSP_REQUEST_it;
++ OCSP_BASICRESP_it;
++ OCSP_BASICRESP_it;
++ AES_ecb_encrypt;
++ BN_mod_sqr;
++ NETSCAPE_CERT_SEQUENCE_it;
++ NETSCAPE_CERT_SEQUENCE_it;
++ GENERAL_NAMES_it;
++ GENERAL_NAMES_it;
++ AUTHORITY_INFO_ACCESS_it;
++ AUTHORITY_INFO_ACCESS_it;
++ ASN1_FBOOLEAN_it;
++ ASN1_FBOOLEAN_it;
++ UI_set_ex_data;
++ _ossl_old_des_string_to_key;
++ ENGINE_register_all_RSA;
++ d2i_KRB5_PRINCNAME;
++ OCSP_RESPBYTES_it;
++ OCSP_RESPBYTES_it;
++ X509_CINF_it;
++ X509_CINF_it;
++ ENGINE_unregister_digests;
++ d2i_EDIPARTYNAME;
++ d2i_OCSP_SERVICELOC;
++ ENGINE_get_digests;
++ _ossl_old_des_set_odd_parity;
++ OCSP_RESPDATA_free;
++ d2i_KRB5_TICKET;
++ OTHERNAME_it;
++ OTHERNAME_it;
++ EVP_MD_CTX_cleanup;
++ d2i_ASN1_GENERALSTRING;
++ X509_CRL_set_version;
++ BN_mod_sub;
++ OCSP_SINGLERESP_get_ext_by_NID;
++ ENGINE_get_ex_new_index;
++ OCSP_REQUEST_free;
++ OCSP_REQUEST_add1_ext_i2d;
++ X509_VAL_it;
++ X509_VAL_it;
++ EC_POINTs_make_affine;
++ EC_POINT_mul;
++ X509V3_EXT_add_nconf;
++ X509_TRUST_set;
++ X509_CRL_add1_ext_i2d;
++ _ossl_old_des_fcrypt;
++ DISPLAYTEXT_it;
++ DISPLAYTEXT_it;
++ X509_CRL_set_lastUpdate;
++ OCSP_BASICRESP_free;
++ OCSP_BASICRESP_add1_ext_i2d;
++ d2i_KRB5_AUTHENTBODY;
++ CRYPTO_set_ex_data_implementation;
++ CRYPTO_set_ex_data_impl;
++ KRB5_ENCDATA_new;
++ DSO_up_ref;
++ OCSP_crl_reason_str;
++ UI_get0_result_string;
++ ASN1_GENERALSTRING_new;
++ X509_SIG_it;
++ X509_SIG_it;
++ ERR_set_implementation;
++ ERR_load_EC_strings;
++ UI_get0_action_string;
++ OCSP_ONEREQ_get_ext;
++ EC_POINT_method_of;
++ i2d_KRB5_APREQBODY;
++ _ossl_old_des_ecb3_encrypt;
++ CRYPTO_get_mem_ex_functions;
++ ENGINE_get_ex_data;
++ UI_destroy_method;
++ ASN1_item_i2d_bio;
++ OCSP_ONEREQ_get_ext_by_OBJ;
++ ASN1_primitive_new;
++ ASN1_PRINTABLE_it;
++ ASN1_PRINTABLE_it;
++ EVP_aes_192_ecb;
++ OCSP_SIGNATURE_new;
++ LONG_it;
++ LONG_it;
++ ASN1_VISIBLESTRING_it;
++ ASN1_VISIBLESTRING_it;
++ OCSP_SINGLERESP_add1_ext_i2d;
++ d2i_OCSP_CERTID;
++ ASN1_item_d2i_fp;
++ CRL_DIST_POINTS_it;
++ CRL_DIST_POINTS_it;
++ GENERAL_NAME_print;
++ OCSP_SINGLERESP_delete_ext;
++ PKCS12_SAFEBAGS_it;
++ PKCS12_SAFEBAGS_it;
++ d2i_OCSP_SIGNATURE;
++ OCSP_request_add1_nonce;
++ ENGINE_set_cmd_defns;
++ OCSP_SERVICELOC_free;
++ EC_GROUP_free;
++ ASN1_BIT_STRING_it;
++ ASN1_BIT_STRING_it;
++ X509_REQ_it;
++ X509_REQ_it;
++ _ossl_old_des_cbc_encrypt;
++ ERR_unload_strings;
++ PKCS7_SIGN_ENVELOPE_it;
++ PKCS7_SIGN_ENVELOPE_it;
++ EDIPARTYNAME_free;
++ OCSP_REQINFO_free;
++ EC_GROUP_new_curve_GFp;
++ OCSP_REQUEST_get1_ext_d2i;
++ PKCS12_item_pack_safebag;
++ asn1_ex_c2i;
++ ENGINE_register_digests;
++ i2d_OCSP_REVOKEDINFO;
++ asn1_enc_restore;
++ UI_free;
++ UI_new_method;
++ EVP_EncryptInit_ex;
++ X509_pubkey_digest;
++ EC_POINT_invert;
++ OCSP_basic_sign;
++ i2d_OCSP_RESPID;
++ OCSP_check_nonce;
++ ENGINE_ctrl_cmd;
++ d2i_KRB5_ENCKEY;
++ OCSP_parse_url;
++ OCSP_SINGLERESP_get_ext;
++ OCSP_CRLID_free;
++ OCSP_BASICRESP_get1_ext_d2i;
++ RSAPrivateKey_it;
++ RSAPrivateKey_it;
++ ENGINE_register_all_DH;
++ i2d_EDIPARTYNAME;
++ EC_POINT_get_affine_coordinates_GFp;
++ EC_POINT_get_affine_coords_GFp;
++ OCSP_CRLID_new;
++ ENGINE_get_flags;
++ OCSP_ONEREQ_it;
++ OCSP_ONEREQ_it;
++ UI_process;
++ ASN1_INTEGER_it;
++ ASN1_INTEGER_it;
++ EVP_CipherInit_ex;
++ UI_get_string_type;
++ ENGINE_unregister_DH;
++ ENGINE_register_all_DSA;
++ OCSP_ONEREQ_get_ext_by_critical;
++ bn_dup_expand;
++ OCSP_cert_id_new;
++ BASIC_CONSTRAINTS_it;
++ BASIC_CONSTRAINTS_it;
++ BN_mod_add_quick;
++ EC_POINT_new;
++ EVP_MD_CTX_destroy;
++ OCSP_RESPBYTES_free;
++ EVP_aes_128_cbc;
++ OCSP_SINGLERESP_get1_ext_d2i;
++ EC_POINT_free;
++ DH_up_ref;
++ X509_NAME_ENTRY_it;
++ X509_NAME_ENTRY_it;
++ UI_get_ex_new_index;
++ BN_mod_sub_quick;
++ OCSP_ONEREQ_add_ext;
++ OCSP_request_sign;
++ EVP_DigestFinal_ex;
++ ENGINE_set_digests;
++ OCSP_id_issuer_cmp;
++ OBJ_NAME_do_all;
++ EC_POINTs_mul;
++ ENGINE_register_complete;
++ X509V3_EXT_nconf_nid;
++ ASN1_SEQUENCE_it;
++ ASN1_SEQUENCE_it;
++ UI_set_default_method;
++ RAND_query_egd_bytes;
++ UI_method_get_writer;
++ UI_OpenSSL;
++ PEM_def_callback;
++ ENGINE_cleanup;
++ DIST_POINT_it;
++ DIST_POINT_it;
++ OCSP_SINGLERESP_it;
++ OCSP_SINGLERESP_it;
++ d2i_KRB5_TKTBODY;
++ EC_POINT_cmp;
++ OCSP_REVOKEDINFO_new;
++ i2d_OCSP_CERTSTATUS;
++ OCSP_basic_add1_nonce;
++ ASN1_item_ex_d2i;
++ BN_mod_lshift1_quick;
++ UI_set_method;
++ OCSP_id_get0_info;
++ BN_mod_sqrt;
++ EC_GROUP_copy;
++ KRB5_ENCDATA_free;
++ _ossl_old_des_cfb_encrypt;
++ OCSP_SINGLERESP_get_ext_by_OBJ;
++ OCSP_cert_to_id;
++ OCSP_RESPID_new;
++ OCSP_RESPDATA_it;
++ OCSP_RESPDATA_it;
++ d2i_OCSP_RESPDATA;
++ ENGINE_register_all_complete;
++ OCSP_check_validity;
++ PKCS12_BAGS_it;
++ PKCS12_BAGS_it;
++ OCSP_url_svcloc_new;
++ ASN1_template_free;
++ OCSP_SINGLERESP_add_ext;
++ KRB5_AUTHENTBODY_it;
++ KRB5_AUTHENTBODY_it;
++ X509_supported_extension;
++ i2d_KRB5_AUTHDATA;
++ UI_method_get_opener;
++ ENGINE_set_ex_data;
++ OCSP_REQUEST_print;
++ CBIGNUM_it;
++ CBIGNUM_it;
++ KRB5_TICKET_new;
++ KRB5_APREQ_new;
++ EC_GROUP_get_curve_GFp;
++ KRB5_ENCKEY_new;
++ ASN1_template_d2i;
++ _ossl_old_des_quad_cksum;
++ OCSP_single_get0_status;
++ BN_swap;
++ POLICYINFO_it;
++ POLICYINFO_it;
++ ENGINE_set_destroy_function;
++ asn1_enc_free;
++ OCSP_RESPID_it;
++ OCSP_RESPID_it;
++ EC_GROUP_new;
++ EVP_aes_256_cbc;
++ i2d_KRB5_PRINCNAME;
++ _ossl_old_des_encrypt2;
++ _ossl_old_des_encrypt3;
++ PKCS8_PRIV_KEY_INFO_it;
++ PKCS8_PRIV_KEY_INFO_it;
++ OCSP_REQINFO_it;
++ OCSP_REQINFO_it;
++ PBEPARAM_it;
++ PBEPARAM_it;
++ KRB5_AUTHENTBODY_new;
++ X509_CRL_add0_revoked;
++ EDIPARTYNAME_it;
++ EDIPARTYNAME_it;
++ NETSCAPE_SPKI_it;
++ NETSCAPE_SPKI_it;
++ UI_get0_test_string;
++ ENGINE_get_cipher_engine;
++ ENGINE_register_all_ciphers;
++ EC_POINT_copy;
++ BN_kronecker;
++ _ossl_old_des_ede3_ofb64_encrypt;
++ _ossl_odes_ede3_ofb64_encrypt;
++ UI_method_get_reader;
++ OCSP_BASICRESP_get_ext_count;
++ ASN1_ENUMERATED_it;
++ ASN1_ENUMERATED_it;
++ UI_set_result;
++ i2d_KRB5_TICKET;
++ X509_print_ex_fp;
++ EVP_CIPHER_CTX_set_padding;
++ d2i_OCSP_RESPONSE;
++ ASN1_UTCTIME_it;
++ ASN1_UTCTIME_it;
++ _ossl_old_des_enc_write;
++ OCSP_RESPONSE_new;
++ AES_set_encrypt_key;
++ OCSP_resp_count;
++ KRB5_CHECKSUM_new;
++ ENGINE_load_cswift;
++ OCSP_onereq_get0_id;
++ ENGINE_set_default_ciphers;
++ NOTICEREF_it;
++ NOTICEREF_it;
++ X509V3_EXT_CRL_add_nconf;
++ OCSP_REVOKEDINFO_it;
++ OCSP_REVOKEDINFO_it;
++ AES_encrypt;
++ OCSP_REQUEST_new;
++ ASN1_ANY_it;
++ ASN1_ANY_it;
++ CRYPTO_ex_data_new_class;
++ _ossl_old_des_ncbc_encrypt;
++ i2d_KRB5_TKTBODY;
++ EC_POINT_clear_free;
++ AES_decrypt;
++ asn1_enc_init;
++ UI_get_result_maxsize;
++ OCSP_CERTID_new;
++ ENGINE_unregister_RAND;
++ UI_method_get_closer;
++ d2i_KRB5_ENCDATA;
++ OCSP_request_onereq_count;
++ OCSP_basic_verify;
++ KRB5_AUTHENTBODY_free;
++ ASN1_item_d2i;
++ ASN1_primitive_free;
++ i2d_EXTENDED_KEY_USAGE;
++ i2d_OCSP_SIGNATURE;
++ asn1_enc_save;
++ ENGINE_load_nuron;
++ _ossl_old_des_pcbc_encrypt;
++ PKCS12_MAC_DATA_it;
++ PKCS12_MAC_DATA_it;
++ OCSP_accept_responses_new;
++ asn1_do_lock;
++ PKCS7_ATTR_VERIFY_it;
++ PKCS7_ATTR_VERIFY_it;
++ KRB5_APREQBODY_it;
++ KRB5_APREQBODY_it;
++ i2d_OCSP_SINGLERESP;
++ ASN1_item_ex_new;
++ UI_add_verify_string;
++ _ossl_old_des_set_key;
++ KRB5_PRINCNAME_it;
++ KRB5_PRINCNAME_it;
++ EVP_DecryptInit_ex;
++ i2d_OCSP_CERTID;
++ ASN1_item_d2i_bio;
++ EC_POINT_dbl;
++ asn1_get_choice_selector;
++ i2d_KRB5_CHECKSUM;
++ ENGINE_set_table_flags;
++ AES_options;
++ ENGINE_load_chil;
++ OCSP_id_cmp;
++ OCSP_BASICRESP_new;
++ OCSP_REQUEST_get_ext_by_NID;
++ KRB5_APREQ_it;
++ KRB5_APREQ_it;
++ ENGINE_get_destroy_function;
++ CONF_set_nconf;
++ ASN1_PRINTABLE_free;
++ OCSP_BASICRESP_get_ext_by_NID;
++ DIST_POINT_NAME_it;
++ DIST_POINT_NAME_it;
++ X509V3_extensions_print;
++ _ossl_old_des_cfb64_encrypt;
++ X509_REVOKED_add1_ext_i2d;
++ _ossl_old_des_ofb_encrypt;
++ KRB5_TKTBODY_new;
++ ASN1_OCTET_STRING_it;
++ ASN1_OCTET_STRING_it;
++ ERR_load_UI_strings;
++ i2d_KRB5_ENCKEY;
++ ASN1_template_new;
++ OCSP_SIGNATURE_free;
++ ASN1_item_i2d_fp;
++ KRB5_PRINCNAME_free;
++ PKCS7_RECIP_INFO_it;
++ PKCS7_RECIP_INFO_it;
++ EXTENDED_KEY_USAGE_it;
++ EXTENDED_KEY_USAGE_it;
++ EC_GFp_simple_method;
++ EC_GROUP_precompute_mult;
++ OCSP_request_onereq_get0;
++ UI_method_set_writer;
++ KRB5_AUTHENT_new;
++ X509_CRL_INFO_it;
++ X509_CRL_INFO_it;
++ DSO_set_name_converter;
++ AES_set_decrypt_key;
++ PKCS7_DIGEST_it;
++ PKCS7_DIGEST_it;
++ PKCS12_x5092certbag;
++ EVP_DigestInit_ex;
++ i2a_ACCESS_DESCRIPTION;
++ OCSP_RESPONSE_it;
++ OCSP_RESPONSE_it;
++ PKCS7_ENC_CONTENT_it;
++ PKCS7_ENC_CONTENT_it;
++ OCSP_request_add0_id;
++ EC_POINT_make_affine;
++ DSO_get_filename;
++ OCSP_CERTSTATUS_it;
++ OCSP_CERTSTATUS_it;
++ OCSP_request_add1_cert;
++ UI_get0_output_string;
++ UI_dup_verify_string;
++ BN_mod_lshift;
++ KRB5_AUTHDATA_it;
++ KRB5_AUTHDATA_it;
++ asn1_set_choice_selector;
++ OCSP_basic_add1_status;
++ OCSP_RESPID_free;
++ asn1_get_field_ptr;
++ UI_add_input_string;
++ OCSP_CRLID_it;
++ OCSP_CRLID_it;
++ i2d_KRB5_AUTHENTBODY;
++ OCSP_REQUEST_get_ext_count;
++ ENGINE_load_atalla;
++ X509_NAME_it;
++ X509_NAME_it;
++ USERNOTICE_it;
++ USERNOTICE_it;
++ OCSP_REQINFO_new;
++ OCSP_BASICRESP_get_ext;
++ CRYPTO_get_ex_data_implementation;
++ CRYPTO_get_ex_data_impl;
++ ASN1_item_pack;
++ i2d_KRB5_ENCDATA;
++ X509_PURPOSE_set;
++ X509_REQ_INFO_it;
++ X509_REQ_INFO_it;
++ UI_method_set_opener;
++ ASN1_item_ex_free;
++ ASN1_BOOLEAN_it;
++ ASN1_BOOLEAN_it;
++ ENGINE_get_table_flags;
++ UI_create_method;
++ OCSP_ONEREQ_add1_ext_i2d;
++ _shadow_DES_check_key;
++ _shadow_DES_check_key;
++ d2i_OCSP_REQINFO;
++ UI_add_info_string;
++ UI_get_result_minsize;
++ ASN1_NULL_it;
++ ASN1_NULL_it;
++ BN_mod_lshift1;
++ d2i_OCSP_ONEREQ;
++ OCSP_ONEREQ_new;
++ KRB5_TICKET_it;
++ KRB5_TICKET_it;
++ EVP_aes_192_cbc;
++ KRB5_TICKET_free;
++ UI_new;
++ OCSP_response_create;
++ _ossl_old_des_xcbc_encrypt;
++ PKCS7_it;
++ PKCS7_it;
++ OCSP_REQUEST_get_ext_by_critical;
++ OCSP_REQUEST_get_ext_by_crit;
++ ENGINE_set_flags;
++ _ossl_old_des_ecb_encrypt;
++ OCSP_response_get1_basic;
++ EVP_Digest;
++ OCSP_ONEREQ_delete_ext;
++ ASN1_TBOOLEAN_it;
++ ASN1_TBOOLEAN_it;
++ ASN1_item_new;
++ ASN1_TIME_to_generalizedtime;
++ BIGNUM_it;
++ BIGNUM_it;
++ AES_cbc_encrypt;
++ ENGINE_get_load_privkey_function;
++ ENGINE_get_load_privkey_fn;
++ OCSP_RESPONSE_free;
++ UI_method_set_reader;
++ i2d_ASN1_T61STRING;
++ EC_POINT_set_to_infinity;
++ ERR_load_OCSP_strings;
++ EC_POINT_point2oct;
++ KRB5_APREQ_free;
++ ASN1_OBJECT_it;
++ ASN1_OBJECT_it;
++ OCSP_crlID_new;
++ OCSP_crlID2_new;
++ CONF_modules_load_file;
++ CONF_imodule_set_usr_data;
++ ENGINE_set_default_string;
++ CONF_module_get_usr_data;
++ ASN1_add_oid_module;
++ CONF_modules_finish;
++ OPENSSL_config;
++ CONF_modules_unload;
++ CONF_imodule_get_value;
++ CONF_module_set_usr_data;
++ CONF_parse_list;
++ CONF_module_add;
++ CONF_get1_default_config_file;
++ CONF_imodule_get_flags;
++ CONF_imodule_get_module;
++ CONF_modules_load;
++ CONF_imodule_get_name;
++ ERR_peek_top_error;
++ CONF_imodule_get_usr_data;
++ CONF_imodule_set_flags;
++ ENGINE_add_conf_module;
++ ERR_peek_last_error_line;
++ ERR_peek_last_error_line_data;
++ ERR_peek_last_error;
++ DES_read_2passwords;
++ DES_read_password;
++ UI_UTIL_read_pw;
++ UI_UTIL_read_pw_string;
++ ENGINE_load_aep;
++ ENGINE_load_sureware;
++ OPENSSL_add_all_algorithms_noconf;
++ OPENSSL_add_all_algo_noconf;
++ OPENSSL_add_all_algorithms_conf;
++ OPENSSL_add_all_algo_conf;
++ OPENSSL_load_builtin_modules;
++ AES_ofb128_encrypt;
++ AES_ctr128_encrypt;
++ AES_cfb128_encrypt;
++ ENGINE_load_4758cca;
++ _ossl_096_des_random_seed;
++ EVP_aes_256_ofb;
++ EVP_aes_192_ofb;
++ EVP_aes_128_cfb128;
++ EVP_aes_256_cfb128;
++ EVP_aes_128_ofb;
++ EVP_aes_192_cfb128;
++ CONF_modules_free;
++ NCONF_default;
++ OPENSSL_no_config;
++ NCONF_WIN32;
++ ASN1_UNIVERSALSTRING_new;
++ EVP_des_ede_ecb;
++ i2d_ASN1_UNIVERSALSTRING;
++ ASN1_UNIVERSALSTRING_free;
++ ASN1_UNIVERSALSTRING_it;
++ ASN1_UNIVERSALSTRING_it;
++ d2i_ASN1_UNIVERSALSTRING;
++ EVP_des_ede3_ecb;
++ X509_REQ_print_ex;
++ ENGINE_up_ref;
++ BUF_MEM_grow_clean;
++ CRYPTO_realloc_clean;
++ BUF_strlcat;
++ BIO_indent;
++ BUF_strlcpy;
++ OpenSSLDie;
++ OPENSSL_cleanse;
++ ENGINE_setup_bsd_cryptodev;
++ ERR_release_err_state_table;
++ EVP_aes_128_cfb8;
++ FIPS_corrupt_rsa;
++ FIPS_selftest_des;
++ EVP_aes_128_cfb1;
++ EVP_aes_192_cfb8;
++ FIPS_mode_set;
++ FIPS_selftest_dsa;
++ EVP_aes_256_cfb8;
++ FIPS_allow_md5;
++ DES_ede3_cfb_encrypt;
++ EVP_des_ede3_cfb8;
++ FIPS_rand_seeded;
++ AES_cfbr_encrypt_block;
++ AES_cfb8_encrypt;
++ FIPS_rand_seed;
++ FIPS_corrupt_des;
++ EVP_aes_192_cfb1;
++ FIPS_selftest_aes;
++ FIPS_set_prng_key;
++ EVP_des_cfb8;
++ FIPS_corrupt_dsa;
++ FIPS_test_mode;
++ FIPS_rand_method;
++ EVP_aes_256_cfb1;
++ ERR_load_FIPS_strings;
++ FIPS_corrupt_aes;
++ FIPS_selftest_sha1;
++ FIPS_selftest_rsa;
++ FIPS_corrupt_sha1;
++ EVP_des_cfb1;
++ FIPS_dsa_check;
++ AES_cfb1_encrypt;
++ EVP_des_ede3_cfb1;
++ FIPS_rand_check;
++ FIPS_md5_allowed;
++ FIPS_mode;
++ FIPS_selftest_failed;
++ sk_is_sorted;
++ X509_check_ca;
++ HMAC_CTX_set_flags;
++ d2i_PROXY_CERT_INFO_EXTENSION;
++ PROXY_POLICY_it;
++ PROXY_POLICY_it;
++ i2d_PROXY_POLICY;
++ i2d_PROXY_CERT_INFO_EXTENSION;
++ d2i_PROXY_POLICY;
++ PROXY_CERT_INFO_EXTENSION_new;
++ PROXY_CERT_INFO_EXTENSION_free;
++ PROXY_CERT_INFO_EXTENSION_it;
++ PROXY_CERT_INFO_EXTENSION_it;
++ PROXY_POLICY_free;
++ PROXY_POLICY_new;
++ BN_MONT_CTX_set_locked;
++ FIPS_selftest_rng;
++ EVP_sha384;
++ EVP_sha512;
++ EVP_sha224;
++ EVP_sha256;
++ FIPS_selftest_hmac;
++ FIPS_corrupt_rng;
++ BN_mod_exp_mont_consttime;
++ RSA_X931_hash_id;
++ RSA_padding_check_X931;
++ RSA_verify_PKCS1_PSS;
++ RSA_padding_add_X931;
++ RSA_padding_add_PKCS1_PSS;
++ PKCS1_MGF1;
++ BN_X931_generate_Xpq;
++ RSA_X931_generate_key;
++ BN_X931_derive_prime;
++ BN_X931_generate_prime;
++ RSA_X931_derive;
++ BIO_new_dgram;
++ BN_get0_nist_prime_384;
++ ERR_set_mark;
++ X509_STORE_CTX_set0_crls;
++ ENGINE_set_STORE;
++ ENGINE_register_ECDSA;
++ STORE_meth_set_list_start_fn;
++ STORE_method_set_list_start_function;
++ BN_BLINDING_invert_ex;
++ NAME_CONSTRAINTS_free;
++ STORE_ATTR_INFO_set_number;
++ BN_BLINDING_get_thread_id;
++ X509_STORE_CTX_set0_param;
++ POLICY_MAPPING_it;
++ POLICY_MAPPING_it;
++ STORE_parse_attrs_start;
++ POLICY_CONSTRAINTS_free;
++ EVP_PKEY_add1_attr_by_NID;
++ BN_nist_mod_192;
++ EC_GROUP_get_trinomial_basis;
++ STORE_set_method;
++ GENERAL_SUBTREE_free;
++ NAME_CONSTRAINTS_it;
++ NAME_CONSTRAINTS_it;
++ ECDH_get_default_method;
++ PKCS12_add_safe;
++ EC_KEY_new_by_curve_name;
++ STORE_meth_get_update_store_fn;
++ STORE_method_get_update_store_function;
++ ENGINE_register_ECDH;
++ SHA512_Update;
++ i2d_ECPrivateKey;
++ BN_get0_nist_prime_192;
++ STORE_modify_certificate;
++ EC_POINT_set_affine_coordinates_GF2m;
++ EC_POINT_set_affine_coords_GF2m;
++ BN_GF2m_mod_exp_arr;
++ STORE_ATTR_INFO_modify_number;
++ X509_keyid_get0;
++ ENGINE_load_gmp;
++ pitem_new;
++ BN_GF2m_mod_mul_arr;
++ STORE_list_public_key_endp;
++ o2i_ECPublicKey;
++ EC_KEY_copy;
++ BIO_dump_fp;
++ X509_policy_node_get0_parent;
++ EC_GROUP_check_discriminant;
++ i2o_ECPublicKey;
++ EC_KEY_precompute_mult;
++ a2i_IPADDRESS;
++ STORE_meth_set_initialise_fn;
++ STORE_method_set_initialise_function;
++ X509_STORE_CTX_set_depth;
++ X509_VERIFY_PARAM_inherit;
++ EC_POINT_point2bn;
++ STORE_ATTR_INFO_set_dn;
++ X509_policy_tree_get0_policies;
++ EC_GROUP_new_curve_GF2m;
++ STORE_destroy_method;
++ ENGINE_unregister_STORE;
++ EVP_PKEY_get1_EC_KEY;
++ STORE_ATTR_INFO_get0_number;
++ ENGINE_get_default_ECDH;
++ EC_KEY_get_conv_form;
++ ASN1_OCTET_STRING_NDEF_it;
++ ASN1_OCTET_STRING_NDEF_it;
++ STORE_delete_public_key;
++ STORE_get_public_key;
++ STORE_modify_arbitrary;
++ ENGINE_get_static_state;
++ pqueue_iterator;
++ ECDSA_SIG_new;
++ OPENSSL_DIR_end;
++ BN_GF2m_mod_sqr;
++ EC_POINT_bn2point;
++ X509_VERIFY_PARAM_set_depth;
++ EC_KEY_set_asn1_flag;
++ STORE_get_method;
++ EC_KEY_get_key_method_data;
++ ECDSA_sign_ex;
++ STORE_parse_attrs_end;
++ EC_GROUP_get_point_conversion_form;
++ EC_GROUP_get_point_conv_form;
++ STORE_method_set_store_function;
++ STORE_ATTR_INFO_in;
++ PEM_read_bio_ECPKParameters;
++ EC_GROUP_get_pentanomial_basis;
++ EVP_PKEY_add1_attr_by_txt;
++ BN_BLINDING_set_flags;
++ X509_VERIFY_PARAM_set1_policies;
++ X509_VERIFY_PARAM_set1_name;
++ X509_VERIFY_PARAM_set_purpose;
++ STORE_get_number;
++ ECDSA_sign_setup;
++ BN_GF2m_mod_solve_quad_arr;
++ EC_KEY_up_ref;
++ POLICY_MAPPING_free;
++ BN_GF2m_mod_div;
++ X509_VERIFY_PARAM_set_flags;
++ EC_KEY_free;
++ STORE_meth_set_list_next_fn;
++ STORE_method_set_list_next_function;
++ PEM_write_bio_ECPrivateKey;
++ d2i_EC_PUBKEY;
++ STORE_meth_get_generate_fn;
++ STORE_method_get_generate_function;
++ STORE_meth_set_list_end_fn;
++ STORE_method_set_list_end_function;
++ pqueue_print;
++ EC_GROUP_have_precompute_mult;
++ EC_KEY_print_fp;
++ BN_GF2m_mod_arr;
++ PEM_write_bio_X509_CERT_PAIR;
++ EVP_PKEY_cmp;
++ X509_policy_level_node_count;
++ STORE_new_engine;
++ STORE_list_public_key_start;
++ X509_VERIFY_PARAM_new;
++ ECDH_get_ex_data;
++ EVP_PKEY_get_attr;
++ ECDSA_do_sign;
++ ENGINE_unregister_ECDH;
++ ECDH_OpenSSL;
++ EC_KEY_set_conv_form;
++ EC_POINT_dup;
++ GENERAL_SUBTREE_new;
++ STORE_list_crl_endp;
++ EC_get_builtin_curves;
++ X509_policy_node_get0_qualifiers;
++ X509_pcy_node_get0_qualifiers;
++ STORE_list_crl_end;
++ EVP_PKEY_set1_EC_KEY;
++ BN_GF2m_mod_sqrt_arr;
++ i2d_ECPrivateKey_bio;
++ ECPKParameters_print_fp;
++ pqueue_find;
++ ECDSA_SIG_free;
++ PEM_write_bio_ECPKParameters;
++ STORE_method_set_ctrl_function;
++ STORE_list_public_key_end;
++ EC_KEY_set_private_key;
++ pqueue_peek;
++ STORE_get_arbitrary;
++ STORE_store_crl;
++ X509_policy_node_get0_policy;
++ PKCS12_add_safes;
++ BN_BLINDING_convert_ex;
++ X509_policy_tree_free;
++ OPENSSL_ia32cap_loc;
++ BN_GF2m_poly2arr;
++ STORE_ctrl;
++ STORE_ATTR_INFO_compare;
++ BN_get0_nist_prime_224;
++ i2d_ECParameters;
++ i2d_ECPKParameters;
++ BN_GENCB_call;
++ d2i_ECPKParameters;
++ STORE_meth_set_generate_fn;
++ STORE_method_set_generate_function;
++ ENGINE_set_ECDH;
++ NAME_CONSTRAINTS_new;
++ SHA256_Init;
++ EC_KEY_get0_public_key;
++ PEM_write_bio_EC_PUBKEY;
++ STORE_ATTR_INFO_set_cstr;
++ STORE_list_crl_next;
++ STORE_ATTR_INFO_in_range;
++ ECParameters_print;
++ STORE_meth_set_delete_fn;
++ STORE_method_set_delete_function;
++ STORE_list_certificate_next;
++ ASN1_generate_nconf;
++ BUF_memdup;
++ BN_GF2m_mod_mul;
++ STORE_meth_get_list_next_fn;
++ STORE_method_get_list_next_function;
++ STORE_ATTR_INFO_get0_dn;
++ STORE_list_private_key_next;
++ EC_GROUP_set_seed;
++ X509_VERIFY_PARAM_set_trust;
++ STORE_ATTR_INFO_free;
++ STORE_get_private_key;
++ EVP_PKEY_get_attr_count;
++ STORE_ATTR_INFO_new;
++ EC_GROUP_get_curve_GF2m;
++ STORE_meth_set_revoke_fn;
++ STORE_method_set_revoke_function;
++ STORE_store_number;
++ BN_is_prime_ex;
++ STORE_revoke_public_key;
++ X509_STORE_CTX_get0_param;
++ STORE_delete_arbitrary;
++ PEM_read_X509_CERT_PAIR;
++ X509_STORE_set_depth;
++ ECDSA_get_ex_data;
++ SHA224;
++ BIO_dump_indent_fp;
++ EC_KEY_set_group;
++ BUF_strndup;
++ STORE_list_certificate_start;
++ BN_GF2m_mod;
++ X509_REQ_check_private_key;
++ EC_GROUP_get_seed_len;
++ ERR_load_STORE_strings;
++ PEM_read_bio_EC_PUBKEY;
++ STORE_list_private_key_end;
++ i2d_EC_PUBKEY;
++ ECDSA_get_default_method;
++ ASN1_put_eoc;
++ X509_STORE_CTX_get_explicit_policy;
++ X509_STORE_CTX_get_expl_policy;
++ X509_VERIFY_PARAM_table_cleanup;
++ STORE_modify_private_key;
++ X509_VERIFY_PARAM_free;
++ EC_METHOD_get_field_type;
++ EC_GFp_nist_method;
++ STORE_meth_set_modify_fn;
++ STORE_method_set_modify_function;
++ STORE_parse_attrs_next;
++ ENGINE_load_padlock;
++ EC_GROUP_set_curve_name;
++ X509_CERT_PAIR_it;
++ X509_CERT_PAIR_it;
++ STORE_meth_get_revoke_fn;
++ STORE_method_get_revoke_function;
++ STORE_method_set_get_function;
++ STORE_modify_number;
++ STORE_method_get_store_function;
++ STORE_store_private_key;
++ BN_GF2m_mod_sqr_arr;
++ RSA_setup_blinding;
++ BIO_s_datagram;
++ STORE_Memory;
++ sk_find_ex;
++ EC_GROUP_set_curve_GF2m;
++ ENGINE_set_default_ECDSA;
++ POLICY_CONSTRAINTS_new;
++ BN_GF2m_mod_sqrt;
++ ECDH_set_default_method;
++ EC_KEY_generate_key;
++ SHA384_Update;
++ BN_GF2m_arr2poly;
++ STORE_method_get_get_function;
++ STORE_meth_set_cleanup_fn;
++ STORE_method_set_cleanup_function;
++ EC_GROUP_check;
++ d2i_ECPrivateKey_bio;
++ EC_KEY_insert_key_method_data;
++ STORE_meth_get_lock_store_fn;
++ STORE_method_get_lock_store_function;
++ X509_VERIFY_PARAM_get_depth;
++ SHA224_Final;
++ STORE_meth_set_update_store_fn;
++ STORE_method_set_update_store_function;
++ SHA224_Update;
++ d2i_ECPrivateKey;
++ ASN1_item_ndef_i2d;
++ STORE_delete_private_key;
++ ERR_pop_to_mark;
++ ENGINE_register_all_STORE;
++ X509_policy_level_get0_node;
++ i2d_PKCS7_NDEF;
++ EC_GROUP_get_degree;
++ ASN1_generate_v3;
++ STORE_ATTR_INFO_modify_cstr;
++ X509_policy_tree_level_count;
++ BN_GF2m_add;
++ EC_KEY_get0_group;
++ STORE_generate_crl;
++ STORE_store_public_key;
++ X509_CERT_PAIR_free;
++ STORE_revoke_private_key;
++ BN_nist_mod_224;
++ SHA512_Final;
++ STORE_ATTR_INFO_modify_dn;
++ STORE_meth_get_initialise_fn;
++ STORE_method_get_initialise_function;
++ STORE_delete_number;
++ i2d_EC_PUBKEY_bio;
++ BIO_dgram_non_fatal_error;
++ EC_GROUP_get_asn1_flag;
++ STORE_ATTR_INFO_in_ex;
++ STORE_list_crl_start;
++ ECDH_get_ex_new_index;
++ STORE_meth_get_modify_fn;
++ STORE_method_get_modify_function;
++ v2i_ASN1_BIT_STRING;
++ STORE_store_certificate;
++ OBJ_bsearch_ex;
++ X509_STORE_CTX_set_default;
++ STORE_ATTR_INFO_set_sha1str;
++ BN_GF2m_mod_inv;
++ BN_GF2m_mod_exp;
++ STORE_modify_public_key;
++ STORE_meth_get_list_start_fn;
++ STORE_method_get_list_start_function;
++ EC_GROUP_get0_seed;
++ STORE_store_arbitrary;
++ STORE_meth_set_unlock_store_fn;
++ STORE_method_set_unlock_store_function;
++ BN_GF2m_mod_div_arr;
++ ENGINE_set_ECDSA;
++ STORE_create_method;
++ ECPKParameters_print;
++ EC_KEY_get0_private_key;
++ PEM_write_EC_PUBKEY;
++ X509_VERIFY_PARAM_set1;
++ ECDH_set_method;
++ v2i_GENERAL_NAME_ex;
++ ECDH_set_ex_data;
++ STORE_generate_key;
++ BN_nist_mod_521;
++ X509_policy_tree_get0_level;
++ EC_GROUP_set_point_conversion_form;
++ EC_GROUP_set_point_conv_form;
++ PEM_read_EC_PUBKEY;
++ i2d_ECDSA_SIG;
++ ECDSA_OpenSSL;
++ STORE_delete_crl;
++ EC_KEY_get_enc_flags;
++ ASN1_const_check_infinite_end;
++ EVP_PKEY_delete_attr;
++ ECDSA_set_default_method;
++ EC_POINT_set_compressed_coordinates_GF2m;
++ EC_POINT_set_compr_coords_GF2m;
++ EC_GROUP_cmp;
++ STORE_revoke_certificate;
++ BN_get0_nist_prime_256;
++ STORE_meth_get_delete_fn;
++ STORE_method_get_delete_function;
++ SHA224_Init;
++ PEM_read_ECPrivateKey;
++ SHA512_Init;
++ STORE_parse_attrs_endp;
++ BN_set_negative;
++ ERR_load_ECDSA_strings;
++ EC_GROUP_get_basis_type;
++ STORE_list_public_key_next;
++ i2v_ASN1_BIT_STRING;
++ STORE_OBJECT_free;
++ BN_nist_mod_384;
++ i2d_X509_CERT_PAIR;
++ PEM_write_ECPKParameters;
++ ECDH_compute_key;
++ STORE_ATTR_INFO_get0_sha1str;
++ ENGINE_register_all_ECDH;
++ pqueue_pop;
++ STORE_ATTR_INFO_get0_cstr;
++ POLICY_CONSTRAINTS_it;
++ POLICY_CONSTRAINTS_it;
++ STORE_get_ex_new_index;
++ EVP_PKEY_get_attr_by_OBJ;
++ X509_VERIFY_PARAM_add0_policy;
++ BN_GF2m_mod_solve_quad;
++ SHA256;
++ i2d_ECPrivateKey_fp;
++ X509_policy_tree_get0_user_policies;
++ X509_pcy_tree_get0_usr_policies;
++ OPENSSL_DIR_read;
++ ENGINE_register_all_ECDSA;
++ X509_VERIFY_PARAM_lookup;
++ EC_POINT_get_affine_coordinates_GF2m;
++ EC_POINT_get_affine_coords_GF2m;
++ EC_GROUP_dup;
++ ENGINE_get_default_ECDSA;
++ EC_KEY_new;
++ SHA256_Transform;
++ EC_KEY_set_enc_flags;
++ ECDSA_verify;
++ EC_POINT_point2hex;
++ ENGINE_get_STORE;
++ SHA512;
++ STORE_get_certificate;
++ ECDSA_do_sign_ex;
++ ECDSA_do_verify;
++ d2i_ECPrivateKey_fp;
++ STORE_delete_certificate;
++ SHA512_Transform;
++ X509_STORE_set1_param;
++ STORE_method_get_ctrl_function;
++ STORE_free;
++ PEM_write_ECPrivateKey;
++ STORE_meth_get_unlock_store_fn;
++ STORE_method_get_unlock_store_function;
++ STORE_get_ex_data;
++ EC_KEY_set_public_key;
++ PEM_read_ECPKParameters;
++ X509_CERT_PAIR_new;
++ ENGINE_register_STORE;
++ RSA_generate_key_ex;
++ DSA_generate_parameters_ex;
++ ECParameters_print_fp;
++ X509V3_NAME_from_section;
++ EVP_PKEY_add1_attr;
++ STORE_modify_crl;
++ STORE_list_private_key_start;
++ POLICY_MAPPINGS_it;
++ POLICY_MAPPINGS_it;
++ GENERAL_SUBTREE_it;
++ GENERAL_SUBTREE_it;
++ EC_GROUP_get_curve_name;
++ PEM_write_X509_CERT_PAIR;
++ BIO_dump_indent_cb;
++ d2i_X509_CERT_PAIR;
++ STORE_list_private_key_endp;
++ asn1_const_Finish;
++ i2d_EC_PUBKEY_fp;
++ BN_nist_mod_256;
++ X509_VERIFY_PARAM_add0_table;
++ pqueue_free;
++ BN_BLINDING_create_param;
++ ECDSA_size;
++ d2i_EC_PUBKEY_bio;
++ BN_get0_nist_prime_521;
++ STORE_ATTR_INFO_modify_sha1str;
++ BN_generate_prime_ex;
++ EC_GROUP_new_by_curve_name;
++ SHA256_Final;
++ DH_generate_parameters_ex;
++ PEM_read_bio_ECPrivateKey;
++ STORE_meth_get_cleanup_fn;
++ STORE_method_get_cleanup_function;
++ ENGINE_get_ECDH;
++ d2i_ECDSA_SIG;
++ BN_is_prime_fasttest_ex;
++ ECDSA_sign;
++ X509_policy_check;
++ EVP_PKEY_get_attr_by_NID;
++ STORE_set_ex_data;
++ ENGINE_get_ECDSA;
++ EVP_ecdsa;
++ BN_BLINDING_get_flags;
++ PKCS12_add_cert;
++ STORE_OBJECT_new;
++ ERR_load_ECDH_strings;
++ EC_KEY_dup;
++ EVP_CIPHER_CTX_rand_key;
++ ECDSA_set_method;
++ a2i_IPADDRESS_NC;
++ d2i_ECParameters;
++ STORE_list_certificate_end;
++ STORE_get_crl;
++ X509_POLICY_NODE_print;
++ SHA384_Init;
++ EC_GF2m_simple_method;
++ ECDSA_set_ex_data;
++ SHA384_Final;
++ PKCS7_set_digest;
++ EC_KEY_print;
++ STORE_meth_set_lock_store_fn;
++ STORE_method_set_lock_store_function;
++ ECDSA_get_ex_new_index;
++ SHA384;
++ POLICY_MAPPING_new;
++ STORE_list_certificate_endp;
++ X509_STORE_CTX_get0_policy_tree;
++ EC_GROUP_set_asn1_flag;
++ EC_KEY_check_key;
++ d2i_EC_PUBKEY_fp;
++ PKCS7_set0_type_other;
++ PEM_read_bio_X509_CERT_PAIR;
++ pqueue_next;
++ STORE_meth_get_list_end_fn;
++ STORE_method_get_list_end_function;
++ EVP_PKEY_add1_attr_by_OBJ;
++ X509_VERIFY_PARAM_set_time;
++ pqueue_new;
++ ENGINE_set_default_ECDH;
++ STORE_new_method;
++ PKCS12_add_key;
++ DSO_merge;
++ EC_POINT_hex2point;
++ BIO_dump_cb;
++ SHA256_Update;
++ pqueue_insert;
++ pitem_free;
++ BN_GF2m_mod_inv_arr;
++ ENGINE_unregister_ECDSA;
++ BN_BLINDING_set_thread_id;
++ get_rfc3526_prime_8192;
++ X509_VERIFY_PARAM_clear_flags;
++ get_rfc2409_prime_1024;
++ DH_check_pub_key;
++ get_rfc3526_prime_2048;
++ get_rfc3526_prime_6144;
++ get_rfc3526_prime_1536;
++ get_rfc3526_prime_3072;
++ get_rfc3526_prime_4096;
++ get_rfc2409_prime_768;
++ X509_VERIFY_PARAM_get_flags;
++ EVP_CIPHER_CTX_new;
++ EVP_CIPHER_CTX_free;
++ Camellia_cbc_encrypt;
++ Camellia_cfb128_encrypt;
++ Camellia_cfb1_encrypt;
++ Camellia_cfb8_encrypt;
++ Camellia_ctr128_encrypt;
++ Camellia_cfbr_encrypt_block;
++ Camellia_decrypt;
++ Camellia_ecb_encrypt;
++ Camellia_encrypt;
++ Camellia_ofb128_encrypt;
++ Camellia_set_key;
++ EVP_camellia_128_cbc;
++ EVP_camellia_128_cfb128;
++ EVP_camellia_128_cfb1;
++ EVP_camellia_128_cfb8;
++ EVP_camellia_128_ecb;
++ EVP_camellia_128_ofb;
++ EVP_camellia_192_cbc;
++ EVP_camellia_192_cfb128;
++ EVP_camellia_192_cfb1;
++ EVP_camellia_192_cfb8;
++ EVP_camellia_192_ecb;
++ EVP_camellia_192_ofb;
++ EVP_camellia_256_cbc;
++ EVP_camellia_256_cfb128;
++ EVP_camellia_256_cfb1;
++ EVP_camellia_256_cfb8;
++ EVP_camellia_256_ecb;
++ EVP_camellia_256_ofb;
++ a2i_ipadd;
++ ASIdentifiers_free;
++ i2d_ASIdOrRange;
++ EVP_CIPHER_block_size;
++ v3_asid_is_canonical;
++ IPAddressChoice_free;
++ EVP_CIPHER_CTX_set_app_data;
++ BIO_set_callback_arg;
++ v3_addr_add_prefix;
++ IPAddressOrRange_it;
++ IPAddressOrRange_it;
++ BIO_set_flags;
++ ASIdentifiers_it;
++ ASIdentifiers_it;
++ v3_addr_get_range;
++ BIO_method_type;
++ v3_addr_inherits;
++ IPAddressChoice_it;
++ IPAddressChoice_it;
++ AES_ige_encrypt;
++ v3_addr_add_range;
++ EVP_CIPHER_CTX_nid;
++ d2i_ASRange;
++ v3_addr_add_inherit;
++ v3_asid_add_id_or_range;
++ v3_addr_validate_resource_set;
++ EVP_CIPHER_iv_length;
++ EVP_MD_type;
++ v3_asid_canonize;
++ IPAddressRange_free;
++ v3_asid_add_inherit;
++ EVP_CIPHER_CTX_key_length;
++ IPAddressRange_new;
++ ASIdOrRange_new;
++ EVP_MD_size;
++ EVP_MD_CTX_test_flags;
++ BIO_clear_flags;
++ i2d_ASRange;
++ IPAddressRange_it;
++ IPAddressRange_it;
++ IPAddressChoice_new;
++ ASIdentifierChoice_new;
++ ASRange_free;
++ EVP_MD_pkey_type;
++ EVP_MD_CTX_clear_flags;
++ IPAddressFamily_free;
++ i2d_IPAddressFamily;
++ IPAddressOrRange_new;
++ EVP_CIPHER_flags;
++ v3_asid_validate_resource_set;
++ d2i_IPAddressRange;
++ AES_bi_ige_encrypt;
++ BIO_get_callback;
++ IPAddressOrRange_free;
++ v3_addr_subset;
++ d2i_IPAddressFamily;
++ v3_asid_subset;
++ BIO_test_flags;
++ i2d_ASIdentifierChoice;
++ ASRange_it;
++ ASRange_it;
++ d2i_ASIdentifiers;
++ ASRange_new;
++ d2i_IPAddressChoice;
++ v3_addr_get_afi;
++ EVP_CIPHER_key_length;
++ EVP_Cipher;
++ i2d_IPAddressOrRange;
++ ASIdOrRange_it;
++ ASIdOrRange_it;
++ EVP_CIPHER_nid;
++ i2d_IPAddressChoice;
++ EVP_CIPHER_CTX_block_size;
++ ASIdentifiers_new;
++ v3_addr_validate_path;
++ IPAddressFamily_new;
++ EVP_MD_CTX_set_flags;
++ v3_addr_is_canonical;
++ i2d_IPAddressRange;
++ IPAddressFamily_it;
++ IPAddressFamily_it;
++ v3_asid_inherits;
++ EVP_CIPHER_CTX_cipher;
++ EVP_CIPHER_CTX_get_app_data;
++ EVP_MD_block_size;
++ EVP_CIPHER_CTX_flags;
++ v3_asid_validate_path;
++ d2i_IPAddressOrRange;
++ v3_addr_canonize;
++ ASIdentifierChoice_it;
++ ASIdentifierChoice_it;
++ EVP_MD_CTX_md;
++ d2i_ASIdentifierChoice;
++ BIO_method_name;
++ EVP_CIPHER_CTX_iv_length;
++ ASIdOrRange_free;
++ ASIdentifierChoice_free;
++ BIO_get_callback_arg;
++ BIO_set_callback;
++ d2i_ASIdOrRange;
++ i2d_ASIdentifiers;
++ SEED_decrypt;
++ SEED_encrypt;
++ SEED_cbc_encrypt;
++ EVP_seed_ofb;
++ SEED_cfb128_encrypt;
++ SEED_ofb128_encrypt;
++ EVP_seed_cbc;
++ SEED_ecb_encrypt;
++ EVP_seed_ecb;
++ SEED_set_key;
++ EVP_seed_cfb128;
++ X509_EXTENSIONS_it;
++ X509_EXTENSIONS_it;
++ X509_get1_ocsp;
++ OCSP_REQ_CTX_free;
++ i2d_X509_EXTENSIONS;
++ OCSP_sendreq_nbio;
++ OCSP_sendreq_new;
++ d2i_X509_EXTENSIONS;
++ X509_ALGORS_it;
++ X509_ALGORS_it;
++ X509_ALGOR_get0;
++ X509_ALGOR_set0;
++ AES_unwrap_key;
++ AES_wrap_key;
++ X509at_get0_data_by_OBJ;
++ ASN1_TYPE_set1;
++ ASN1_STRING_set0;
++ i2d_X509_ALGORS;
++ BIO_f_zlib;
++ COMP_zlib_cleanup;
++ d2i_X509_ALGORS;
++ CMS_ReceiptRequest_free;
++ PEM_write_CMS;
++ CMS_add0_CertificateChoices;
++ CMS_unsigned_add1_attr_by_OBJ;
++ ERR_load_CMS_strings;
++ CMS_sign_receipt;
++ i2d_CMS_ContentInfo;
++ CMS_signed_delete_attr;
++ d2i_CMS_bio;
++ CMS_unsigned_get_attr_by_NID;
++ CMS_verify;
++ SMIME_read_CMS;
++ CMS_decrypt_set1_key;
++ CMS_SignerInfo_get0_algs;
++ CMS_add1_cert;
++ CMS_set_detached;
++ CMS_encrypt;
++ CMS_EnvelopedData_create;
++ CMS_uncompress;
++ CMS_add0_crl;
++ CMS_SignerInfo_verify_content;
++ CMS_unsigned_get0_data_by_OBJ;
++ PEM_write_bio_CMS;
++ CMS_unsigned_get_attr;
++ CMS_RecipientInfo_ktri_cert_cmp;
++ CMS_RecipientInfo_ktri_get0_algs;
++ CMS_RecipInfo_ktri_get0_algs;
++ CMS_ContentInfo_free;
++ CMS_final;
++ CMS_add_simple_smimecap;
++ CMS_SignerInfo_verify;
++ CMS_data;
++ CMS_ContentInfo_it;
++ CMS_ContentInfo_it;
++ d2i_CMS_ReceiptRequest;
++ CMS_compress;
++ CMS_digest_create;
++ CMS_SignerInfo_cert_cmp;
++ CMS_SignerInfo_sign;
++ CMS_data_create;
++ i2d_CMS_bio;
++ CMS_EncryptedData_set1_key;
++ CMS_decrypt;
++ int_smime_write_ASN1;
++ CMS_unsigned_delete_attr;
++ CMS_unsigned_get_attr_count;
++ CMS_add_smimecap;
++ PEM_read_CMS;
++ CMS_signed_get_attr_by_OBJ;
++ d2i_CMS_ContentInfo;
++ CMS_add_standard_smimecap;
++ CMS_ContentInfo_new;
++ CMS_RecipientInfo_type;
++ CMS_get0_type;
++ CMS_is_detached;
++ CMS_sign;
++ CMS_signed_add1_attr;
++ CMS_unsigned_get_attr_by_OBJ;
++ SMIME_write_CMS;
++ CMS_EncryptedData_decrypt;
++ CMS_get0_RecipientInfos;
++ CMS_add0_RevocationInfoChoice;
++ CMS_decrypt_set1_pkey;
++ CMS_SignerInfo_set1_signer_cert;
++ CMS_get0_signers;
++ CMS_ReceiptRequest_get0_values;
++ CMS_signed_get0_data_by_OBJ;
++ CMS_get0_SignerInfos;
++ CMS_add0_cert;
++ CMS_EncryptedData_encrypt;
++ CMS_digest_verify;
++ CMS_set1_signers_certs;
++ CMS_signed_get_attr;
++ CMS_RecipientInfo_set0_key;
++ CMS_SignedData_init;
++ CMS_RecipientInfo_kekri_get0_id;
++ CMS_verify_receipt;
++ CMS_ReceiptRequest_it;
++ CMS_ReceiptRequest_it;
++ PEM_read_bio_CMS;
++ CMS_get1_crls;
++ CMS_add0_recipient_key;
++ SMIME_read_ASN1;
++ CMS_ReceiptRequest_new;
++ CMS_get0_content;
++ CMS_get1_ReceiptRequest;
++ CMS_signed_add1_attr_by_OBJ;
++ CMS_RecipientInfo_kekri_id_cmp;
++ CMS_add1_ReceiptRequest;
++ CMS_SignerInfo_get0_signer_id;
++ CMS_unsigned_add1_attr_by_NID;
++ CMS_unsigned_add1_attr;
++ CMS_signed_get_attr_by_NID;
++ CMS_get1_certs;
++ CMS_signed_add1_attr_by_NID;
++ CMS_unsigned_add1_attr_by_txt;
++ CMS_dataFinal;
++ CMS_RecipientInfo_ktri_get0_signer_id;
++ CMS_RecipInfo_ktri_get0_sigr_id;
++ i2d_CMS_ReceiptRequest;
++ CMS_add1_recipient_cert;
++ CMS_dataInit;
++ CMS_signed_add1_attr_by_txt;
++ CMS_RecipientInfo_decrypt;
++ CMS_signed_get_attr_count;
++ CMS_get0_eContentType;
++ CMS_set1_eContentType;
++ CMS_ReceiptRequest_create0;
++ CMS_add1_signer;
++ CMS_RecipientInfo_set0_pkey;
++ ENGINE_set_load_ssl_client_cert_function;
++ ENGINE_set_ld_ssl_clnt_cert_fn;
++ ENGINE_get_ssl_client_cert_function;
++ ENGINE_get_ssl_client_cert_fn;
++ ENGINE_load_ssl_client_cert;
++ ENGINE_load_capi;
++ OPENSSL_isservice;
++ FIPS_dsa_sig_decode;
++ EVP_CIPHER_CTX_clear_flags;
++ FIPS_rand_status;
++ FIPS_rand_set_key;
++ CRYPTO_set_mem_info_functions;
++ RSA_X931_generate_key_ex;
++ int_ERR_set_state_func;
++ int_EVP_MD_set_engine_callbacks;
++ int_CRYPTO_set_do_dynlock_callback;
++ FIPS_rng_stick;
++ EVP_CIPHER_CTX_set_flags;
++ BN_X931_generate_prime_ex;
++ FIPS_selftest_check;
++ FIPS_rand_set_dt;
++ CRYPTO_dbg_pop_info;
++ FIPS_dsa_free;
++ RSA_X931_derive_ex;
++ FIPS_rsa_new;
++ FIPS_rand_bytes;
++ fips_cipher_test;
++ EVP_CIPHER_CTX_test_flags;
++ CRYPTO_malloc_debug_init;
++ CRYPTO_dbg_push_info;
++ FIPS_corrupt_rsa_keygen;
++ FIPS_dh_new;
++ FIPS_corrupt_dsa_keygen;
++ FIPS_dh_free;
++ fips_pkey_signature_test;
++ EVP_add_alg_module;
++ int_RAND_init_engine_callbacks;
++ int_EVP_CIPHER_set_engine_callbacks;
++ int_EVP_MD_init_engine_callbacks;
++ FIPS_rand_test_mode;
++ FIPS_rand_reset;
++ FIPS_dsa_new;
++ int_RAND_set_callbacks;
++ BN_X931_derive_prime_ex;
++ int_ERR_lib_init;
++ int_EVP_CIPHER_init_engine_callbacks;
++ FIPS_rsa_free;
++ FIPS_dsa_sig_encode;
++ CRYPTO_dbg_remove_all_info;
++ OPENSSL_init;
++ CRYPTO_strdup;
++ JPAKE_STEP3A_process;
++ JPAKE_STEP1_release;
++ JPAKE_get_shared_key;
++ JPAKE_STEP3B_init;
++ JPAKE_STEP1_generate;
++ JPAKE_STEP1_init;
++ JPAKE_STEP3B_process;
++ JPAKE_STEP2_generate;
++ JPAKE_CTX_new;
++ JPAKE_CTX_free;
++ JPAKE_STEP3B_release;
++ JPAKE_STEP3A_release;
++ JPAKE_STEP2_process;
++ JPAKE_STEP3B_generate;
++ JPAKE_STEP1_process;
++ JPAKE_STEP3A_generate;
++ JPAKE_STEP2_release;
++ JPAKE_STEP3A_init;
++ ERR_load_JPAKE_strings;
++ JPAKE_STEP2_init;
++ pqueue_size;
++ i2d_TS_ACCURACY;
++ i2d_TS_MSG_IMPRINT_fp;
++ i2d_TS_MSG_IMPRINT;
++ EVP_PKEY_print_public;
++ EVP_PKEY_CTX_new;
++ i2d_TS_TST_INFO;
++ EVP_PKEY_asn1_find;
++ DSO_METHOD_beos;
++ TS_CONF_load_cert;
++ TS_REQ_get_ext;
++ EVP_PKEY_sign_init;
++ ASN1_item_print;
++ TS_TST_INFO_set_nonce;
++ TS_RESP_dup;
++ ENGINE_register_pkey_meths;
++ EVP_PKEY_asn1_add0;
++ PKCS7_add0_attrib_signing_time;
++ i2d_TS_TST_INFO_fp;
++ BIO_asn1_get_prefix;
++ TS_TST_INFO_set_time;
++ EVP_PKEY_meth_set_decrypt;
++ EVP_PKEY_set_type_str;
++ EVP_PKEY_CTX_get_keygen_info;
++ TS_REQ_set_policy_id;
++ d2i_TS_RESP_fp;
++ ENGINE_get_pkey_asn1_meth_engine;
++ ENGINE_get_pkey_asn1_meth_eng;
++ WHIRLPOOL_Init;
++ TS_RESP_set_status_info;
++ EVP_PKEY_keygen;
++ EVP_DigestSignInit;
++ TS_ACCURACY_set_millis;
++ TS_REQ_dup;
++ GENERAL_NAME_dup;
++ ASN1_SEQUENCE_ANY_it;
++ ASN1_SEQUENCE_ANY_it;
++ WHIRLPOOL;
++ X509_STORE_get1_crls;
++ ENGINE_get_pkey_asn1_meth;
++ EVP_PKEY_asn1_new;
++ BIO_new_NDEF;
++ ENGINE_get_pkey_meth;
++ TS_MSG_IMPRINT_set_algo;
++ i2d_TS_TST_INFO_bio;
++ TS_TST_INFO_set_ordering;
++ TS_TST_INFO_get_ext_by_OBJ;
++ CRYPTO_THREADID_set_pointer;
++ TS_CONF_get_tsa_section;
++ SMIME_write_ASN1;
++ TS_RESP_CTX_set_signer_key;
++ EVP_PKEY_encrypt_old;
++ EVP_PKEY_encrypt_init;
++ CRYPTO_THREADID_cpy;
++ ASN1_PCTX_get_cert_flags;
++ i2d_ESS_SIGNING_CERT;
++ TS_CONF_load_key;
++ i2d_ASN1_SEQUENCE_ANY;
++ d2i_TS_MSG_IMPRINT_bio;
++ EVP_PKEY_asn1_set_public;
++ b2i_PublicKey_bio;
++ BIO_asn1_set_prefix;
++ EVP_PKEY_new_mac_key;
++ BIO_new_CMS;
++ CRYPTO_THREADID_cmp;
++ TS_REQ_ext_free;
++ EVP_PKEY_asn1_set_free;
++ EVP_PKEY_get0_asn1;
++ d2i_NETSCAPE_X509;
++ EVP_PKEY_verify_recover_init;
++ EVP_PKEY_CTX_set_data;
++ EVP_PKEY_keygen_init;
++ TS_RESP_CTX_set_status_info;
++ TS_MSG_IMPRINT_get_algo;
++ TS_REQ_print_bio;
++ EVP_PKEY_CTX_ctrl_str;
++ EVP_PKEY_get_default_digest_nid;
++ PEM_write_bio_PKCS7_stream;
++ TS_MSG_IMPRINT_print_bio;
++ BN_asc2bn;
++ TS_REQ_get_policy_id;
++ ENGINE_set_default_pkey_asn1_meths;
++ ENGINE_set_def_pkey_asn1_meths;
++ d2i_TS_ACCURACY;
++ DSO_global_lookup;
++ TS_CONF_set_tsa_name;
++ i2d_ASN1_SET_ANY;
++ ENGINE_load_gost;
++ WHIRLPOOL_BitUpdate;
++ ASN1_PCTX_get_flags;
++ TS_TST_INFO_get_ext_by_NID;
++ TS_RESP_new;
++ ESS_CERT_ID_dup;
++ TS_STATUS_INFO_dup;
++ TS_REQ_delete_ext;
++ EVP_DigestVerifyFinal;
++ EVP_PKEY_print_params;
++ i2d_CMS_bio_stream;
++ TS_REQ_get_msg_imprint;
++ OBJ_find_sigid_by_algs;
++ TS_TST_INFO_get_serial;
++ TS_REQ_get_nonce;
++ X509_PUBKEY_set0_param;
++ EVP_PKEY_CTX_set0_keygen_info;
++ DIST_POINT_set_dpname;
++ i2d_ISSUING_DIST_POINT;
++ ASN1_SET_ANY_it;
++ ASN1_SET_ANY_it;
++ EVP_PKEY_CTX_get_data;
++ TS_STATUS_INFO_print_bio;
++ EVP_PKEY_derive_init;
++ d2i_TS_TST_INFO;
++ EVP_PKEY_asn1_add_alias;
++ d2i_TS_RESP_bio;
++ OTHERNAME_cmp;
++ GENERAL_NAME_set0_value;
++ PKCS7_RECIP_INFO_get0_alg;
++ TS_RESP_CTX_new;
++ TS_RESP_set_tst_info;
++ PKCS7_final;
++ EVP_PKEY_base_id;
++ TS_RESP_CTX_set_signer_cert;
++ TS_REQ_set_msg_imprint;
++ EVP_PKEY_CTX_ctrl;
++ TS_CONF_set_digests;
++ d2i_TS_MSG_IMPRINT;
++ EVP_PKEY_meth_set_ctrl;
++ TS_REQ_get_ext_by_NID;
++ PKCS5_pbe_set0_algor;
++ BN_BLINDING_thread_id;
++ TS_ACCURACY_new;
++ X509_CRL_METHOD_free;
++ ASN1_PCTX_get_nm_flags;
++ EVP_PKEY_meth_set_sign;
++ CRYPTO_THREADID_current;
++ EVP_PKEY_decrypt_init;
++ NETSCAPE_X509_free;
++ i2b_PVK_bio;
++ EVP_PKEY_print_private;
++ GENERAL_NAME_get0_value;
++ b2i_PVK_bio;
++ ASN1_UTCTIME_adj;
++ TS_TST_INFO_new;
++ EVP_MD_do_all_sorted;
++ TS_CONF_set_default_engine;
++ TS_ACCURACY_set_seconds;
++ TS_TST_INFO_get_time;
++ PKCS8_pkey_get0;
++ EVP_PKEY_asn1_get0;
++ OBJ_add_sigid;
++ PKCS7_SIGNER_INFO_sign;
++ EVP_PKEY_paramgen_init;
++ EVP_PKEY_sign;
++ OBJ_sigid_free;
++ EVP_PKEY_meth_set_init;
++ d2i_ESS_ISSUER_SERIAL;
++ ISSUING_DIST_POINT_new;
++ ASN1_TIME_adj;
++ TS_OBJ_print_bio;
++ EVP_PKEY_meth_set_verify_recover;
++ EVP_PKEY_meth_set_vrfy_recover;
++ TS_RESP_get_status_info;
++ CMS_stream;
++ EVP_PKEY_CTX_set_cb;
++ PKCS7_to_TS_TST_INFO;
++ ASN1_PCTX_get_oid_flags;
++ TS_TST_INFO_add_ext;
++ EVP_PKEY_meth_set_derive;
++ i2d_TS_RESP_fp;
++ i2d_TS_MSG_IMPRINT_bio;
++ TS_RESP_CTX_set_accuracy;
++ TS_REQ_set_nonce;
++ ESS_CERT_ID_new;
++ ENGINE_pkey_asn1_find_str;
++ TS_REQ_get_ext_count;
++ BUF_reverse;
++ TS_TST_INFO_print_bio;
++ d2i_ISSUING_DIST_POINT;
++ ENGINE_get_pkey_meths;
++ i2b_PrivateKey_bio;
++ i2d_TS_RESP;
++ b2i_PublicKey;
++ TS_VERIFY_CTX_cleanup;
++ TS_STATUS_INFO_free;
++ TS_RESP_verify_token;
++ OBJ_bsearch_ex_;
++ ASN1_bn_print;
++ EVP_PKEY_asn1_get_count;
++ ENGINE_register_pkey_asn1_meths;
++ ASN1_PCTX_set_nm_flags;
++ EVP_DigestVerifyInit;
++ ENGINE_set_default_pkey_meths;
++ TS_TST_INFO_get_policy_id;
++ TS_REQ_get_cert_req;
++ X509_CRL_set_meth_data;
++ PKCS8_pkey_set0;
++ ASN1_STRING_copy;
++ d2i_TS_TST_INFO_fp;
++ X509_CRL_match;
++ EVP_PKEY_asn1_set_private;
++ TS_TST_INFO_get_ext_d2i;
++ TS_RESP_CTX_add_policy;
++ d2i_TS_RESP;
++ TS_CONF_load_certs;
++ TS_TST_INFO_get_msg_imprint;
++ ERR_load_TS_strings;
++ TS_TST_INFO_get_version;
++ EVP_PKEY_CTX_dup;
++ EVP_PKEY_meth_set_verify;
++ i2b_PublicKey_bio;
++ TS_CONF_set_certs;
++ EVP_PKEY_asn1_get0_info;
++ TS_VERIFY_CTX_free;
++ TS_REQ_get_ext_by_critical;
++ TS_RESP_CTX_set_serial_cb;
++ X509_CRL_get_meth_data;
++ TS_RESP_CTX_set_time_cb;
++ TS_MSG_IMPRINT_get_msg;
++ TS_TST_INFO_ext_free;
++ TS_REQ_get_version;
++ TS_REQ_add_ext;
++ EVP_PKEY_CTX_set_app_data;
++ OBJ_bsearch_;
++ EVP_PKEY_meth_set_verifyctx;
++ i2d_PKCS7_bio_stream;
++ CRYPTO_THREADID_set_numeric;
++ PKCS7_sign_add_signer;
++ d2i_TS_TST_INFO_bio;
++ TS_TST_INFO_get_ordering;
++ TS_RESP_print_bio;
++ TS_TST_INFO_get_exts;
++ HMAC_CTX_copy;
++ PKCS5_pbe2_set_iv;
++ ENGINE_get_pkey_asn1_meths;
++ b2i_PrivateKey;
++ EVP_PKEY_CTX_get_app_data;
++ TS_REQ_set_cert_req;
++ CRYPTO_THREADID_set_callback;
++ TS_CONF_set_serial;
++ TS_TST_INFO_free;
++ d2i_TS_REQ_fp;
++ TS_RESP_verify_response;
++ i2d_ESS_ISSUER_SERIAL;
++ TS_ACCURACY_get_seconds;
++ EVP_CIPHER_do_all;
++ b2i_PrivateKey_bio;
++ OCSP_CERTID_dup;
++ X509_PUBKEY_get0_param;
++ TS_MSG_IMPRINT_dup;
++ PKCS7_print_ctx;
++ i2d_TS_REQ_bio;
++ EVP_whirlpool;
++ EVP_PKEY_asn1_set_param;
++ EVP_PKEY_meth_set_encrypt;
++ ASN1_PCTX_set_flags;
++ i2d_ESS_CERT_ID;
++ TS_VERIFY_CTX_new;
++ TS_RESP_CTX_set_extension_cb;
++ ENGINE_register_all_pkey_meths;
++ TS_RESP_CTX_set_status_info_cond;
++ TS_RESP_CTX_set_stat_info_cond;
++ EVP_PKEY_verify;
++ WHIRLPOOL_Final;
++ X509_CRL_METHOD_new;
++ EVP_DigestSignFinal;
++ TS_RESP_CTX_set_def_policy;
++ NETSCAPE_X509_it;
++ NETSCAPE_X509_it;
++ TS_RESP_create_response;
++ PKCS7_SIGNER_INFO_get0_algs;
++ TS_TST_INFO_get_nonce;
++ EVP_PKEY_decrypt_old;
++ TS_TST_INFO_set_policy_id;
++ TS_CONF_set_ess_cert_id_chain;
++ EVP_PKEY_CTX_get0_pkey;
++ d2i_TS_REQ;
++ EVP_PKEY_asn1_find_str;
++ BIO_f_asn1;
++ ESS_SIGNING_CERT_new;
++ EVP_PBE_find;
++ X509_CRL_get0_by_cert;
++ EVP_PKEY_derive;
++ i2d_TS_REQ;
++ TS_TST_INFO_delete_ext;
++ ESS_ISSUER_SERIAL_free;
++ ASN1_PCTX_set_str_flags;
++ ENGINE_get_pkey_asn1_meth_str;
++ TS_CONF_set_signer_key;
++ TS_ACCURACY_get_millis;
++ TS_RESP_get_token;
++ TS_ACCURACY_dup;
++ ENGINE_register_all_pkey_asn1_meths;
++ ENGINE_reg_all_pkey_asn1_meths;
++ X509_CRL_set_default_method;
++ CRYPTO_THREADID_hash;
++ CMS_ContentInfo_print_ctx;
++ TS_RESP_free;
++ ISSUING_DIST_POINT_free;
++ ESS_ISSUER_SERIAL_new;
++ CMS_add1_crl;
++ PKCS7_add1_attrib_digest;
++ TS_RESP_CTX_add_md;
++ TS_TST_INFO_dup;
++ ENGINE_set_pkey_asn1_meths;
++ PEM_write_bio_Parameters;
++ TS_TST_INFO_get_accuracy;
++ X509_CRL_get0_by_serial;
++ TS_TST_INFO_set_version;
++ TS_RESP_CTX_get_tst_info;
++ TS_RESP_verify_signature;
++ CRYPTO_THREADID_get_callback;
++ TS_TST_INFO_get_tsa;
++ TS_STATUS_INFO_new;
++ EVP_PKEY_CTX_get_cb;
++ TS_REQ_get_ext_d2i;
++ GENERAL_NAME_set0_othername;
++ TS_TST_INFO_get_ext_count;
++ TS_RESP_CTX_get_request;
++ i2d_NETSCAPE_X509;
++ ENGINE_get_pkey_meth_engine;
++ EVP_PKEY_meth_set_signctx;
++ EVP_PKEY_asn1_copy;
++ ASN1_TYPE_cmp;
++ EVP_CIPHER_do_all_sorted;
++ EVP_PKEY_CTX_free;
++ ISSUING_DIST_POINT_it;
++ ISSUING_DIST_POINT_it;
++ d2i_TS_MSG_IMPRINT_fp;
++ X509_STORE_get1_certs;
++ EVP_PKEY_CTX_get_operation;
++ d2i_ESS_SIGNING_CERT;
++ TS_CONF_set_ordering;
++ EVP_PBE_alg_add_type;
++ TS_REQ_set_version;
++ EVP_PKEY_get0;
++ BIO_asn1_set_suffix;
++ i2d_TS_STATUS_INFO;
++ EVP_MD_do_all;
++ TS_TST_INFO_set_accuracy;
++ PKCS7_add_attrib_content_type;
++ ERR_remove_thread_state;
++ EVP_PKEY_meth_add0;
++ TS_TST_INFO_set_tsa;
++ EVP_PKEY_meth_new;
++ WHIRLPOOL_Update;
++ TS_CONF_set_accuracy;
++ ASN1_PCTX_set_oid_flags;
++ ESS_SIGNING_CERT_dup;
++ d2i_TS_REQ_bio;
++ X509_time_adj_ex;
++ TS_RESP_CTX_add_flags;
++ d2i_TS_STATUS_INFO;
++ TS_MSG_IMPRINT_set_msg;
++ BIO_asn1_get_suffix;
++ TS_REQ_free;
++ EVP_PKEY_meth_free;
++ TS_REQ_get_exts;
++ TS_RESP_CTX_set_clock_precision_digits;
++ TS_RESP_CTX_set_clk_prec_digits;
++ TS_RESP_CTX_add_failure_info;
++ i2d_TS_RESP_bio;
++ EVP_PKEY_CTX_get0_peerkey;
++ PEM_write_bio_CMS_stream;
++ TS_REQ_new;
++ TS_MSG_IMPRINT_new;
++ EVP_PKEY_meth_find;
++ EVP_PKEY_id;
++ TS_TST_INFO_set_serial;
++ a2i_GENERAL_NAME;
++ TS_CONF_set_crypto_device;
++ EVP_PKEY_verify_init;
++ TS_CONF_set_policies;
++ ASN1_PCTX_new;
++ ESS_CERT_ID_free;
++ ENGINE_unregister_pkey_meths;
++ TS_MSG_IMPRINT_free;
++ TS_VERIFY_CTX_init;
++ PKCS7_stream;
++ TS_RESP_CTX_set_certs;
++ TS_CONF_set_def_policy;
++ ASN1_GENERALIZEDTIME_adj;
++ NETSCAPE_X509_new;
++ TS_ACCURACY_free;
++ TS_RESP_get_tst_info;
++ EVP_PKEY_derive_set_peer;
++ PEM_read_bio_Parameters;
++ TS_CONF_set_clock_precision_digits;
++ TS_CONF_set_clk_prec_digits;
++ ESS_ISSUER_SERIAL_dup;
++ TS_ACCURACY_get_micros;
++ ASN1_PCTX_get_str_flags;
++ NAME_CONSTRAINTS_check;
++ ASN1_BIT_STRING_check;
++ X509_check_akid;
++ ENGINE_unregister_pkey_asn1_meths;
++ ENGINE_unreg_pkey_asn1_meths;
++ ASN1_PCTX_free;
++ PEM_write_bio_ASN1_stream;
++ i2d_ASN1_bio_stream;
++ TS_X509_ALGOR_print_bio;
++ EVP_PKEY_meth_set_cleanup;
++ EVP_PKEY_asn1_free;
++ ESS_SIGNING_CERT_free;
++ TS_TST_INFO_set_msg_imprint;
++ GENERAL_NAME_cmp;
++ d2i_ASN1_SET_ANY;
++ ENGINE_set_pkey_meths;
++ i2d_TS_REQ_fp;
++ d2i_ASN1_SEQUENCE_ANY;
++ GENERAL_NAME_get0_otherName;
++ d2i_ESS_CERT_ID;
++ OBJ_find_sigid_algs;
++ EVP_PKEY_meth_set_keygen;
++ PKCS5_PBKDF2_HMAC;
++ EVP_PKEY_paramgen;
++ EVP_PKEY_meth_set_paramgen;
++ BIO_new_PKCS7;
++ EVP_PKEY_verify_recover;
++ TS_ext_print_bio;
++ TS_ASN1_INTEGER_print_bio;
++ check_defer;
++ DSO_pathbyaddr;
++ EVP_PKEY_set_type;
++ TS_ACCURACY_set_micros;
++ TS_REQ_to_TS_VERIFY_CTX;
++ EVP_PKEY_meth_set_copy;
++ ASN1_PCTX_set_cert_flags;
++ TS_TST_INFO_get_ext;
++ EVP_PKEY_asn1_set_ctrl;
++ TS_TST_INFO_get_ext_by_critical;
++ EVP_PKEY_CTX_new_id;
++ TS_REQ_get_ext_by_OBJ;
++ TS_CONF_set_signer_cert;
++ X509_NAME_hash_old;
++ ASN1_TIME_set_string;
++ EVP_MD_flags;
++ TS_RESP_CTX_free;
++ DSAparams_dup;
++ DHparams_dup;
++ OCSP_REQ_CTX_add1_header;
++ OCSP_REQ_CTX_set1_req;
++ X509_STORE_set_verify_cb;
++ X509_STORE_CTX_get0_current_crl;
++ X509_STORE_CTX_get0_parent_ctx;
++ X509_STORE_CTX_get0_current_issuer;
++ X509_STORE_CTX_get0_cur_issuer;
++ X509_issuer_name_hash_old;
++ X509_subject_name_hash_old;
++ EVP_CIPHER_CTX_copy;
++ UI_method_get_prompt_constructor;
++ UI_method_get_prompt_constructr;
++ UI_method_set_prompt_constructor;
++ UI_method_set_prompt_constructr;
++ EVP_read_pw_string_min;
++ CRYPTO_cts128_encrypt;
++ CRYPTO_cts128_decrypt_block;
++ CRYPTO_cfb128_1_encrypt;
++ CRYPTO_cbc128_encrypt;
++ CRYPTO_ctr128_encrypt;
++ CRYPTO_ofb128_encrypt;
++ CRYPTO_cts128_decrypt;
++ CRYPTO_cts128_encrypt_block;
++ CRYPTO_cbc128_decrypt;
++ CRYPTO_cfb128_encrypt;
++ CRYPTO_cfb128_8_encrypt;
++
++ local:
++ *;
++};
++
++
++OPENSSL_1.0.1 {
++ global:
++ SSL_renegotiate_abbreviated;
++ TLSv1_1_method;
++ TLSv1_1_client_method;
++ TLSv1_1_server_method;
++ SSL_CTX_set_srp_client_pwd_callback;
++ SSL_CTX_set_srp_client_pwd_cb;
++ SSL_get_srp_g;
++ SSL_CTX_set_srp_username_callback;
++ SSL_CTX_set_srp_un_cb;
++ SSL_get_srp_userinfo;
++ SSL_set_srp_server_param;
++ SSL_set_srp_server_param_pw;
++ SSL_get_srp_N;
++ SSL_get_srp_username;
++ SSL_CTX_set_srp_password;
++ SSL_CTX_set_srp_strength;
++ SSL_CTX_set_srp_verify_param_callback;
++ SSL_CTX_set_srp_vfy_param_cb;
++ SSL_CTX_set_srp_cb_arg;
++ SSL_CTX_set_srp_username;
++ SSL_CTX_SRP_CTX_init;
++ SSL_SRP_CTX_init;
++ SRP_Calc_A_param;
++ SRP_generate_server_master_secret;
++ SRP_gen_server_master_secret;
++ SSL_CTX_SRP_CTX_free;
++ SRP_generate_client_master_secret;
++ SRP_gen_client_master_secret;
++ SSL_srp_server_param_with_username;
++ SSL_srp_server_param_with_un;
++ SSL_SRP_CTX_free;
++ SSL_set_debug;
++ SSL_SESSION_get0_peer;
++ TLSv1_2_client_method;
++ SSL_SESSION_set1_id_context;
++ TLSv1_2_server_method;
++ SSL_cache_hit;
++ SSL_get0_kssl_ctx;
++ SSL_set0_kssl_ctx;
++ SSL_set_state;
++ SSL_CIPHER_get_id;
++ TLSv1_2_method;
++ kssl_ctx_get0_client_princ;
++ SSL_export_keying_material;
++ SSL_set_tlsext_use_srtp;
++ SSL_CTX_set_next_protos_advertised_cb;
++ SSL_CTX_set_next_protos_adv_cb;
++ SSL_get0_next_proto_negotiated;
++ SSL_get_selected_srtp_profile;
++ SSL_CTX_set_tlsext_use_srtp;
++ SSL_select_next_proto;
++ SSL_get_srtp_profiles;
++ SSL_CTX_set_next_proto_select_cb;
++ SSL_CTX_set_next_proto_sel_cb;
++ SSL_SESSION_get_compress_id;
++
++ SRP_VBASE_get_by_user;
++ SRP_Calc_server_key;
++ SRP_create_verifier;
++ SRP_create_verifier_BN;
++ SRP_Calc_u;
++ SRP_VBASE_free;
++ SRP_Calc_client_key;
++ SRP_get_default_gN;
++ SRP_Calc_x;
++ SRP_Calc_B;
++ SRP_VBASE_new;
++ SRP_check_known_gN_param;
++ SRP_Calc_A;
++ SRP_Verify_A_mod_N;
++ SRP_VBASE_init;
++ SRP_Verify_B_mod_N;
++ EC_KEY_set_public_key_affine_coordinates;
++ EC_KEY_set_pub_key_aff_coords;
++ EVP_aes_192_ctr;
++ EVP_PKEY_meth_get0_info;
++ EVP_PKEY_meth_copy;
++ ERR_add_error_vdata;
++ EVP_aes_128_ctr;
++ EVP_aes_256_ctr;
++ EC_GFp_nistp224_method;
++ EC_KEY_get_flags;
++ RSA_padding_add_PKCS1_PSS_mgf1;
++ EVP_aes_128_xts;
++ EVP_aes_256_xts;
++ EVP_aes_128_gcm;
++ EC_KEY_clear_flags;
++ EC_KEY_set_flags;
++ EVP_aes_256_ccm;
++ RSA_verify_PKCS1_PSS_mgf1;
++ EVP_aes_128_ccm;
++ EVP_aes_192_gcm;
++ X509_ALGOR_set_md;
++ RAND_init_fips;
++ EVP_aes_256_gcm;
++ EVP_aes_192_ccm;
++ CMAC_CTX_copy;
++ CMAC_CTX_free;
++ CMAC_CTX_get0_cipher_ctx;
++ CMAC_CTX_cleanup;
++ CMAC_Init;
++ CMAC_Update;
++ CMAC_resume;
++ CMAC_CTX_new;
++ CMAC_Final;
++ CRYPTO_ctr128_encrypt_ctr32;
++ CRYPTO_gcm128_release;
++ CRYPTO_ccm128_decrypt_ccm64;
++ CRYPTO_ccm128_encrypt;
++ CRYPTO_gcm128_encrypt;
++ CRYPTO_xts128_encrypt;
++ EVP_rc4_hmac_md5;
++ CRYPTO_nistcts128_decrypt_block;
++ CRYPTO_gcm128_setiv;
++ CRYPTO_nistcts128_encrypt;
++ EVP_aes_128_cbc_hmac_sha1;
++ CRYPTO_gcm128_tag;
++ CRYPTO_ccm128_encrypt_ccm64;
++ ENGINE_load_rdrand;
++ CRYPTO_ccm128_setiv;
++ CRYPTO_nistcts128_encrypt_block;
++ CRYPTO_gcm128_aad;
++ CRYPTO_ccm128_init;
++ CRYPTO_nistcts128_decrypt;
++ CRYPTO_gcm128_new;
++ CRYPTO_ccm128_tag;
++ CRYPTO_ccm128_decrypt;
++ CRYPTO_ccm128_aad;
++ CRYPTO_gcm128_init;
++ CRYPTO_gcm128_decrypt;
++ ENGINE_load_rsax;
++ CRYPTO_gcm128_decrypt_ctr32;
++ CRYPTO_gcm128_encrypt_ctr32;
++ CRYPTO_gcm128_finish;
++ EVP_aes_256_cbc_hmac_sha1;
++ PKCS5_pbkdf2_set;
++ CMS_add0_recipient_password;
++ CMS_decrypt_set1_password;
++ CMS_RecipientInfo_set0_password;
++ RAND_set_fips_drbg_type;
++ X509_REQ_sign_ctx;
++ RSA_PSS_PARAMS_new;
++ X509_CRL_sign_ctx;
++ X509_signature_dump;
++ d2i_RSA_PSS_PARAMS;
++ RSA_PSS_PARAMS_it;
++ RSA_PSS_PARAMS_it;
++ RSA_PSS_PARAMS_free;
++ X509_sign_ctx;
++ i2d_RSA_PSS_PARAMS;
++ ASN1_item_sign_ctx;
++ EC_GFp_nistp521_method;
++ EC_GFp_nistp256_method;
++ OPENSSL_stderr;
++ OPENSSL_cpuid_setup;
++ OPENSSL_showfatal;
++ BIO_new_dgram_sctp;
++ BIO_dgram_sctp_msg_waiting;
++ BIO_dgram_sctp_wait_for_dry;
++ BIO_s_datagram_sctp;
++ BIO_dgram_is_sctp;
++ BIO_dgram_sctp_notification_cb;
++} OPENSSL_1.0.0;
++
++OPENSSL_1.0.1d {
++ global:
++ CRYPTO_memcmp;
++} OPENSSL_1.0.1;
++
+Index: openssl-1.0.1d/engines/openssl.ld
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ openssl-1.0.1d/engines/openssl.ld 2013-02-06 19:41:43.000000000 +0100
+@@ -0,0 +1,10 @@
++OPENSSL_1.0.0 {
++ global:
++ bind_engine;
++ v_check;
++ OPENSSL_init;
++ OPENSSL_finish;
++ local:
++ *;
++};
++
+Index: openssl-1.0.1d/engines/ccgost/openssl.ld
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ openssl-1.0.1d/engines/ccgost/openssl.ld 2013-02-06 19:41:43.000000000 +0100
+@@ -0,0 +1,10 @@
++OPENSSL_1.0.0 {
++ global:
++ bind_engine;
++ v_check;
++ OPENSSL_init;
++ OPENSSL_finish;
++ local:
++ *;
++};
++
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch
new file mode 100644
index 0000000..d8a6f1a
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch
@@ -0,0 +1,56 @@
+Upstream-Status: Inappropriate [configuration]
+
+
+Index: openssl-1.0.0/engines/Makefile
+===================================================================
+--- openssl-1.0.0.orig/engines/Makefile
++++ openssl-1.0.0/engines/Makefile
+@@ -107,7 +107,7 @@
+ @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile...
+ @if [ -n "$(SHARED_LIBS)" ]; then \
+ set -e; \
+- $(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines; \
++ $(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines; \
+ for l in $(LIBNAMES); do \
+ ( echo installing $$l; \
+ pfx=lib; \
+@@ -119,13 +119,13 @@
+ *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \
+ *) sfx=".bad";; \
+ esac; \
+- cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
++ cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \
+ else \
+ sfx=".so"; \
+- cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
++ cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \
+ fi; \
+- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
+- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \
++ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \
++ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx ); \
+ done; \
+ fi
+ @target=install; $(RECURSIVE_MAKE)
+Index: openssl-1.0.0/engines/ccgost/Makefile
+===================================================================
+--- openssl-1.0.0.orig/engines/ccgost/Makefile
++++ openssl-1.0.0/engines/ccgost/Makefile
+@@ -53,13 +53,13 @@
+ *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \
+ *) sfx=".bad";; \
+ esac; \
+- cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \
++ cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \
+ else \
+ sfx=".so"; \
+- cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \
++ cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \
+ fi; \
+- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \
+- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx; \
++ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \
++ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx; \
+ fi
+
+ links:
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl b/meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl
new file mode 100644
index 0000000..8e1b42c
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl
@@ -0,0 +1,54 @@
+warn "Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n";
+
+# This library is deprecated and unmaintained. It is included for
+# compatibility with Perl 4 scripts which may use it, but it will be
+# removed in a future version of Perl. Please use the File::Find module
+# instead.
+
+# Usage:
+# require "find.pl";
+#
+# &find('/foo','/bar');
+#
+# sub wanted { ... }
+# where wanted does whatever you want. $dir contains the
+# current directory name, and $_ the current filename within
+# that directory. $name contains "$dir/$_". You are cd'ed
+# to $dir when the function is called. The function may
+# set $prune to prune the tree.
+#
+# For example,
+#
+# find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune
+#
+# corresponds to this
+#
+# sub wanted {
+# /^\.nfs.*$/ &&
+# (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
+# int(-M _) > 7 &&
+# unlink($_)
+# ||
+# ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
+# $dev < 0 &&
+# ($prune = 1);
+# }
+#
+# Set the variable $dont_use_nlink if you're using AFS, since AFS cheats.
+
+use File::Find ();
+
+*name = *File::Find::name;
+*prune = *File::Find::prune;
+*dir = *File::Find::dir;
+*topdir = *File::Find::topdir;
+*topdev = *File::Find::topdev;
+*topino = *File::Find::topino;
+*topmode = *File::Find::topmode;
+*topnlink = *File::Find::topnlink;
+
+sub find {
+ &File::Find::find(\&wanted, @_);
+}
+
+1;
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch
new file mode 100644
index 0000000..f0e1778
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch
@@ -0,0 +1,22 @@
+Upstream-Status: Submitted
+
+This patch adds the fix for one of the ciphers used in openssl, namely
+the cipher des-ede3-cfb1. Complete bug log and patch is present here:
+http://rt.openssl.org/Ticket/Display.html?id=2867
+
+Signed-Off-By: Muhammad Shakeel <muhammad_shakeel@mentor.com>
+
+diff --git a/crypto/evp/e_des3.c b/crypto/evp/e_des3.c
+index 3232cfe..df84922 100644
+===================================================================
+--- a/crypto/evp/e_des3.c
++++ b/crypto/evp/e_des3.c
+@@ -173,7 +173,7 @@ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
+ size_t n;
+ unsigned char c[1],d[1];
+
+- for(n=0 ; n < inl ; ++n)
++ for(n=0 ; n < inl*8 ; ++n)
+ {
+ c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
+ DES_ede3_cfb_encrypt(c,d,1,1,
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch
new file mode 100644
index 0000000..2185ff8
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch
@@ -0,0 +1,119 @@
+From: Andy Polyakov <appro@openssl.org>
+Date: Sun, 13 Oct 2013 17:15:15 +0000 (+0200)
+Subject: Initial aarch64 bits.
+X-Git-Url: http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=039081b80977e2a5de84e1f88f8b4d025b559956
+
+Initial aarch64 bits.
+---
+ crypto/bn/bn_lcl.h | 9 +++++++++
+ crypto/md32_common.h | 18 ++++++++++++++++++
+ crypto/modes/modes_lcl.h | 8 ++++++++
+ crypto/sha/sha512.c | 13 +++++++++++++
+ 4 files changed, 48 insertions(+)
+
+Index: openssl-1.0.1f/crypto/bn/bn_lcl.h
+===================================================================
+--- openssl-1.0.1f.orig/crypto/bn/bn_lcl.h 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/crypto/bn/bn_lcl.h 2014-02-28 10:37:55.495979037 +0200
+@@ -300,6 +300,15 @@
+ : "r"(a), "r"(b));
+ # endif
+ # endif
++# elif defined(__aarch64__) && defined(SIXTY_FOUR_BIT_LONG)
++# if defined(__GNUC__) && __GNUC__>=2
++# define BN_UMULT_HIGH(a,b) ({ \
++ register BN_ULONG ret; \
++ asm ("umulh %0,%1,%2" \
++ : "=r"(ret) \
++ : "r"(a), "r"(b)); \
++ ret; })
++# endif
+ # endif /* cpu */
+ #endif /* OPENSSL_NO_ASM */
+
+Index: openssl-1.0.1f/crypto/md32_common.h
+===================================================================
+--- openssl-1.0.1f.orig/crypto/md32_common.h 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/crypto/md32_common.h 2014-02-28 10:39:21.751979107 +0200
+@@ -213,6 +213,24 @@
+ asm ("bswapl %0":"=r"(r):"0"(r)); \
+ *((unsigned int *)(c))=r; (c)+=4; r; })
+ # endif
++# elif defined(__aarch64__)
++# if defined(__BYTE_ORDER__)
++# if defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
++# define HOST_c2l(c,l) ({ unsigned int r; \
++ asm ("rev %w0,%w1" \
++ :"=r"(r) \
++ :"r"(*((const unsigned int *)(c))));\
++ (c)+=4; (l)=r; })
++# define HOST_l2c(l,c) ({ unsigned int r; \
++ asm ("rev %w0,%w1" \
++ :"=r"(r) \
++ :"r"((unsigned int)(l)));\
++ *((unsigned int *)(c))=r; (c)+=4; r; })
++# elif defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
++# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, (l))
++# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, (l))
++# endif
++# endif
+ # endif
+ # endif
+ #endif
+Index: openssl-1.0.1f/crypto/modes/modes_lcl.h
+===================================================================
+--- openssl-1.0.1f.orig/crypto/modes/modes_lcl.h 2014-02-28 10:47:48.731979011 +0200
++++ openssl-1.0.1f/crypto/modes/modes_lcl.h 2014-02-28 10:48:49.707978919 +0200
+@@ -29,6 +29,7 @@
+ #if defined(__i386) || defined(__i386__) || \
+ defined(__x86_64) || defined(__x86_64__) || \
+ defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \
++ defined(__aarch64__) || \
+ defined(__s390__) || defined(__s390x__)
+ # undef STRICT_ALIGNMENT
+ #endif
+@@ -50,6 +51,13 @@
+ # define BSWAP4(x) ({ u32 ret=(x); \
+ asm ("bswapl %0" \
+ : "+r"(ret)); ret; })
++# elif defined(__aarch64__)
++# define BSWAP8(x) ({ u64 ret; \
++ asm ("rev %0,%1" \
++ : "=r"(ret) : "r"(x)); ret; })
++# define BSWAP4(x) ({ u32 ret; \
++ asm ("rev %w0,%w1" \
++ : "=r"(ret) : "r"(x)); ret; })
+ # elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT)
+ # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \
+ asm ("rev %0,%0; rev %1,%1" \
+Index: openssl-1.0.1f/crypto/sha/sha512.c
+===================================================================
+--- openssl-1.0.1f.orig/crypto/sha/sha512.c 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/crypto/sha/sha512.c 2014-02-28 10:52:14.579978981 +0200
+@@ -55,6 +55,7 @@
+ #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
+ defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \
+ defined(__s390__) || defined(__s390x__) || \
++ defined(__aarch64__) || \
+ defined(SHA512_ASM)
+ #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
+ #endif
+@@ -347,6 +348,18 @@
+ asm ("rotrdi %0,%1,%2" \
+ : "=r"(ret) \
+ : "r"(a),"K"(n)); ret; })
++# elif defined(__aarch64__)
++# define ROTR(a,n) ({ SHA_LONG64 ret; \
++ asm ("ror %0,%1,%2" \
++ : "=r"(ret) \
++ : "r"(a),"I"(n)); ret; })
++# if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
++ __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
++# define PULL64(x) ({ SHA_LONG64 ret; \
++ asm ("rev %0,%1" \
++ : "=r"(ret) \
++ : "r"(*((const SHA_LONG64 *)(&(x))))); ret; })
++# endif
+ # endif
+ # elif defined(_MSC_VER)
+ # if defined(_WIN64) /* applies to both IA-64 and AMD64 */
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch
new file mode 100644
index 0000000..292e13d
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch
@@ -0,0 +1,24 @@
+Upstream-Status: Inappropriate [open-embedded]
+
+Index: openssl-1.0.0/Makefile.shared
+===================================================================
+--- openssl-1.0.0.orig/Makefile.shared
++++ openssl-1.0.0/Makefile.shared
+@@ -92,7 +92,7 @@
+ LINK_APP= \
+ ( $(SET_X); \
+ LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
+- LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$${LDFLAGS:-$(CFLAGS)}"; \
++ LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$(OE_LDFLAGS) $${LDFLAGS:-$(CFLAGS)}"; \
+ LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
+ LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
+ LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
+@@ -102,7 +102,7 @@
+ ( $(SET_X); \
+ LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
+ SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
+- SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
++ SHAREDFLAGS="$(OE_LDFLAGS) $${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
+ LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
+ LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
+ LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch
new file mode 100644
index 0000000..0c43919
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch
@@ -0,0 +1,40 @@
+commit 208d54db20d58c9a5e45e856a0650caadd7d9612
+Author: Dr. Stephen Henson <steve@openssl.org>
+Date: Tue May 13 18:48:31 2014 +0100
+
+ Fix for CVE-2014-0195
+
+ A buffer overrun attack can be triggered by sending invalid DTLS fragments
+ to an OpenSSL DTLS client or server. This is potentially exploitable to
+ run arbitrary code on a vulnerable client or server.
+
+ Fixed by adding consistency check for DTLS fragments.
+
+ Thanks to Jüri Aedla for reporting this issue.
+
+Patch borrowed from Fedora
+Upstream-Status: Backport
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/ssl/d1_both.c b/ssl/d1_both.c
+index 2e8cf68..07f67f8 100644
+--- a/ssl/d1_both.c
++++ b/ssl/d1_both.c
+@@ -627,7 +627,16 @@ dtls1_reassemble_fragment(SSL *s, struct hm_header_st* msg_hdr, int *ok)
+ frag->msg_header.frag_off = 0;
+ }
+ else
++ {
+ frag = (hm_fragment*) item->data;
++ if (frag->msg_header.msg_len != msg_hdr->msg_len)
++ {
++ item = NULL;
++ frag = NULL;
++ goto err;
++ }
++ }
++
+
+ /* If message is already reassembled, this must be a
+ * retransmit and can be dropped.
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch
new file mode 100644
index 0000000..12dcfb7
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch
@@ -0,0 +1,38 @@
+From: Matt Caswell <matt@openssl.org>
+Date: Sun, 11 May 2014 23:38:37 +0000 (+0100)
+Subject: Fixed NULL pointer dereference. See PR#3321
+X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=b107586
+
+Fixed NULL pointer dereference. See PR#3321
+
+Patch borrowed from Fedora
+Upstream-Status: Backport
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+---
+
+diff --git a/ssl/s3_pkt.c b/ssl/s3_pkt.c
+index 40eb0dd..d961d12 100644
+--- a/ssl/s3_pkt.c
++++ b/ssl/s3_pkt.c
+@@ -657,9 +657,6 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
+ SSL3_BUFFER *wb=&(s->s3->wbuf);
+ SSL_SESSION *sess;
+
+- if (wb->buf == NULL)
+- if (!ssl3_setup_write_buffer(s))
+- return -1;
+
+ /* first check if there is a SSL3_BUFFER still being written
+ * out. This will happen with non blocking IO */
+@@ -675,6 +672,10 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
+ /* if it went, fall through and send more stuff */
+ }
+
++ if (wb->buf == NULL)
++ if (!ssl3_setup_write_buffer(s))
++ return -1;
++
+ if (len == 0 && !create_empty_fragment)
+ return 0;
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch
new file mode 100644
index 0000000..bf730a8
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch
@@ -0,0 +1,38 @@
+commit d30e582446b027868cdabd0994681643682045a4
+Author: Dr. Stephen Henson <steve@openssl.org>
+Date: Fri May 16 13:00:45 2014 +0100
+
+ Fix CVE-2014-0221
+
+ Unnecessary recursion when receiving a DTLS hello request can be used to
+ crash a DTLS client. Fixed by handling DTLS hello request without recursion.
+
+ Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
+
+Patch borrowed from Fedora
+Upstream-Status: Backport
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/ssl/d1_both.c b/ssl/d1_both.c
+index 07f67f8..4c2fd03 100644
+--- a/ssl/d1_both.c
++++ b/ssl/d1_both.c
+@@ -793,6 +793,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok)
+ int i,al;
+ struct hm_header_st msg_hdr;
+
++ redo:
+ /* see if we have the required fragment already */
+ if ((frag_len = dtls1_retrieve_buffered_fragment(s,max,ok)) || *ok)
+ {
+@@ -851,8 +852,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok)
+ s->msg_callback_arg);
+
+ s->init_num = 0;
+- return dtls1_get_message_fragment(s, st1, stn,
+- max, ok);
++ goto redo;
+ }
+ else /* Incorrectly formated Hello request */
+ {
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch
new file mode 100644
index 0000000..0ed1d12
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch
@@ -0,0 +1,103 @@
+Fix for CVE-2014-0224
+
+Only accept change cipher spec when it is expected instead of at any
+time. This prevents premature setting of session keys before the master
+secret is determined which an attacker could use as a MITM attack.
+
+Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for reporting this issue
+and providing the initial fix this patch is based on.
+
+
+Patch borrowed from Fedora
+Upstream-Status: Backport
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+
+diff -up openssl-1.0.1e/ssl/ssl3.h.keying-mitm openssl-1.0.1e/ssl/ssl3.h
+--- openssl-1.0.1e/ssl/ssl3.h.keying-mitm 2014-06-02 19:48:04.518100562 +0200
++++ openssl-1.0.1e/ssl/ssl3.h 2014-06-02 19:48:04.642103429 +0200
+@@ -388,6 +388,7 @@ typedef struct ssl3_buffer_st
+ #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
+ #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010
+ #define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020
++#define SSL3_FLAGS_CCS_OK 0x0080
+
+ /* SSL3_FLAGS_SGC_RESTART_DONE is set when we
+ * restart a handshake because of MS SGC and so prevents us
+diff -up openssl-1.0.1e/ssl/s3_clnt.c.keying-mitm openssl-1.0.1e/ssl/s3_clnt.c
+--- openssl-1.0.1e/ssl/s3_clnt.c.keying-mitm 2013-02-11 16:26:04.000000000 +0100
++++ openssl-1.0.1e/ssl/s3_clnt.c 2014-06-02 19:49:57.042701985 +0200
+@@ -559,6 +559,7 @@ int ssl3_connect(SSL *s)
+ case SSL3_ST_CR_FINISHED_A:
+ case SSL3_ST_CR_FINISHED_B:
+
++ s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ ret=ssl3_get_finished(s,SSL3_ST_CR_FINISHED_A,
+ SSL3_ST_CR_FINISHED_B);
+ if (ret <= 0) goto end;
+@@ -916,6 +917,7 @@ int ssl3_get_server_hello(SSL *s)
+ SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT);
+ goto f_err;
+ }
++ s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ s->hit=1;
+ }
+ else /* a miss or crap from the other end */
+diff -up openssl-1.0.1e/ssl/s3_pkt.c.keying-mitm openssl-1.0.1e/ssl/s3_pkt.c
+--- openssl-1.0.1e/ssl/s3_pkt.c.keying-mitm 2014-06-02 19:48:04.640103383 +0200
++++ openssl-1.0.1e/ssl/s3_pkt.c 2014-06-02 19:48:04.643103452 +0200
+@@ -1298,6 +1298,15 @@ start:
+ goto f_err;
+ }
+
++ if (!(s->s3->flags & SSL3_FLAGS_CCS_OK))
++ {
++ al=SSL_AD_UNEXPECTED_MESSAGE;
++ SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_CCS_RECEIVED_EARLY);
++ goto f_err;
++ }
++
++ s->s3->flags &= ~SSL3_FLAGS_CCS_OK;
++
+ rr->length=0;
+
+ if (s->msg_callback)
+@@ -1432,7 +1441,7 @@ int ssl3_do_change_cipher_spec(SSL *s)
+
+ if (s->s3->tmp.key_block == NULL)
+ {
+- if (s->session == NULL)
++ if (s->session == NULL || s->session->master_key_length == 0)
+ {
+ /* might happen if dtls1_read_bytes() calls this */
+ SSLerr(SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC,SSL_R_CCS_RECEIVED_EARLY);
+diff -up openssl-1.0.1e/ssl/s3_srvr.c.keying-mitm openssl-1.0.1e/ssl/s3_srvr.c
+--- openssl-1.0.1e/ssl/s3_srvr.c.keying-mitm 2014-06-02 19:48:04.630103151 +0200
++++ openssl-1.0.1e/ssl/s3_srvr.c 2014-06-02 19:48:04.643103452 +0200
+@@ -673,6 +673,7 @@ int ssl3_accept(SSL *s)
+ case SSL3_ST_SR_CERT_VRFY_A:
+ case SSL3_ST_SR_CERT_VRFY_B:
+
++ s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ /* we should decide if we expected this one */
+ ret=ssl3_get_cert_verify(s);
+ if (ret <= 0) goto end;
+@@ -700,6 +701,7 @@ int ssl3_accept(SSL *s)
+
+ case SSL3_ST_SR_FINISHED_A:
+ case SSL3_ST_SR_FINISHED_B:
++ s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ ret=ssl3_get_finished(s,SSL3_ST_SR_FINISHED_A,
+ SSL3_ST_SR_FINISHED_B);
+ if (ret <= 0) goto end;
+@@ -770,7 +772,10 @@ int ssl3_accept(SSL *s)
+ s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A;
+ #else
+ if (s->s3->next_proto_neg_seen)
++ {
++ s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ s->s3->tmp.next_state=SSL3_ST_SR_NEXT_PROTO_A;
++ }
+ else
+ s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A;
+ #endif
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch
new file mode 100644
index 0000000..025727f
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch
@@ -0,0 +1,31 @@
+commit 4ad43d511f6cf064c66eb4bfd0fb0919b5dd8a86
+Author: Dr. Stephen Henson <steve@openssl.org>
+Date: Thu May 29 15:00:05 2014 +0100
+
+ Fix CVE-2014-3470
+
+ Check session_cert is not NULL before dereferencing it.
+
+Patch borrowed from Fedora
+Upstream-Status: Backport
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+
+diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c
+index d35376d..4324f8d 100644
+--- a/ssl/s3_clnt.c
++++ b/ssl/s3_clnt.c
+@@ -2511,6 +2511,13 @@ int ssl3_send_client_key_exchange(SSL *s)
+ int ecdh_clnt_cert = 0;
+ int field_size = 0;
+
++ if (s->session->sess_cert == NULL)
++ {
++ ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE);
++ SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_UNEXPECTED_MESSAGE);
++ goto err;
++ }
++
+ /* Did we send out the client's
+ * ECDH share for use in premaster
+ * computation as part of client certificate?
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch
new file mode 100644
index 0000000..417a774
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch
@@ -0,0 +1,24 @@
+openssl fix for CVE-2010-5298
+
+Upstream-Status: Backport
+
+Race condition in the ssl3_read_bytes function in s3_pkt.c in OpenSSL
+through 1.0.1g, when SSL_MODE_RELEASE_BUFFERS is enabled, allows remote
+attackers to inject data across sessions or cause a denial of service
+(use-after-free and parsing error) via an SSL connection in a
+multithreaded environment.
+
+http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-5298
+
+Signed-off-by: Yue Tao <Yue.Tao@windriver.com>
+--- a/ssl/s3_pkt.c
++++ b/ssl/s3_pkt.c
+@@ -1013,7 +1013,7 @@ start:
+ {
+ s->rstate=SSL_ST_READ_HEADER;
+ rr->off=0;
+- if (s->mode & SSL_MODE_RELEASE_BUFFERS)
++ if (s->mode & SSL_MODE_RELEASE_BUFFERS && s->s3->rbuf.left == 0)
+ ssl3_release_read_buffer(s);
+ }
+ }
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch
new file mode 100644
index 0000000..4c51d74
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch
@@ -0,0 +1,23 @@
+Upstream-Status: Backport
+
+Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1093837
+
+CVE-2014-0198: An attacker can trigger generation of an SSL
+alert which could cause a null pointer dereference.
+
+Signed-off-by: Maxin B. John <maxin.john@enea.com>
+---
+diff -Naur openssl-1.0.1g-orig/ssl/s3_pkt.c openssl-1.0.1g/ssl/s3_pkt.c
+--- openssl-1.0.1g-orig/ssl/s3_pkt.c 2014-03-17 17:14:20.000000000 +0100
++++ openssl-1.0.1g/ssl/s3_pkt.c 2014-05-06 02:32:43.862587660 +0200
+@@ -657,6 +657,10 @@
+ if (i <= 0)
+ return(i);
+ /* if it went, fall through and send more stuff */
++ /* we may have released our buffer, so get it again */
++ if (wb->buf == NULL)
++ if (!ssl3_setup_write_buffer(s))
++ return -1;
+ }
+
+ if (len == 0 && !create_empty_fragment)
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch
new file mode 100644
index 0000000..c161e62
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch
@@ -0,0 +1,21 @@
+openssl: avoid NULL pointer dereference in EVP_DigestInit_ex()
+
+We should avoid accessing the type pointer if it's NULL,
+this could happen if ctx->digest is not NULL.
+
+Upstream-Status: Submitted
+http://www.mail-archive.com/openssl-dev@openssl.org/msg32860.html
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+--- a/crypto/evp/digest.c
++++ b/crypto/evp/digest.c
+@@ -199,7 +199,7 @@
+ return 0;
+ }
+ #endif
+- if (ctx->digest != type)
++ if (type && (ctx->digest != type))
+ {
+ if (ctx->digest && ctx->digest->ctx_size)
+ OPENSSL_free(ctx->md_data);
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch
new file mode 100644
index 0000000..3e93fe4
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch
@@ -0,0 +1,39 @@
+openssl: avoid NULL pointer dereference in dh_pub_encode()/dsa_pub_encode()
+
+We should avoid accessing the pointer if ASN1_STRING_new()
+allocates memory failed.
+
+Upstream-Status: Submitted
+http://www.mail-archive.com/openssl-dev@openssl.org/msg32859.html
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+--- a/crypto/dh/dh_ameth.c
++++ b/crypto/dh/dh_ameth.c
+@@ -139,6 +139,12 @@
+ dh=pkey->pkey.dh;
+
+ str = ASN1_STRING_new();
++ if (!str)
++ {
++ DHerr(DH_F_DH_PUB_ENCODE, ERR_R_MALLOC_FAILURE);
++ goto err;
++ }
++
+ str->length = i2d_DHparams(dh, &str->data);
+ if (str->length <= 0)
+ {
+--- a/crypto/dsa/dsa_ameth.c
++++ b/crypto/dsa/dsa_ameth.c
+@@ -148,6 +148,11 @@
+ {
+ ASN1_STRING *str;
+ str = ASN1_STRING_new();
++ if (!str)
++ {
++ DSAerr(DSA_F_DSA_PUB_ENCODE, ERR_R_MALLOC_FAILURE);
++ goto err;
++ }
+ str->length = i2d_DSAparams(dsa, &str->data);
+ if (str->length <= 0)
+ {
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch
new file mode 100644
index 0000000..de49729
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch
@@ -0,0 +1,19 @@
+openssl: Fix pod2man des.pod error on Ubuntu 12.04
+
+This is a formatting fix, '=back' is required before
+'=head1' on Ubuntu 12.04.
+
+Upstream-Status: Pending
+Signed-off-by: Baogen Shang <baogen.shang@windriver.com>
+diff -urpN a_origin/des.pod b_modify/des.pod
+--- a_origin/crypto/des/des.pod 2013-08-15 15:02:56.211674589 +0800
++++ b_modify/crypto/des/des.pod 2013-08-15 15:04:14.439674580 +0800
+@@ -181,6 +181,8 @@ the uuencoded file to embed in the begin
+ output. If there is no name specified after the B<-u>, the name text.des
+ will be embedded in the header.
+
++=back
++
+ =head1 SEE ALSO
+
+ ps(1),
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch
new file mode 100644
index 0000000..451256e
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch
@@ -0,0 +1,401 @@
+Fix documentation build errors with Perl 5.18 pod2man
+
+This fixes errors building man pages with newer versions of pod2man
+included with Perl 5.18.
+
+Upstream-Status: Submitted
+Signed-off-by: Jonathan Liu
+
+Index: openssl-1.0.1f/doc/apps/cms.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/apps/cms.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/apps/cms.pod 2014-02-28 10:13:51.899979213 +0200
+@@ -450,28 +450,28 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ the operation was completely successfully.
+
+-=item 1
++=item Z<>1
+
+ an error occurred parsing the command options.
+
+-=item 2
++=item Z<>2
+
+ one of the input files could not be read.
+
+-=item 3
++=item Z<>3
+
+ an error occurred creating the CMS file or when reading the MIME
+ message.
+
+-=item 4
++=item Z<>4
+
+ an error occurred decrypting or verifying the message.
+
+-=item 5
++=item Z<>5
+
+ the message was verified correctly but an error occurred writing out
+ the signers certificates.
+Index: openssl-1.0.1f/doc/apps/smime.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/apps/smime.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/apps/smime.pod 2014-02-28 10:16:57.795979233 +0200
+@@ -308,28 +308,28 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ the operation was completely successfully.
+
+-=item 1
++=item Z<>1
+
+ an error occurred parsing the command options.
+
+-=item 2
++=item Z<>2
+
+ one of the input files could not be read.
+
+-=item 3
++=item Z<>3
+
+ an error occurred creating the PKCS#7 file or when reading the MIME
+ message.
+
+-=item 4
++=item Z<>4
+
+ an error occurred decrypting or verifying the message.
+
+-=item 5
++=item Z<>5
+
+ the message was verified correctly but an error occurred writing out
+ the signers certificates.
+Index: openssl-1.0.1f/doc/ssl/SSL_COMP_add_compression_method.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_COMP_add_compression_method.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_COMP_add_compression_method.pod 2014-02-28 10:18:09.679979225 +0200
+@@ -53,11 +53,11 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The operation succeeded.
+
+-=item 1
++=item Z<>1
+
+ The operation failed. Check the error queue to find out the reason.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_CTX_add_session.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_add_session.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_CTX_add_session.pod 2014-02-28 10:18:42.687979221 +0200
+@@ -52,13 +52,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The operation failed. In case of the add operation, it was tried to add
+ the same (identical) session twice. In case of the remove operation, the
+ session was not found in the cache.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_CTX_load_verify_locations.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_load_verify_locations.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_CTX_load_verify_locations.pod 2014-02-28 10:19:09.079979218 +0200
+@@ -100,13 +100,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The operation failed because B<CAfile> and B<CApath> are NULL or the
+ processing at one of the locations specified failed. Check the error
+ stack to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_CTX_set_client_CA_list.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_set_client_CA_list.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_CTX_set_client_CA_list.pod 2014-02-28 10:19:42.999979220 +0200
+@@ -66,13 +66,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ A failure while manipulating the STACK_OF(X509_NAME) object occurred or
+ the X509_NAME could not be extracted from B<cacert>. Check the error stack
+ to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_CTX_set_session_id_context.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_set_session_id_context.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_CTX_set_session_id_context.pod 2014-02-28 10:20:06.495979211 +0200
+@@ -64,13 +64,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The length B<sid_ctx_len> of the session id context B<sid_ctx> exceeded
+ the maximum allowed length of B<SSL_MAX_SSL_SESSION_ID_LENGTH>. The error
+ is logged to the error stack.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_CTX_set_ssl_version.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_set_ssl_version.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_CTX_set_ssl_version.pod 2014-02-28 10:20:32.111979208 +0200
+@@ -42,11 +42,11 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The new choice failed, check the error stack to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_CTX_use_psk_identity_hint.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_use_psk_identity_hint.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_CTX_use_psk_identity_hint.pod 2014-02-28 10:21:12.351979203 +0200
+@@ -96,7 +96,7 @@
+ connection will fail with decryption_error before it will be finished
+ completely.
+
+-=item 0
++=item Z<>0
+
+ PSK identity was not found. An "unknown_psk_identity" alert message
+ will be sent and the connection setup fails.
+Index: openssl-1.0.1f/doc/ssl/SSL_accept.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_accept.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_accept.pod 2014-02-28 10:21:51.535979215 +0200
+@@ -44,13 +44,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The TLS/SSL handshake was not successful but was shut down controlled and
+ by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the
+ return value B<ret> to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been
+ established.
+Index: openssl-1.0.1f/doc/ssl/SSL_clear.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_clear.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_clear.pod 2014-02-28 10:22:13.087979196 +0200
+@@ -56,12 +56,12 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The SSL_clear() operation could not be performed. Check the error stack to
+ find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The SSL_clear() operation was successful.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_connect.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_connect.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_connect.pod 2014-02-28 10:22:33.991979193 +0200
+@@ -41,13 +41,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The TLS/SSL handshake was not successful but was shut down controlled and
+ by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the
+ return value B<ret> to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been
+ established.
+Index: openssl-1.0.1f/doc/ssl/SSL_do_handshake.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_do_handshake.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_do_handshake.pod 2014-02-28 10:22:56.887979159 +0200
+@@ -45,13 +45,13 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The TLS/SSL handshake was not successful but was shut down controlled and
+ by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the
+ return value B<ret> to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been
+ established.
+Index: openssl-1.0.1f/doc/ssl/SSL_read.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_read.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_read.pod 2014-02-28 10:23:15.303979188 +0200
+@@ -86,7 +86,7 @@
+ The read operation was successful; the return value is the number of
+ bytes actually read from the TLS/SSL connection.
+
+-=item 0
++=item Z<>0
+
+ The read operation was not successful. The reason may either be a clean
+ shutdown due to a "close notify" alert sent by the peer (in which case
+Index: openssl-1.0.1f/doc/ssl/SSL_session_reused.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_session_reused.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_session_reused.pod 2014-02-28 10:23:36.615979186 +0200
+@@ -27,11 +27,11 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ A new session was negotiated.
+
+-=item 1
++=item Z<>1
+
+ A session was reused.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_set_fd.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_set_fd.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_set_fd.pod 2014-02-28 10:23:57.599979183 +0200
+@@ -35,11 +35,11 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The operation failed. Check the error stack to find out why.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_set_session.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_set_session.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_set_session.pod 2014-02-28 10:24:16.943979181 +0200
+@@ -37,11 +37,11 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The operation failed; check the error stack to find out the reason.
+
+-=item 1
++=item Z<>1
+
+ The operation succeeded.
+
+Index: openssl-1.0.1f/doc/ssl/SSL_shutdown.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_shutdown.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_shutdown.pod 2014-02-28 10:25:03.623979175 +0200
+@@ -92,19 +92,19 @@
+
+ =over 4
+
+-=item 0
++=item Z<>0
+
+ The shutdown is not yet finished. Call SSL_shutdown() for a second time,
+ if a bidirectional shutdown shall be performed.
+ The output of L<SSL_get_error(3)|SSL_get_error(3)> may be misleading, as an
+ erroneous SSL_ERROR_SYSCALL may be flagged even though no error occurred.
+
+-=item 1
++=item Z<>1
+
+ The shutdown was successfully completed. The "close notify" alert was sent
+ and the peer's "close notify" alert was received.
+
+-=item -1
++=item Z<>-1
+
+ The shutdown was not successful because a fatal error occurred either
+ at the protocol level or a connection failure occurred. It can also occur if
+Index: openssl-1.0.1f/doc/ssl/SSL_write.pod
+===================================================================
+--- openssl-1.0.1f.orig/doc/ssl/SSL_write.pod 2014-01-06 15:47:42.000000000 +0200
++++ openssl-1.0.1f/doc/ssl/SSL_write.pod 2014-02-28 10:25:36.031979168 +0200
+@@ -79,7 +79,7 @@
+ The write operation was successful, the return value is the number of
+ bytes actually written to the TLS/SSL connection.
+
+-=item 0
++=item Z<>0
+
+ The write operation was not successful. Probably the underlying connection
+ was closed. Call SSL_get_error() with the return value B<ret> to find out,
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch
new file mode 100644
index 0000000..154106c
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch
@@ -0,0 +1,35 @@
+From aabfb6f78af8e337d3239142117ba303fce55e7e Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Thu, 22 Sep 2011 08:55:26 +0200
+Subject: [PATCH] fix the parallel build regarding shared libraries.
+
+Upstream-Status: Pending
+---
+ .../openssl-1.0.0e/Makefile.org | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.org
+index 3c7aea1..6326cd6 100644
+--- a/Makefile.org
++++ b/Makefile.org
+@@ -243,13 +243,13 @@ build_libs: build_crypto build_ssl build_engines
+
+ build_crypto:
+ @dir=crypto; target=all; $(BUILD_ONE_CMD)
+-build_ssl:
++build_ssl: build_crypto
+ @dir=ssl; target=all; $(BUILD_ONE_CMD)
+-build_engines:
++build_engines: build_crypto
+ @dir=engines; target=all; $(BUILD_ONE_CMD)
+-build_apps:
++build_apps: build_crypto build_ssl
+ @dir=apps; target=all; $(BUILD_ONE_CMD)
+-build_tests:
++build_tests: build_crypto build_ssl
+ @dir=test; target=all; $(BUILD_ONE_CMD)
+ build_tools:
+ @dir=tools; target=all; $(BUILD_ONE_CMD)
+--
+1.6.6.1
+
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch
new file mode 100644
index 0000000..93ce034
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch
@@ -0,0 +1,90 @@
+Upstream-Status: Pending
+
+Received from H J Liu @ Intel
+Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors.
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/07/13
+
+ported the patch to the 1.0.0e version
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/01
+Index: openssl-1.0.1e/Configure
+===================================================================
+--- openssl-1.0.1e.orig/Configure
++++ openssl-1.0.1e/Configure
+@@ -402,6 +402,7 @@ my %table=(
+ "linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
++"linux-x32", "gcc:-mx32 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::x32",
+ "linux64-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+ #### So called "highgprs" target for z/Architecture CPUs
+ # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see
+Index: openssl-1.0.1e/crypto/bn/asm/x86_64-gcc.c
+===================================================================
+--- openssl-1.0.1e.orig/crypto/bn/asm/x86_64-gcc.c
++++ openssl-1.0.1e/crypto/bn/asm/x86_64-gcc.c
+@@ -55,7 +55,7 @@
+ * machine.
+ */
+
+-#ifdef _WIN64
++#if defined _WIN64 || !defined __LP64__
+ #define BN_ULONG unsigned long long
+ #else
+ #define BN_ULONG unsigned long
+@@ -192,9 +192,9 @@ BN_ULONG bn_add_words (BN_ULONG *rp, con
+ asm (
+ " subq %2,%2 \n"
+ ".p2align 4 \n"
+- "1: movq (%4,%2,8),%0 \n"
+- " adcq (%5,%2,8),%0 \n"
+- " movq %0,(%3,%2,8) \n"
++ "1: movq (%q4,%2,8),%0 \n"
++ " adcq (%q5,%2,8),%0 \n"
++ " movq %0,(%q3,%2,8) \n"
+ " leaq 1(%2),%2 \n"
+ " loop 1b \n"
+ " sbbq %0,%0 \n"
+@@ -215,9 +215,9 @@ BN_ULONG bn_sub_words (BN_ULONG *rp, con
+ asm (
+ " subq %2,%2 \n"
+ ".p2align 4 \n"
+- "1: movq (%4,%2,8),%0 \n"
+- " sbbq (%5,%2,8),%0 \n"
+- " movq %0,(%3,%2,8) \n"
++ "1: movq (%q4,%2,8),%0 \n"
++ " sbbq (%q5,%2,8),%0 \n"
++ " movq %0,(%q3,%2,8) \n"
+ " leaq 1(%2),%2 \n"
+ " loop 1b \n"
+ " sbbq %0,%0 \n"
+Index: openssl-1.0.1e/crypto/bn/bn.h
+===================================================================
+--- openssl-1.0.1e.orig/crypto/bn/bn.h
++++ openssl-1.0.1e/crypto/bn/bn.h
+@@ -172,6 +172,13 @@ extern "C" {
+ # endif
+ #endif
+
++/* Address type. */
++#ifdef _WIN64
++#define BN_ADDR unsigned long long
++#else
++#define BN_ADDR unsigned long
++#endif
++
+ /* assuming long is 64bit - this is the DEC Alpha
+ * unsigned long long is only 64 bits :-(, don't define
+ * BN_LLONG for the DEC Alpha */
+Index: openssl-1.0.1e/crypto/bn/bn_exp.c
+===================================================================
+--- openssl-1.0.1e.orig/crypto/bn/bn_exp.c
++++ openssl-1.0.1e/crypto/bn/bn_exp.c
+@@ -567,7 +567,7 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBU
+
+ /* Given a pointer value, compute the next address that is a cache line multiple. */
+ #define MOD_EXP_CTIME_ALIGN(x_) \
+- ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((size_t)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK))))
++ ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((BN_ADDR)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK))))
+
+ /* This variant of BN_mod_exp_mont() uses fixed windows and the special
+ * precomputation memory layout to limit data-dependency to a minimum
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch
new file mode 100644
index 0000000..a7ca0a3
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch
@@ -0,0 +1,41 @@
+Upstream-Status: Inappropriate [configuration]
+
+Index: openssl-1.0.1e/crypto/Makefile
+===================================================================
+--- openssl-1.0.1e.orig/crypto/Makefile
++++ openssl-1.0.1e/crypto/Makefile
+@@ -108,7 +108,7 @@ $(LIB): $(LIBOBJ)
+
+ shared: buildinf.h lib subdirs
+ if [ -n "$(SHARED_LIBS)" ]; then \
+- (cd ..; $(MAKE) $(SHARED_LIB)); \
++ (cd ..; $(MAKE) -e $(SHARED_LIB)); \
+ fi
+
+ libs:
+Index: openssl-1.0.1e/Makefile.org
+===================================================================
+--- openssl-1.0.1e.orig/Makefile.org
++++ openssl-1.0.1e/Makefile.org
+@@ -310,7 +310,7 @@ libcrypto$(SHLIB_EXT): libcrypto.a fips_
+
+ libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
+ @if [ "$(SHLIB_TARGET)" != "" ]; then \
+- $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
++ $(MAKE) -e SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
+ else \
+ echo "There's no support for shared libraries on this platform" >&2; \
+ exit 1; \
+Index: openssl-1.0.1e/ssl/Makefile
+===================================================================
+--- openssl-1.0.1e.orig/ssl/Makefile
++++ openssl-1.0.1e/ssl/Makefile
+@@ -62,7 +62,7 @@ lib: $(LIBOBJ)
+
+ shared: lib
+ if [ -n "$(SHARED_LIBS)" ]; then \
+- (cd ..; $(MAKE) $(SHARED_LIB)); \
++ (cd ..; $(MAKE) -e $(SHARED_LIB)); \
+ fi
+
+ files:
diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb b/meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb
new file mode 100644
index 0000000..ecb31d0
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb
@@ -0,0 +1,54 @@
+require openssl.inc
+
+# For target side versions of openssl enable support for OCF Linux driver
+# if they are available.
+DEPENDS += "cryptodev-linux"
+
+CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"
+
+export DIRS = "crypto ssl apps engines"
+export OE_LDFLAGS="${LDFLAGS}"
+
+SRC_URI += "file://configure-targets.patch \
+ file://shared-libs.patch \
+ file://oe-ldflags.patch \
+ file://engines-install-in-libdir-ssl.patch \
+ file://openssl-fix-link.patch \
+ file://debian/version-script.patch \
+ file://debian/pic.patch \
+ file://debian/c_rehash-compat.patch \
+ file://debian/ca.patch \
+ file://debian/make-targets.patch \
+ file://debian/no-rpath.patch \
+ file://debian/man-dir.patch \
+ file://debian/man-section.patch \
+ file://debian/no-symbolic.patch \
+ file://debian/debian-targets.patch \
+ file://openssl_fix_for_x32.patch \
+ file://fix-cipher-des-ede3-cfb1.patch \
+ file://openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch \
+ file://openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch \
+ file://initial-aarch64-bits.patch \
+ file://find.pl \
+ file://openssl-fix-des.pod-error.patch \
+ "
+
+SRC_URI[md5sum] = "f7175c9cd3c39bb1907ac8bba9df8ed3"
+SRC_URI[sha256sum] = "1b60ca8789ba6f03e8ef20da2293b8dc131c39d83814e775069f02d26354edf3"
+
+PACKAGES =+ " \
+ ${PN}-engines \
+ ${PN}-engines-dbg \
+ "
+
+FILES_${PN}-engines = "${libdir}/ssl/engines/*.so ${libdir}/engines"
+FILES_${PN}-engines-dbg = "${libdir}/ssl/engines/.debug"
+
+PARALLEL_MAKE = ""
+PARALLEL_MAKEINST = ""
+
+do_configure_prepend() {
+ cp ${WORKDIR}/find.pl ${S}/util/find.pl
+}
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant
new file mode 100644
index 0000000..6ff4dd8
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant
@@ -0,0 +1 @@
+d root root 0700 /var/run/wpa_supplicant none
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls
new file mode 100644
index 0000000..71f42e6
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls
@@ -0,0 +1,440 @@
+# Example wpa_supplicant build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cases, these lines should use += in order not
+# to override previous values of the variables.
+
+
+# Uncomment following two lines and fix the paths if you have installed OpenSSL
+# or GnuTLS in non-default location
+#CFLAGS += -I/usr/local/openssl/include
+#LIBS += -L/usr/local/openssl/lib
+
+# Some Red Hat versions seem to include kerberos header files from OpenSSL, but
+# the kerberos files are not in the default include path. Following line can be
+# used to fix build issues on such systems (krb5.h not found).
+#CFLAGS += -I/usr/include/kerberos
+
+# Example configuration for various cross-compilation platforms
+
+#### sveasoft (e.g., for Linksys WRT54G) ######################################
+#CC=mipsel-uclibc-gcc
+#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
+#CFLAGS += -Os
+#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
+#LIBS += -L/opt/brcm/hndtools-mipsel-uclibc-0.9.19/lib -lssl
+###############################################################################
+
+#### openwrt (e.g., for Linksys WRT54G) #######################################
+#CC=mipsel-uclibc-gcc
+#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
+#CFLAGS += -Os
+#CPPFLAGS=-I../src/include -I../openssl-0.9.7d/include \
+# -I../WRT54GS/release/src/include
+#LIBS = -lssl
+###############################################################################
+
+
+# Driver interface for Host AP driver
+CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for Agere driver
+#CONFIG_DRIVER_HERMES=y
+# Change include directories to match with the local setup
+#CFLAGS += -I../../hcf -I../../include -I../../include/hcf
+#CFLAGS += -I../../include/wireless
+
+# Driver interface for madwifi driver
+# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
+#CONFIG_DRIVER_MADWIFI=y
+# Set include directory to the madwifi source tree
+#CFLAGS += -I../../madwifi
+
+# Driver interface for ndiswrapper
+# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
+#CONFIG_DRIVER_NDISWRAPPER=y
+
+# Driver interface for Atmel driver
+# CONFIG_DRIVER_ATMEL=y
+
+# Driver interface for old Broadcom driver
+# Please note that the newer Broadcom driver ("hybrid Linux driver") supports
+# Linux wireless extensions and does not need (or even work) with the old
+# driver wrapper. Use CONFIG_DRIVER_WEXT=y with that driver.
+#CONFIG_DRIVER_BROADCOM=y
+# Example path for wlioctl.h; change to match your configuration
+#CFLAGS += -I/opt/WRT54GS/release/src/include
+
+# Driver interface for Intel ipw2100/2200 driver
+# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
+#CONFIG_DRIVER_IPW=y
+
+# Driver interface for Ralink driver
+#CONFIG_DRIVER_RALINK=y
+
+# Driver interface for generic Linux wireless extensions
+#CONFIG_DRIVER_WEXT=y
+
+# Driver interface for Linux drivers using the nl80211 kernel interface
+CONFIG_LIBNL32=y
+CONFIG_DRIVER_NL80211=y
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+#LIBS_p += -L/usr/local/lib
+#LIBS_c += -L/usr/local/lib
+
+# Driver interface for Windows NDIS
+#CONFIG_DRIVER_NDIS=y
+#CFLAGS += -I/usr/include/w32api/ddk
+#LIBS += -L/usr/local/lib
+# For native build using mingw
+#CONFIG_NATIVE_WINDOWS=y
+# Additional directories for cross-compilation on Linux host for mingw target
+#CFLAGS += -I/opt/mingw/mingw32/include/ddk
+#LIBS += -L/opt/mingw/mingw32/lib
+#CC=mingw32-gcc
+# By default, driver_ndis uses WinPcap for low-level operations. This can be
+# replaced with the following option which replaces WinPcap calls with NDISUIO.
+# However, this requires that WZC is disabled (net stop wzcsvc) before starting
+# wpa_supplicant.
+# CONFIG_USE_NDISUIO=y
+
+# Driver interface for development testing
+#CONFIG_DRIVER_TEST=y
+
+# Include client MLME (management frame processing) for test driver
+# This can be used to test MLME operations in hostapd with the test interface.
+# space.
+#CONFIG_CLIENT_MLME=y
+
+# Driver interface for wired Ethernet drivers
+#CONFIG_DRIVER_WIRED=y
+
+# Driver interface for the Broadcom RoboSwitch family
+#CONFIG_DRIVER_ROBOSWITCH=y
+
+# Driver interface for no driver (e.g., WPS ER only)
+#CONFIG_DRIVER_NONE=y
+
+# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
+# included)
+CONFIG_IEEE8021X_EAPOL=y
+
+# EAP-MD5
+CONFIG_EAP_MD5=y
+
+# EAP-MSCHAPv2
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-TLS
+CONFIG_EAP_TLS=y
+
+# EAL-PEAP
+CONFIG_EAP_PEAP=y
+
+# EAP-TTLS
+CONFIG_EAP_TTLS=y
+
+# EAP-FAST
+# Note: Default OpenSSL package does not include support for all the
+# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
+# the OpenSSL library must be patched (openssl-0.9.8d-tls-extensions.patch)
+# to add the needed functions.
+CONFIG_EAP_FAST=y
+
+# EAP-GTC
+CONFIG_EAP_GTC=y
+
+# EAP-OTP
+CONFIG_EAP_OTP=y
+
+# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used)
+#CONFIG_EAP_SIM=y
+
+# EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-PAX
+#CONFIG_EAP_PAX=y
+
+# LEAP
+CONFIG_EAP_LEAP=y
+
+# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used)
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used).
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# Enable USIM simulator (Milenage) for EAP-AKA
+#CONFIG_USIM_SIMULATOR=y
+
+# EAP-SAKE
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-TNC and related Trusted Network Connect support (experimental)
+#CONFIG_EAP_TNC=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+# Enable WSC 2.0 support
+CONFIG_WPS2=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# Smartcard support (i.e., private key on a smartcard), e.g., with openssl
+# engine.
+CONFIG_SMARTCARD=y
+
+# PC/SC interface for smartcards (USIM, GSM SIM)
+# Enable this if EAP-SIM or EAP-AKA is included
+#CONFIG_PCSC=y
+
+# Development testing
+#CONFIG_EAPOL_TEST=y
+
+# Select control interface backend for external programs, e.g, wpa_cli:
+# unix = UNIX domain sockets (default for Linux/*BSD)
+# udp = UDP sockets using localhost (127.0.0.1)
+# named_pipe = Windows Named Pipe (default for Windows)
+# y = use default (backwards compatibility)
+# If this option is commented out, control interface is not included in the
+# build.
+CONFIG_CTRL_IFACE=y
+
+# Include support for GNU Readline and History Libraries in wpa_cli.
+# When building a wpa_cli binary for distribution, please note that these
+# libraries are licensed under GPL and as such, BSD license may not apply for
+# the resulting binary.
+#CONFIG_READLINE=y
+
+# Remove debugging code that is printing out debug message to stdout.
+# This can be used to reduce the size of the wpa_supplicant considerably
+# if debugging code is not needed. The size reduction can be around 35%
+# (e.g., 90 kB).
+#CONFIG_NO_STDOUT_DEBUG=y
+
+# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save
+# 35-50 kB in code size.
+#CONFIG_NO_WPA=y
+
+# Remove WPA2 support. This allows WPA to be used, but removes WPA2 code to
+# save about 1 kB in code size when building only WPA-Personal (no EAP support)
+# or 6 kB if building for WPA-Enterprise.
+#CONFIG_NO_WPA2=y
+
+# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support
+# This option can be used to reduce code size by removing support for
+# converting ASCII passphrases into PSK. If this functionality is removed, the
+# PSK can only be configured as the 64-octet hexstring (e.g., from
+# wpa_passphrase). This saves about 0.5 kB in code size.
+#CONFIG_NO_WPA_PASSPHRASE=y
+
+# Disable scan result processing (ap_mode=1) to save code size by about 1 kB.
+# This can be used if ap_scan=1 mode is never enabled.
+#CONFIG_NO_SCAN_PROCESSING=y
+
+# Select configuration backend:
+# file = text file (e.g., wpa_supplicant.conf; note: the configuration file
+# path is given on command line, not here; this option is just used to
+# select the backend that allows configuration files to be used)
+# winreg = Windows registry (see win_example.reg for an example)
+CONFIG_BACKEND=file
+
+# Remove configuration write functionality (i.e., to allow the configuration
+# file to be updated based on runtime configuration changes). The runtime
+# configuration can still be changed, the changes are just not going to be
+# persistent over restarts. This option can be used to reduce code size by
+# about 3.5 kB.
+#CONFIG_NO_CONFIG_WRITE=y
+
+# Remove support for configuration blobs to reduce code size by about 1.5 kB.
+#CONFIG_NO_CONFIG_BLOBS=y
+
+# Select program entry point implementation:
+# main = UNIX/POSIX like main() function (default)
+# main_winsvc = Windows service (read parameters from registry)
+# main_none = Very basic example (development use only)
+#CONFIG_MAIN=main
+
+# Select wrapper for operatins system and C library specific functions
+# unix = UNIX/POSIX like systems (default)
+# win32 = Windows systems
+# none = Empty template
+#CONFIG_OS=unix
+
+# Select event loop implementation
+# eloop = select() loop (default)
+# eloop_win = Windows events and WaitForMultipleObject() loop
+# eloop_none = Empty template
+#CONFIG_ELOOP=eloop
+
+# Select layer 2 packet implementation
+# linux = Linux packet socket (default)
+# pcap = libpcap/libdnet/WinPcap
+# freebsd = FreeBSD libpcap
+# winpcap = WinPcap with receive thread
+# ndis = Windows NDISUIO (note: requires CONFIG_USE_NDISUIO=y)
+# none = Empty template
+#CONFIG_L2_PACKET=linux
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection)
+# This version is an experimental implementation based on IEEE 802.11w/D1.0
+# draft and is subject to change since the standard has not yet been finalized.
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA)
+# internal = Internal TLSv1 implementation (experimental)
+# none = Empty template
+CONFIG_TLS=openssl
+
+# Whether to enable TLS/IA support, which is required for EAP-TTLSv1.
+# You need CONFIG_TLS=gnutls for this to have any effect. Please note that
+# even though the core GnuTLS library is released under LGPL, this extra
+# library uses GPL and as such, the terms of GPL apply to the combination
+# of wpa_supplicant and GnuTLS if this option is enabled. BSD license may not
+# apply for distribution of the resulting binary.
+#CONFIG_GNUTLS_EXTRA=y
+
+# If CONFIG_TLS=internal is used, additional library and include paths are
+# needed for LibTomMath. Alternatively, an integrated, minimal version of
+# LibTomMath can be used. See beginning of libtommath.c for details on benefits
+# and drawbacks of this option.
+#CONFIG_INTERNAL_LIBTOMMATH=y
+#ifndef CONFIG_INTERNAL_LIBTOMMATH
+#LTM_PATH=/usr/src/libtommath-0.39
+#CFLAGS += -I$(LTM_PATH)
+#LIBS += -L$(LTM_PATH)
+#LIBS_p += -L$(LTM_PATH)
+#endif
+# At the cost of about 4 kB of additional binary size, the internal LibTomMath
+# can be configured to include faster routines for exptmod, sqr, and div to
+# speed up DH and RSA calculation considerably
+#CONFIG_INTERNAL_LIBTOMMATH_FAST=y
+
+# Include NDIS event processing through WMI into wpa_supplicant/wpasvc.
+# This is only for Windows builds and requires WMI-related header files and
+# WbemUuid.Lib from Platform SDK even when building with MinGW.
+#CONFIG_NDIS_EVENTS_INTEGRATED=y
+#PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib"
+
+# Add support for old DBus control interface
+# (fi.epitest.hostap.WPASupplicant)
+#CONFIG_CTRL_IFACE_DBUS=y
+
+# Add support for new DBus control interface
+# (fi.w1.hostap.wpa_supplicant1)
+CONFIG_CTRL_IFACE_DBUS_NEW=y
+
+# Add introspection support for new DBus control interface
+#CONFIG_CTRL_IFACE_DBUS_INTRO=y
+
+# Add support for loading EAP methods dynamically as shared libraries.
+# When this option is enabled, each EAP method can be either included
+# statically (CONFIG_EAP_<method>=y) or dynamically (CONFIG_EAP_<method>=dyn).
+# Dynamic EAP methods are build as shared objects (eap_*.so) and they need to
+# be loaded in the beginning of the wpa_supplicant configuration file
+# (see load_dynamic_eap parameter in the example file) before being used in
+# the network blocks.
+#
+# Note that some shared parts of EAP methods are included in the main program
+# and in order to be able to use dynamic EAP methods using these parts, the
+# main program must have been build with the EAP method enabled (=y or =dyn).
+# This means that EAP-TLS/PEAP/TTLS/FAST cannot be added as dynamic libraries
+# unless at least one of them was included in the main build to force inclusion
+# of the shared code. Similarly, at least one of EAP-SIM/AKA must be included
+# in the main build to be able to load these methods dynamically.
+#
+# Please also note that using dynamic libraries will increase the total binary
+# size. Thus, it may not be the best option for targets that have limited
+# amount of memory/flash.
+#CONFIG_DYNAMIC_EAP_METHODS=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt)
+CONFIG_DEBUG_FILE=y
+
+# Send debug messages to syslog instead of stdout
+CONFIG_DEBUG_SYSLOG=y
+
+# Enable privilege separation (see README 'Privilege separation' for details)
+#CONFIG_PRIVSEP=y
+
+# Enable mitigation against certain attacks against TKIP by delaying Michael
+# MIC error reports by a random amount of time between 0 and 60 seconds
+#CONFIG_DELAYED_MIC_ERROR_REPORT=y
+
+# Enable tracing code for developer debugging
+# This tracks use of memory allocations and other registrations and reports
+# incorrect use with a backtrace of call (or allocation) location.
+#CONFIG_WPA_TRACE=y
+# For BSD, comment out these.
+#LIBS += -lexecinfo
+#LIBS_p += -lexecinfo
+#LIBS_c += -lexecinfo
+
+# Use libbfd to get more details for developer debugging
+# This enables use of libbfd to get more detailed symbols for the backtraces
+# generated by CONFIG_WPA_TRACE=y.
+#CONFIG_WPA_TRACE_BFD=y
+# For BSD, comment out these.
+#LIBS += -lbfd -liberty -lz
+#LIBS_p += -lbfd -liberty -lz
+#LIBS_c += -lbfd -liberty -lz
+#CONFIG_TLS = gnutls
+#CONFIG_GNUTLS_EXTRA=y
+CONFIG_CTRL_IFACE_DBUS=y
+CONFIG_CTRL_IFACE_DBUS_NEW=y
+
+# AP mode operations with wpa_supplicant
+# This can be used for controlling AP mode operations with wpa_supplicant. It
+# should be noted that this is mainly aimed at simple cases like
+# WPA2-Personal while more complex configurations like WPA2-Enterprise with an
+# external RADIUS server can be supported with hostapd.
+CONFIG_AP=y
+
+# P2P (Wi-Fi Direct)
+# This can be used to enable P2P support in wpa_supplicant. See README-P2P for
+# more information on P2P operations.
+CONFIG_P2P=y
+CONFIG_BGSCAN_SIMPLE=y
+
+# Autoscan
+# This can be used to enable automatic scan support in wpa_supplicant.
+# See wpa_supplicant.conf for more information on autoscan usage.
+#
+# Enabling directly a module will enable autoscan support.
+# For exponential module:
+CONFIG_AUTOSCAN_EXPONENTIAL=y
+# For periodic module:
+#CONFIG_AUTOSCAN_PERIODIC=y
+
+CFLAGS += -DEDISON_TARGET
+CFLAGS += -DANDROID_P2P
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service
new file mode 100644
index 0000000..845a246
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service
@@ -0,0 +1,5 @@
+[D-BUS Service]
+Name=fi.w1.wpa_supplicant1
+Exec=/usr/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211 -u -O /var/run/wpa_supplicant
+User=root
+SystemdService=wpa_supplicant.service
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch
new file mode 100644
index 0000000..eb8036f
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch
@@ -0,0 +1,42 @@
+Upstream-Status: Pending
+
+From 37d6b3dd5a737cd67468e4a58b372bddd924a7be Mon Sep 17 00:00:00 2001
+From: Andreas Oberritter <obi@opendreambox.org>
+Date: Fri, 8 Mar 2013 22:55:19 +0100
+Subject: [PATCH] Revert "build: Use updated libnl3 header paths"
+
+This reverts commit e7ecddf33a446072effbc85a27a078a8e582c89e.
+---
+ src/drivers/drivers.mak | 2 +-
+ src/drivers/drivers.mk | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/drivers/drivers.mak b/src/drivers/drivers.mak
+index 68ff910..1f38f57 100644
+--- a/src/drivers/drivers.mak
++++ b/src/drivers/drivers.mak
+@@ -30,7 +30,7 @@ NEED_RFKILL=y
+ ifdef CONFIG_LIBNL32
+ DRV_LIBS += -lnl-3
+ DRV_LIBS += -lnl-genl-3
+- DRV_CFLAGS += -DCONFIG_LIBNL20 -I/usr/include/libnl3
++ DRV_CFLAGS += -DCONFIG_LIBNL20
+ else
+ ifdef CONFIG_LIBNL_TINY
+ DRV_LIBS += -lnl-tiny
+diff --git a/src/drivers/drivers.mk b/src/drivers/drivers.mk
+index db8561a..c93e88d 100644
+--- a/src/drivers/drivers.mk
++++ b/src/drivers/drivers.mk
+@@ -30,7 +30,7 @@ NEED_RFKILL=y
+ ifdef CONFIG_LIBNL32
+ DRV_LIBS += -lnl-3
+ DRV_LIBS += -lnl-genl-3
+- DRV_CFLAGS += -DCONFIG_LIBNL20 -I/usr/include/libnl3
++ DRV_CFLAGS += -DCONFIG_LIBNL20
+ else
+ ifdef CONFIG_LIBNL_TINY
+ DRV_LIBS += -lnl-tiny
+--
+1.7.10.4
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane
new file mode 100644
index 0000000..62e2236
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane
@@ -0,0 +1,12 @@
+ctrl_interface=/var/run/wpa_supplicant
+ctrl_interface_group=0
+config_methods=virtual_push_button virtual_display push_button keypad
+update_config=1
+fast_reauth=1
+device_name=Edison
+manufacturer=Intel
+model_name=Edison
+p2p_ssid_postfix=-Edison
+persistent_reconnect=1
+
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch
new file mode 100644
index 0000000..453240f
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch
@@ -0,0 +1,51 @@
+From f157b78166baff2c32ed3983b4e787417505b343 Mon Sep 17 00:00:00 2001
+From: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
+Date: Mon, 1 Jul 2013 19:11:34 +0300
+Subject: [PATCH] dbus: Register the AutoScan method call at the right place
+
+Upstream-Status: Accepted [hostap@lists.shmoo.com]
+
+Signed-hostap: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
+---
+ wpa_supplicant/dbus/dbus_new.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
+index 8bc6618..d076d2d 100644
+--- a/wpa_supplicant/dbus/dbus_new.c
++++ b/wpa_supplicant/dbus/dbus_new.c
+@@ -1917,15 +1917,6 @@ static const struct wpa_dbus_method_desc wpas_dbus_global_methods[] = {
+ END_ARGS
+ }
+ },
+-#ifdef CONFIG_AUTOSCAN
+- { "AutoScan", WPAS_DBUS_NEW_IFACE_INTERFACE,
+- (WPADBusMethodHandler) &wpas_dbus_handler_autoscan,
+- {
+- { "arg", "s", ARG_IN },
+- END_ARGS
+- }
+- },
+-#endif /* CONFIG_AUTOSCAN */
+ { NULL, NULL, NULL, { END_ARGS } }
+ };
+
+@@ -2649,6 +2640,15 @@ static const struct wpa_dbus_method_desc wpas_dbus_interface_methods[] = {
+ }
+ },
+ #endif /* CONFIG_AP */
++#ifdef CONFIG_AUTOSCAN
++ { "AutoScan", WPAS_DBUS_NEW_IFACE_INTERFACE,
++ (WPADBusMethodHandler) &wpas_dbus_handler_autoscan,
++ {
++ { "arg", "s", ARG_IN },
++ END_ARGS
++ }
++ },
++#endif /* CONFIG_AUTOSCAN */
+ { NULL, NULL, NULL, { END_ARGS } }
+ };
+
+--
+1.8.1.2
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf
new file mode 100644
index 0000000..dcd92f2
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf
@@ -0,0 +1,107 @@
+# Sample udhcpd configuration file (/etc/udhcpd.conf)
+
+# The start and end of the IP lease block
+
+start 192.168.42.20 #default: 192.168.0.20
+end 192.168.42.254 #default: 192.168.0.254
+
+
+# The interface that udhcpd will use
+
+interface INTERFACE #default: eth0
+
+
+# The maximim number of leases (includes addressesd reserved
+# by OFFER's, DECLINE's, and ARP conficts
+
+#max_leases 254 #default: 254
+
+
+# If remaining is true (default), udhcpd will store the time
+# remaining for each lease in the udhcpd leases file. This is
+# for embedded systems that cannot keep time between reboots.
+# If you set remaining to no, the absolute time that the lease
+# expires at will be stored in the dhcpd.leases file.
+
+#remaining yes #default: yes
+
+
+# The time period at which udhcpd will write out a dhcpd.leases
+# file. If this is 0, udhcpd will never automatically write a
+# lease file. (specified in seconds)
+
+#auto_time 7200 #default: 7200 (2 hours)
+
+
+# The amount of time that an IP will be reserved (leased) for if a
+# DHCP decline message is received (seconds).
+
+#decline_time 3600 #default: 3600 (1 hour)
+
+
+# The amount of time that an IP will be reserved (leased) for if an
+# ARP conflct occurs. (seconds
+
+#conflict_time 3600 #default: 3600 (1 hour)
+
+
+# How long an offered address is reserved (leased) in seconds
+
+#offer_time 60 #default: 60 (1 minute)
+
+# If a lease to be given is below this value, the full lease time is
+# instead used (seconds).
+
+#min_lease 60 #defult: 60
+
+
+# The location of the leases file
+
+#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases
+
+# The location of the pid file
+pidfile /var/run/udhcpd-INTERFACE.pid #default: /var/run/udhcpd.pid
+
+# Every time udhcpd writes a leases file, the below script will be called.
+# Useful for writing the lease file to flash every few hours.
+
+#notify_file #default: (no script)
+
+#notify_file dumpleases # <--- useful for debugging
+
+# The following are bootp specific options, setable by udhcpd.
+
+#siaddr 192.168.0.22 #default: 0.0.0.0
+
+#sname zorak #default: (none)
+
+#boot_file /var/nfs_root #default: (none)
+
+# The remainer of options are DHCP options and can be specifed with the
+# keyword 'opt' or 'option'. If an option can take multiple items, such
+# as the dns option, they can be listed on the same line, or multiple
+# lines. The only option with a default is 'lease'.
+
+# Currently supported options, for more info, see options.c
+opt subnet 255.255.255.0
+#opt timezone
+#opt router
+#opt timesvr
+#opt namesvr
+#opt dns
+#opt logsvr
+#opt cookiesvr
+#opt lprsvr
+#opt bootsize
+#opt domain
+#opt swapsvr
+#opt rootpath
+#opt ipttl
+#opt mtu
+#opt broadcast
+#opt wins
+#opt lease
+#opt ntpsrv
+#opt tftp
+#opt bootfile
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch
new file mode 100644
index 0000000..ceee40d
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch
@@ -0,0 +1,184 @@
+
+--- a/wpa_supplicant/src/drivers/driver_nl80211.c 2014-10-01 16:44:14.819137037 +0200
++++ b/wpa_supplicant/src/drivers/driver_nl80211.c 2014-10-01 16:37:16.979149254 +0200
+@@ -321,7 +321,7 @@
+ struct wpa_driver_scan_params *params);
+ static int android_pno_stop(struct i802_bss *bss);
+ #endif /* ANDROID */
+-#ifdef ANDROID_P2P
++#if defined(ANDROID_P2P) && !defined(EDISON_TARGET)
+ int wpa_driver_set_p2p_noa(void *priv, u8 count, int start, int duration);
+ int wpa_driver_get_p2p_noa(void *priv, u8 *buf, size_t len);
+ int wpa_driver_set_p2p_ps(void *priv, int legacy_ps, int opp_ps, int ctwindow);
+@@ -10329,7 +10329,7 @@
+ "opp_ps=%d ctwindow=%d)", legacy_ps, opp_ps, ctwindow);
+
+ if (opp_ps != -1 || ctwindow != -1)
+-#ifdef ANDROID_P2P
++#if defined(ANDROID_P2P) && !defined(EDISON_TARGET)
+ wpa_driver_set_p2p_ps(priv, legacy_ps, opp_ps, ctwindow);
+ #else
+ return -1; /* Not yet supported */
+@@ -10832,7 +10832,7 @@
+ .update_ft_ies = wpa_driver_nl80211_update_ft_ies,
+ .get_mac_addr = wpa_driver_nl80211_get_macaddr,
+ .get_survey = wpa_driver_nl80211_get_survey,
+-#ifdef ANDROID_P2P
++#if defined(ANDROID_P2P) && !defined(EDISON_TARGET)
+ .set_noa = wpa_driver_set_p2p_noa,
+ .get_noa = wpa_driver_get_p2p_noa,
+ .set_ap_wps_ie = wpa_driver_set_ap_wps_p2p_ie,
+
+--- a/wpa_supplicant/wpa_cli.c 2014-10-01 16:52:31.123122526 +0200
++++ b/wpa_supplicant/wpa_cli.c 2014-10-01 17:05:59.043098904 +0200
+@@ -3625,7 +3625,8 @@
+ continue;
+ #endif /* _DIRENT_HAVE_D_TYPE */
+ if (os_strcmp(dent->d_name, ".") == 0 ||
+- os_strcmp(dent->d_name, "..") == 0)
++ os_strcmp(dent->d_name, "..") == 0 ||
++ os_strstr(dent->d_name, "p2p"))
+ continue;
+ printf("Selected interface '%s'\n", dent->d_name);
+ ifname = os_strdup(dent->d_name);
+
+--- a/wpa_supplicant/p2p_supplicant.c 2014-09-26 12:09:39.856249682 +0200
++++ b/wpa_supplicant/p2p_supplicant.c 2014-12-17 16:42:39.535846212 +0100
+@@ -3061,6 +3061,13 @@
+ int cla, op;
+
+ if (wpa_s->hw.modes == NULL) {
++ wpa_printf(MSG_DEBUG, "P2P: Driver did not support fetching. "
++ "Use supported channels retrieved on interface wlan0");
++ wpa_s = wpa_s->global->ifaces;
++
++ }
++
++ if (wpa_s->hw.modes == NULL) {
+ wpa_printf(MSG_DEBUG, "P2P: Driver did not support fetching "
+ "of all supported channels; assume dualband "
+ "support");
+@@ -3172,7 +3179,8 @@
+ }
+
+
+-int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s)
++int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s,
++ const char *conf_p2p_dev)
+ {
+ struct wpa_interface iface;
+ struct wpa_supplicant *p2pdev_wpa_s;
+@@ -3198,7 +3206,20 @@
+ iface.ifname = wpa_s->pending_interface_name;
+ iface.driver = wpa_s->driver->name;
+ iface.driver_param = wpa_s->conf->driver_param;
+- iface.confname = wpa_s->confname;
++
++ /*
++ * If a P2P Device configuration file was given, use it as the interface
++ * configuration file (instead of using parent's configuration file.
++ */
++ if (conf_p2p_dev) {
++ iface.confname = conf_p2p_dev;
++ iface.ctrl_interface = NULL;
++ } else {
++ iface.confname = wpa_s->confname;
++ iface.ctrl_interface = wpa_s->conf->ctrl_interface;
++ }
++ iface.conf_p2p_dev = NULL;
++
+ p2pdev_wpa_s = wpa_supplicant_add_iface(wpa_s->global, &iface);
+ if (!p2pdev_wpa_s) {
+ wpa_printf(MSG_DEBUG, "P2P: Failed to add P2P Device interface");
+
+--- a/wpa_supplicant/main.c 2014-09-26 12:09:39.856249682 +0200
++++ b/wpa_supplicant/main.c 2014-12-17 16:42:39.535846212 +0100
+@@ -83,6 +83,9 @@
+ #endif /* CONFIG_DBUS */
+ printf(" -v = show version\n"
+ " -W = wait for a control interface monitor before starting\n"
++#ifdef CONFIG_P2P
++ " -m = Configuration file for the P2P Device interface\n"
++#endif /* CONFIG_P2P */
+ " -N = start describing new interface\n");
+
+ printf("example:\n"
+@@ -160,7 +163,7 @@
+
+ for (;;) {
+ c = getopt(argc, argv,
+- "b:Bc:C:D:de:f:g:G:hi:I:KLNo:O:p:P:qsTtuvW");
++ "b:Bc:C:D:de:f:g:G:hi:I:KLm:No:O:p:P:qsTtuvW");
+ if (c < 0)
+ break;
+ switch (c) {
+@@ -220,6 +223,11 @@
+ license();
+ exitcode = 0;
+ goto out;
++#ifdef CONFIG_P2P
++ case 'm':
++ iface->conf_p2p_dev = optarg;
++ break;
++#endif /* CONFIG_P2P */
+ case 'o':
+ params.override_driver = optarg;
+ break;
+@@ -311,7 +319,7 @@
+ if (wpa_s->global->p2p == NULL &&
+ (wpa_s->drv_flags &
+ WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE) &&
+- wpas_p2p_add_p2pdev_interface(wpa_s) < 0)
++ wpas_p2p_add_p2pdev_interface(wpa_s, iface->conf_p2p_dev) < 0)
+ exitcode = -1;
+ #endif /* CONFIG_P2P */
+ }
+
+--- a/wpa_supplicant/p2p_supplicant.h 2014-09-26 12:09:39.856249682 +0200
++++ b/wpa_supplicant/p2p_supplicant.h 2014-12-17 16:42:39.535846212 +0100
+@@ -19,7 +19,8 @@
+ int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s);
+ void wpas_p2p_deinit(struct wpa_supplicant *wpa_s);
+ void wpas_p2p_deinit_global(struct wpa_global *global);
+-int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s);
++int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s,
++ const char *conf_p2p_dev);
+ int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
+ const char *pin, enum p2p_wps_method wps_method,
+ int persistent_group, int auto_join, int join,
+
+--- a/wpa_supplicant/wpa_supplicant_i.h 2014-09-26 12:09:39.856249682 +0200
++++ b/wpa_supplicant/wpa_supplicant_i.h 2014-12-17 16:42:39.535846212 +0100
+@@ -63,6 +63,17 @@
+ */
+ const char *confanother;
+
++#ifdef CONFIG_P2P
++ /**
++ * conf_p2p_dev - Configuration file used to hold the
++ * P2P Device configuration parameters.
++ *
++ * This can also be %NULL. In such a case, if a P2P Device dedicated
++ * interfaces is created, the main configuration file will be used.
++ */
++ const char *conf_p2p_dev;
++#endif /* CONFIG_P2P */
++
+ /**
+ * ctrl_interface - Control interface parameter
+ *
+
+@@ -904,0 +904,0 @@
+--- a/wpa_supplicant/scan.c 2014-09-26 12:09:39.856249682 +0200
++++ b/wpa_supplicant/scan.c 2014-12-17 16:42:39.535846212 +0100
+@@ -904,7 +904,7 @@
+ */
+ void wpa_supplicant_req_scan(struct wpa_supplicant *wpa_s, int sec, int usec)
+ {
+-#ifndef ANDROID
++#if !defined(ANDROID) && !defined(EDISON_TARGET)
+ /* If there's at least one network that should be specifically scanned
+ * then don't cancel the scan and reschedule. Some drivers do
+ * background scanning which generates frequent scan results, and that
+
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh
new file mode 100644
index 0000000..5c9e5d3
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+
+WPA_SUP_BIN="/usr/sbin/wpa_supplicant"
+WPA_SUP_PNAME="wpa_supplicant"
+WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$IFACE.pid"
+WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $IFACE"
+
+VERBOSITY=0
+
+
+if [ -s "$IF_WPA_CONF" ]; then
+ WPA_SUP_CONF="-c $IF_WPA_CONF"
+else
+ exit 0
+fi
+
+if [ ! -x "$WPA_SUP_BIN" ]; then
+
+ if [ "$VERBOSITY" = "1" ]; then
+ echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN"
+ fi
+
+ exit 1
+fi
+
+if [ "$MODE" = "start" ] ; then
+ # driver type of interface, defaults to wext when undefined
+ if [ -s "/etc/wpa_supplicant/driver.$IFACE" ]; then
+ IF_WPA_DRIVER=$(cat "/etc/wpa_supplicant/driver.$IFACE")
+ elif [ -z "$IF_WPA_DRIVER" ]; then
+
+ if [ "$VERBOSITY" = "1" ]; then
+ echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\""
+ fi
+
+ IF_WPA_DRIVER="wext"
+ fi
+
+ # if we have passed the criteria, start wpa_supplicant
+ if [ -n "$WPA_SUP_CONF" ]; then
+
+ if [ "$VERBOSITY" = "1" ]; then
+ echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER"
+ fi
+
+ start-stop-daemon --start --quiet \
+ --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
+ -- $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER
+ fi
+
+ # if the interface socket exists, then wpa_supplicant was invoked successfully
+ if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then
+
+ if [ "$VERBOSITY" = "1" ]; then
+ echo "$WPA_SUP_PNAME: ctrl_interface socket located at $WPA_COMMON_CTRL_IFACE/$IFACE"
+ fi
+
+ exit 0
+
+ fi
+
+elif [ "$MODE" = "stop" ]; then
+
+ if [ -f "$WPA_SUP_PIDFILE" ]; then
+
+ if [ "$VERBOSITY" = "1" ]; then
+ echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon"
+ fi
+
+ start-stop-daemon --stop --quiet \
+ --name $WPA_SUP_PNAME --pidfile $WPA_SUP_PIDFILE
+
+ if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then
+ rm -f $WPA_COMMON_CTRL_IFACE/$IFACE
+ fi
+
+ if [ -f "$WPA_SUP_PIDFILE" ]; then
+ rm -f $WPA_SUP_PIDFILE
+ fi
+ fi
+
+fi
+
+exit 0
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh
new file mode 100644
index 0000000..77b9086
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+#
+# This script file is passed as parameter to wpa_cli, started as a daemon,
+# so that the wpa_supplicant events are sent to this script
+# and actions executed, like :
+# - start DHCP client when STA is connected.
+# - stop DHCP client when STA is disconnected.
+# - start DHCP client when P2P-GC is connected.
+# - stop DHCP server when P2P-GO is disconnected.
+#
+# This script skips events if connmand (connman.service) is started
+# Indeed, it is considered that the Wifi connection is managed through
+# connmand and not wpa_cli
+#
+
+IFNAME=$1
+CMD=$2
+
+kill_daemon() {
+ NAME=$1
+ PF=$2
+
+ if [ ! -r $PF ]; then
+ return
+ fi
+
+ PID=`cat $PF`
+ if [ $PID -gt 0 ]; then
+ if ps | grep $NAME | grep $PID; then
+ kill $PID
+ fi
+ fi
+ if [ -r $PF ]; then
+ # file can be removed by the deamon when killed
+ rm $PF
+ fi
+}
+
+echo "event $CMD received from wpa_supplicant"
+
+# if Connman is started, ignore wpa_supplicant
+# STA connection event because the DHCP connection
+# is triggerd by Connman
+if [ `systemctl is-active connman` == "active" ] ; then
+ if [ "$CMD" = "CONNECTED" ] || [ "$CMD" = "DISCONNECTED" ] ; then
+ echo "event $CMD ignored because Connman is started"
+ exit 0
+ fi
+fi
+
+if [ "$CMD" = "CONNECTED" ]; then
+ kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid
+ udhcpc -i $IFNAME -p /var/run/udhcpc-$IFNAME.pid -S
+fi
+
+if [ "$CMD" = "DISCONNECTED" ]; then
+ kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid
+ ifconfig $IFNAME 0.0.0.0
+fi
+
+if [ "$CMD" = "P2P-GROUP-STARTED" ]; then
+ GIFNAME=$3
+ if [ "$4" = "GO" ]; then
+ kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid
+ ifconfig $GIFNAME 192.168.42.1 up
+ cp /etc/wpa_supplicant/udhcpd-p2p.conf /etc/wpa_supplicant/udhcpd-p2p-itf.conf
+ sed -i "s/INTERFACE/$GIFNAME/" /etc/wpa_supplicant/udhcpd-p2p-itf.conf
+ udhcpd /etc/wpa_supplicant/udhcpd-p2p-itf.conf
+ fi
+ if [ "$4" = "client" ]; then
+ kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid
+ kill_daemon udhcpd /var/run/udhcpd-$GIFNAME.pid
+ udhcpc -i $GIFNAME -p /var/run/udhcpc-$GIFNAME.pid
+ fi
+fi
+
+if [ "$CMD" = "P2P-GROUP-REMOVED" ]; then
+ GIFNAME=$3
+ if [ "$4" = "GO" ]; then
+ kill_daemon udhcpd /var/run/udhcpd-$GIFNAME.pid
+ ifconfig $GIFNAME 0.0.0.0
+ fi
+ if [ "$4" = "client" ]; then
+ kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid
+ ifconfig $GIFNAME 0.0.0.0
+ fi
+fi
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane
new file mode 100644
index 0000000..4d37989
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane
@@ -0,0 +1,10 @@
+ctrl_interface=/var/run/wpa_supplicant
+ctrl_interface_group=0
+config_methods=virtual_push_button virtual_display push_button keypad
+update_config=1
+fast_reauth=1
+device_name=Edison
+manufacturer=Intel
+model_name=Edison
+
+
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service
new file mode 100644
index 0000000..ec363aa
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service
@@ -0,0 +1,21 @@
+[Unit]
+Description=WPA supplicant service
+Requires=sys-subsystem-net-devices-wlan0.device
+After=sys-subsystem-net-devices-wlan0.device
+
+[Service]
+Type=simple
+
+# start wpa_supplicant service :
+# - the second interface p2p-dev-wlan0 is automatically created at startup
+# - the file wpa_supplicant is common to both interfaces wlan0 and p2p-dev-wlan0
+ExecStart=/usr/sbin/wpa_supplicant -u -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211 -puse_p2p_group_interface=1p2p_device=1 -m/etc/wpa_supplicant/p2p_supplicant.conf -O /var/run/wpa_supplicant -e /etc/wpa_supplicant/entropy.bin
+
+# start wpa_supplicant_event service after the start of wpa_supplicant service
+ExecStartPost=/bin/systemctl start wpa_supplicant_wlan0_event ; /bin/systemctl start wpa_supplicant_p2p_event
+
+# stop wpa_supplicant_event service after the stop of wpa_supplicant service
+ExecStopPost=/bin/systemctl stop wpa_supplicant_wlan0_event ; /bin/systemctl stop wpa_supplicant_p2p_event
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service
new file mode 100644
index 0000000..b5445a2
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Daemon to receive the wpa_supplicant event
+Requires=sys-subsystem-net-devices-wlan0.device
+After=sys-subsystem-net-devices-wlan0.device
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/wpa_cli -a /etc/wpa_supplicant/wpa_cli-actions.sh -i p2p-dev-wlan0
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service
new file mode 100644
index 0000000..7428b4c
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Daemon to receive the wpa_supplicant event
+Requires=sys-subsystem-net-devices-wlan0.device
+After=sys-subsystem-net-devices-wlan0.device
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/wpa_cli -a /etc/wpa_supplicant/wpa_cli-actions.sh -i wlan0
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend
new file mode 100644
index 0000000..5063afd
--- /dev/null
+++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend
@@ -0,0 +1,96 @@
+LIC_FILES_CHKSUM = "file://COPYING;md5=ab87f20cd7e8c0d0a6539b34d3791d0e \
+ file://README;md5=5c7cc1ea1a4d82b1cbe9a02fe92881b8 \
+ file://wpa_supplicant/wpa_supplicant.c;beginline=1;endline=12;md5=cba4fa09fa364da845ca546f21008909"
+
+RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
+
+
+SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service wpa_supplicant_wlan0_event.service wpa_supplicant_p2p_event.service"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/wpa-supplicant:"
+
+PV = "android-4.4.4_r2.0.1"
+
+BASE_SRC_URI = "file://defconfig-gnutls \
+ file://wpa_supplicant.conf-sane \
+ file://p2p_supplicant.conf-sane \
+ file://99_wpa_supplicant \
+ file://fi.w1.wpa_supplicant1.service \
+ file://udhcpd-p2p.conf \
+ file://wpa_supplicant.service \
+ file://wpa_supplicant_wlan0_event.service \
+ file://wpa_supplicant_p2p_event.service \
+ file://wpa-supplicant.sh \
+ file://wpa-supplicant-${PV}.patch \
+ file://wpa_cli-actions.sh "
+
+SRC_URI = "${BASE_SRC_URI} \
+ git://android.googlesource.com/platform/external/wpa_supplicant_8;protocol=https;tag=android-4.4.4_r2.0.1"
+
+S = "${WORKDIR}/git"
+PR = "r1"
+
+SRC_URI[md5sum] = "f2ed8fef72cf63d8d446a2d0a6da630a"
+SRC_URI[sha256sum] = "eaaa5bf3055270e521b2dff64f2d203ec8040f71958b8588269a82c00c9d7b6a"
+
+FILES_${PN} += "${datadir}/dbus-1/system-services/* \
+ ${systemd_unitdir}/system/ \
+ ${sysconfdir}/systemd/"
+
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS
+ sed -e "s:CFLAGS\ =.*:& \$(EXTRA_CFLAGS):g" ${S}/src/lib.rules > ${B}/src/lib.rules
+ oe_runmake -C wpa_supplicant
+}
+
+# Use do_install instead of do_install_append to skip un-needed/un-used files
+# added by do_install() in wpa_supplicant.inc
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 755 wpa_supplicant/wpa_supplicant ${D}${sbindir}
+ install -m 755 wpa_supplicant/wpa_cli ${D}${sbindir}
+
+ install -d ${D}${bindir}
+ install -m 755 wpa_supplicant/wpa_passphrase ${D}${bindir}
+
+ install -d ${D}${sysconfdir}/wpa_supplicant
+ install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant/wpa_supplicant.conf
+ install -m 600 ${WORKDIR}/p2p_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant/p2p_supplicant.conf
+
+ install -d ${D}/${sysconfdir}/dbus-1/system.d
+ install -m 644 ${S}/wpa_supplicant/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d
+ install -d ${D}/${datadir}/dbus-1/system-services
+ install -m 644 ${B}/wpa_supplicant/dbus/*.service ${D}/${datadir}/dbus-1/system-services
+ # overwrite the service file with our modified one
+ install -m 644 ${WORKDIR}/fi.w1.wpa_supplicant1.service ${D}/${datadir}/dbus-1/system-services
+
+ if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+
+ install -d ${D}/${systemd_unitdir}/system
+ install -d ${D}${sysconfdir}/systemd/system/multi-user.target.wants
+
+ # Install the wpa_supplicant service
+ install -m 644 ${WORKDIR}/wpa_supplicant.service ${D}${systemd_unitdir}/system
+
+ # Install wpa_supplicant_event service for udhcp client start/stop based on wifi connection/disconnection
+ install -m 755 ${WORKDIR}/wpa_cli-actions.sh ${D}${sysconfdir}/wpa_supplicant
+ install -m 644 ${WORKDIR}/wpa_supplicant_wlan0_event.service ${D}${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/wpa_supplicant_p2p_event.service ${D}${systemd_unitdir}/system
+
+ # Install udhcp server configuration file for P2P GO
+ install -m 644 ${WORKDIR}/udhcpd-p2p.conf ${D}${sysconfdir}/wpa_supplicant
+ fi
+
+ install -d ${D}/etc/default/volatiles
+ install -m 0644 ${WORKDIR}/99_wpa_supplicant ${D}/etc/default/volatiles
+}
+
+pkg_postinst_wpa-supplicant () {
+ # If we're offline, we don't need to do this.
+ if [ "x$D" != "x" ]; then
+ exit 0
+ fi
+
+ killall -q -HUP dbus-daemon || true
+}
diff --git a/meta-edison-distro/recipes-core/base-files/base-files/factory.mount b/meta-edison-distro/recipes-core/base-files/base-files/factory.mount
new file mode 100644
index 0000000..2619c96
--- /dev/null
+++ b/meta-edison-distro/recipes-core/base-files/base-files/factory.mount
@@ -0,0 +1,12 @@
+[Unit]
+Description=Mount for factory
+
+[Install]
+WantedBy=default.target
+
+[Mount]
+What=/dev/disk/by-partlabel/factory
+Where=/factory
+Options=ro,noauto,x-systemd.automount,nosuid,nodev,noatime,discard,barrier=1,data=ordered,noauto_da_alloc
+Type=ext4
+TimeoutSec=3
diff --git a/meta-edison-distro/recipes-core/base-files/base-files/fstab b/meta-edison-distro/recipes-core/base-files/base-files/fstab
new file mode 100644
index 0000000..55edeef
--- /dev/null
+++ b/meta-edison-distro/recipes-core/base-files/base-files/fstab
@@ -0,0 +1,9 @@
+rootfs / auto nodev,noatime,discard,barrier=1,data=ordered,noauto_da_alloc 1 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+usbdevfs /proc/bus/usb usbdevfs auto 0 0
+tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
+tmpfs /var/volatile tmpfs defaults 0 0
+
+/dev/disk/by-partlabel/boot /boot auto noauto,x-systemd.automount,nosuid,nodev,noatime,discard 1 1
+/dev/disk/by-partlabel/home /home auto noauto,x-systemd.automount,nosuid,nodev,noatime,discard,barrier=1,data=ordered,noauto_da_alloc 1 1
diff --git a/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount
new file mode 100644
index 0000000..a577591
--- /dev/null
+++ b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount
@@ -0,0 +1,11 @@
+[Unit]
+Description=Automount for SDCard
+ConditionPathExists=/dev/mmcblk1p1
+RefuseManualStart=true
+RefuseManualStop=true
+
+[Automount]
+Where=/media/sdcard
+
+[Install]
+WantedBy=local-fs.target
diff --git a/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount
new file mode 100644
index 0000000..a9d310b
--- /dev/null
+++ b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount
@@ -0,0 +1,9 @@
+[Unit]
+Description=Mount for SDCard
+BindsTo=dev-mmcblk1p1.device
+Conflicts=media-sdcard.automount
+
+[Mount]
+What=/dev/mmcblk1p1
+Where=/media/sdcard
+TimeoutSec=3
diff --git a/meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile b/meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile
new file mode 100644
index 0000000..4f1d2a0
--- /dev/null
+++ b/meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile
@@ -0,0 +1,9 @@
+# ~/.profile: executed by Bourne-compatible login shells.
+
+if [ -f ~/.bashrc ]; then
+ . ~/.bashrc
+fi
+
+# path set by /etc/profile
+# export PATH
+
diff --git a/meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend
new file mode 100644
index 0000000..dd8d96a
--- /dev/null
+++ b/meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend
@@ -0,0 +1,33 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/base-files:"
+SRC_URI += "file://fstab"
+SRC_URI += "file://media-sdcard.mount"
+SRC_URI += "file://media-sdcard.automount"
+SRC_URI += "file://factory.mount"
+SRC_URI += "file://share/dot.profile"
+
+# override default volatile to suppress var/log link creation
+volatiles = "tmp"
+
+do_install_append() {
+ install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab
+ install -m 0755 ${WORKDIR}/share/dot.profile ${D}${sysconfdir}/skel/.profile
+
+ # enable mount of the SDCard in /media/sdcard when inserted
+ install -d ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/media-sdcard.mount ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/media-sdcard.automount ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/factory.mount ${D}${systemd_unitdir}/system
+ # Enable the service
+ install -d ${D}${sysconfdir}/systemd/system/local-fs.target.wants
+ ln -sf ${systemd_unitdir}/system/media-sdcard.automount \
+ ${D}${sysconfdir}/systemd/system/local-fs.target.wants/media-sdcard.automount
+ install -d ${D}${sysconfdir}/systemd/system/default.target.wants
+ ln -sf ${systemd_unitdir}/system/factory.mount \
+ ${D}${sysconfdir}/systemd/system/default.target.wants/factory.mount
+
+}
+
+FILES_${PN} += "${base_libdir}/systemd/system/*.mount"
+FILES_${PN} += "${base_libdir}/systemd/system/*.automount"
+FILES_${PN} += "${sysconfdir}/systemd/system/default.target.wants/*.mount"
+FILES_${PN} += "${sysconfdir}/systemd/system/local-fs.target.wants/*.automount"
diff --git a/meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend b/meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend
new file mode 100644
index 0000000..faf18af
--- /dev/null
+++ b/meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend
@@ -0,0 +1,5 @@
+# to get brctl and log configuration settings
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/:"
+
+SRC_URI += "file://brctl-utilities.cfg \
+ file://busybox-log.cfg "
diff --git a/meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg b/meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg
new file mode 100644
index 0000000..53d4ead
--- /dev/null
+++ b/meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg
@@ -0,0 +1,2 @@
+CONFIG_BRCTL=y
+CONFIG_FEATURE_BRCTL_SHOW=y
diff --git a/meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg b/meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg
new file mode 100644
index 0000000..7b7408f
--- /dev/null
+++ b/meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg
@@ -0,0 +1,3 @@
+CONFIG_KLOGD=n
+CONFIG_SYSLOGD=n
+
diff --git a/meta-edison-distro/recipes-core/first-install/files/first-install.service b/meta-edison-distro/recipes-core/first-install/files/first-install.service
new file mode 100644
index 0000000..3ebb9d7
--- /dev/null
+++ b/meta-edison-distro/recipes-core/first-install/files/first-install.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=First install service
+OnFailure=reboot.target
+Requires=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device
+After=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device
+[Service]
+ExecStart=@BASE_BINDIR@/sh -c "shell='sh'; if [ -f /bin/bash ]; then shell='bash'; fi; @BASE_BINDIR@/$shell @BASE_SBINDIR@/first-install.sh systemd-service"
+StandardOutput=journal+console
+
diff --git a/meta-edison-distro/recipes-core/first-install/files/first-install.sh b/meta-edison-distro/recipes-core/first-install/files/first-install.sh
new file mode 100644
index 0000000..1b29245
--- /dev/null
+++ b/meta-edison-distro/recipes-core/first-install/files/first-install.sh
@@ -0,0 +1,185 @@
+#!/bin/bash
+# first install script to do post flash install
+
+# global variable set to 1 if output is systemd journal
+fi_journal_out=0
+
+export PATH="$PATH:/usr/sbin/"
+
+# handle argument, if first-install is called from systemd service
+# arg1 is "systemd-service"
+if [ "$1" == "systemd-service" ]; then fi_journal_out=1; fi;
+
+#echo function to output to journal system or in colored terminal
+#arg $1 message
+#arg $2 log level
+fi_echo () {
+ lg_lvl=${2:-"log"}
+ msg_prefix=""
+ msg_suffix=""
+ case "$lg_lvl" in
+ log) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<5>"; else msg_prefix="\033[1m"; msg_suffix="\033[0m"; fi;;
+ err) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<1>"; else msg_prefix="\033[31;40m\033[1m"; msg_suffix="\033[0m"; fi;;
+ esac
+ printf "${msg_prefix}${1}${msg_suffix}\n"
+}
+
+# set_retry_count to failure file
+# arg $1 new retry count
+set_retry_count () {
+ fw_setenv first_install_retry $1
+}
+
+# get_retry_count from failure from bootloader
+get_retry_count () {
+ retry_count=$(fw_printenv first_install_retry | tr -d "first_install_retry=")
+ [ -z $retry_count ] && { set_retry_count 0; retry_count=0;}
+ return $retry_count
+}
+
+# exit first_install by rebooting and handling the failure by setting
+# the firmware target according to failure or success
+# on failure increment fail count and reboot
+# on success reboot in multi-user target
+# arg $1 exit code
+exit_first_install () {
+ if [ $1 -eq 0 ]; then
+ # reset failure count
+ set_retry_count 0
+ # update firmware target
+ # next reboot will be on multi-user target
+ fw_setenv bootargs_target multi-user
+ fi
+ # dump journal to log file
+ journalctl -u first-install -o short-iso >> /first-install.log
+ systemctl daemon-reload
+ systemctl stop home.mount
+ systemctl default
+}
+
+# continue normal flow or exit on error code
+# arg $1 : return code to check
+# arg $2 : string resuming the action
+fi_assert () {
+ if [ $1 -ne 0 ]; then
+ fi_echo "${2} : Failed ret($1)" err;
+ exit_first_install $1;
+ else
+ fi_echo "${2} : Success";
+ fi
+}
+
+factory_partition () {
+ mkdir -p /factory
+ mount /dev/disk/by-partlabel/factory /factory
+ # test can fail if done during manufacturing
+ if [ $? -ne 0 ];
+ then
+ mkfs.ext4 /dev/disk/by-partlabel/factory
+ mount /dev/disk/by-partlabel/factory /factory
+ echo "00:11:22:33:55:66" > /factory/bluetooth_address
+ echo "VSPPYWWDXXXXXNNN" > /factory/serial_number
+ fi
+}
+
+# generate sshd keys
+sshd_init () {
+ rm -rf /etc/ssh/*key*
+ systemctl start sshdgenkeys
+}
+
+
+# Substitute the SSID and passphrase in the file /etc/hostapd/hostapd.conf
+# The SSID is built from the hostname and a serial number to have a
+# unique SSID in case of multiple Edison boards having their WLAN AP active.
+setup_ap_ssid_and_passphrase () {
+ # factory_serial is 16 bytes long
+ if [ -f /sys/class/net/wlan0/address ];
+ then
+ ifconfig wlan0 up
+ wlan0_addr=$(cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]')
+ ssid="EDISON-${wlan0_addr:12:2}-${wlan0_addr:15:2}"
+
+ # Substitute the SSID
+ sed -i -e 's/^ssid=.*/ssid='${ssid}'/g' /etc/hostapd/hostapd.conf
+ fi
+
+ if [ -f /factory/serial_number ] ;
+ then
+ factory_serial=$(head -n1 /factory/serial_number | tr '[:lower:]' '[:upper:]')
+ passphrase="${factory_serial}"
+
+ # Substitute the passphrase
+ sed -i -e 's/^wpa_passphrase=.*/wpa_passphrase='${passphrase}'/g' /etc/hostapd/hostapd.conf
+ fi
+
+ sync
+}
+
+
+# script main part
+
+# print to journal the current retry count
+get_retry_count
+retry_count=$?
+set_retry_count $((${retry_count} + 1))
+fi_echo "Starting First Install (try: ${retry_count})"
+
+# format partition home to ext4
+mkfs.ext4 -m0 /dev/disk/by-partlabel/home
+fi_assert $? "Formatting home partition"
+
+# backup initial /home/root directory
+mkdir /tmp/oldhome
+cp -R /home/* /tmp/oldhome/
+fi_assert $? "Backup home/root contents of rootfs"
+
+# mount home partition on /home
+mount /dev/disk/by-partlabel/home /home
+fi_assert $? "Mount /home partition"
+
+# copy back contents to /home and cleanup
+mv /tmp/oldhome/* /home/
+rm -rf /tmp/oldhome
+fi_assert $? "Restore home/root contents on new /home partition"
+
+# create a fat32 primary partition on all available space
+echo -ne "n\np\n1\n\n\nt\nb\np\nw\n" | fdisk /dev/disk/by-partlabel/update
+
+# silent error code for now because fdisk failed to reread MBR correctly
+# MBR is correct but fdisk understand it as the main system MBR, which is
+# not the case.
+fi_assert 0 "Formatting update partition Step 1"
+
+# create a loop device on update disk
+losetup -o 8192 /dev/loop0 /dev/disk/by-partlabel/update
+fi_assert $? "Formatting update partition Step 2"
+
+# format update partition
+mkfs.vfat /dev/loop0 -n "Edison" -F 32
+fi_assert $? "Formatting update partition Step 3"
+
+# remove loop device on update disk
+losetup -d /dev/loop0
+fi_assert $? "Formatting update partition Step 4 final"
+
+# handle factory partition
+factory_partition
+
+# ssh
+sshd_init
+fi_assert $? "Generating sshd keys"
+
+# update entry in /etc/fstab to enable auto mount
+sed -i 's/#\/dev\/disk\/by-partlabel/\/dev\/disk\/by-partlabel/g' /etc/fstab
+fi_assert $? "Update file system table /etc/fstab"
+
+# Setup Access Point SSID and passphrase
+setup_ap_ssid_and_passphrase
+fi_assert $? "Generating Wifi Access Point SSID and passphrase"
+
+fi_echo "First install success"
+
+# end main part
+exit_first_install 0
+
diff --git a/meta-edison-distro/recipes-core/first-install/files/first-install.target b/meta-edison-distro/recipes-core/first-install/files/first-install.target
new file mode 100644
index 0000000..e005f55
--- /dev/null
+++ b/meta-edison-distro/recipes-core/first-install/files/first-install.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=First Install target
+Requires=sysinit.target
+Conflicts=shutdown.target systemd-readahead-collect.service systemd-readahead-replay.service home.automount factory.automount
+After=sysinit.target
+Before=shutdown.target
+AllowIsolate=yes
diff --git a/meta-edison-distro/recipes-core/first-install/first-install.bb b/meta-edison-distro/recipes-core/first-install/first-install.bb
new file mode 100644
index 0000000..c04b930
--- /dev/null
+++ b/meta-edison-distro/recipes-core/first-install/first-install.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "First install systemd target"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "file://first-install.service \
+ file://first-install.target \
+ file://first-install.sh"
+
+SYSTEMD_SERVICE_${PN} = "first-install.service"
+
+RDEPENDS_${PN} = "systemd"
+
+do_install() {
+ install -d ${D}/sbin
+ install -c -m 0744 ${WORKDIR}/first-install.sh ${D}/sbin
+ install -d ${D}${systemd_unitdir}/system
+ install -d ${D}${sysconfdir}/systemd/system/first-install.target.wants
+ install -c -m 0644 ${WORKDIR}/first-install.target ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/first-install.service ${D}${systemd_unitdir}/system
+ sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+ -e 's,@BASE_SBINDIR@,${base_sbindir},g' \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@BINDIR@,${bindir},g' \
+ ${D}${systemd_unitdir}/system/first-install.service
+
+ # enable services
+ ln -sf ${systemd_unitdir}/system/first-install.service \
+ ${D}${sysconfdir}/systemd/system/first-install.target.wants/first-install.service
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/*.service \
+ ${base_libdir}/systemd/system/first-install.target \
+ ${sysconfdir} \
+ /sbin/first-install.sh"
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
diff --git a/meta-edison-distro/recipes-core/images/edison-image.bb b/meta-edison-distro/recipes-core/images/edison-image.bb
new file mode 100644
index 0000000..f106657
--- /dev/null
+++ b/meta-edison-distro/recipes-core/images/edison-image.bb
@@ -0,0 +1,130 @@
+DESCRIPTION = "A fully functional image to run EDISON"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+ file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+LICENSE = "MIT"
+IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}"
+IMAGE_INSTALL += "openssh-sftp-server"
+
+IMAGE_LINGUAS = " "
+
+INITRD = ""
+INITRD_IMAGE = ""
+
+# Do not use legacy nor EFI BIOS
+PCBIOS = "0"
+# Do not support bootable USB stick
+NOISO = "1"
+ROOTFS = ""
+
+# This is useless stuff, but necessary for building because
+# inheriting bootimg also brings syslinux in..
+AUTO_SYSLINUXCFG = "1"
+SYSLINUX_ROOT = ""
+SYSLINUX_TIMEOUT ?= "10"
+SYSLINUX_LABELS ?= "boot install"
+LABELS_append = " ${SYSLINUX_LABELS} "
+
+
+# Specify rootfs image type
+IMAGE_FSTYPES = "ext4"
+
+inherit core-image
+
+# This has to be set after including core-image otherwise it's overriden with "1"
+# and this cancel creation of the boot hddimg
+NOHDD = "0"
+
+inherit bootimg
+do_bootimg[depends] += "${PN}:do_rootfs"
+
+IMAGE_ROOTFS_SIZE = "524288"
+
+IMAGE_FEATURES += "package-management ssh-server-openssh"
+# Allow passwordless root login and postinst logging
+IMAGE_FEATURES += "debug-tweaks"
+
+IMAGE_INSTALL += "connman"
+IMAGE_INSTALL += "connman-client"
+IMAGE_INSTALL += "connman-tools"
+IMAGE_INSTALL += "wireless-tools"
+IMAGE_INSTALL += "wpa-supplicant"
+IMAGE_INSTALL += "hostapd-daemon"
+IMAGE_INSTALL += "bluez5-dev"
+IMAGE_INSTALL += "bluez5-obex"
+IMAGE_INSTALL += "kernel-modules"
+IMAGE_INSTALL += "ethtool"
+IMAGE_INSTALL += "iptables"
+IMAGE_INSTALL += "libstdc++"
+IMAGE_INSTALL += "u-boot"
+IMAGE_INSTALL += "u-boot-fw-utils"
+IMAGE_INSTALL += "file"
+IMAGE_INSTALL += "pciutils"
+IMAGE_INSTALL += "usbutils"
+IMAGE_INSTALL += "ldd"
+IMAGE_INSTALL += "i2c-tools"
+IMAGE_INSTALL += "watchdog-sample"
+IMAGE_INSTALL += "pwr-button-handler"
+IMAGE_INSTALL += "blink-led"
+IMAGE_INSTALL += "first-install"
+IMAGE_INSTALL += "resize-rootfs"
+IMAGE_INSTALL += "systemd-analyze"
+IMAGE_INSTALL += "wget"
+IMAGE_INSTALL += "ota-update"
+
+# Allows to enable OpenMP feature
+IMAGE_INSTALL += "libgomp"
+
+# Add audio firmware
+IMAGE_INSTALL += "sst-fw-bin"
+
+# ALSA lib and utilities
+IMAGE_INSTALL += "alsa-lib"
+IMAGE_INSTALL += "alsa-utils-alsamixer alsa-utils-alsactl alsa-utils-aplay alsa-utils-amixer"
+
+# Python and some basic modules
+IMAGE_INSTALL += "python"
+IMAGE_INSTALL += "python-dbus python-smartpm python-pygobject python-argparse"
+IMAGE_INSTALL += "python-distutils python-pkgutil python-audio python-image python-imaging python-email python-netserver python-xmlrpc python-ctypes python-html python-json python-compile python-misc python-numbers python-unittest python-pydoc"
+
+# Wifi firmware
+IMAGE_INSTALL += "bcm43340-fw"
+# Bluetooth Firmware patch for 43340 and its patch utility
+IMAGE_INSTALL += "bcm43340-bt"
+# service daemon that listens to rfkill events and trigger FW patch download
+IMAGE_INSTALL += "bluetooth-rfkill-event"
+# Wifi driver built as a kernel module
+IMAGE_INSTALL += "bcm43340-mod"
+
+# Provides strace and gdb
+IMAGE_FEATURES += "tools-debug"
+IMAGE_INSTALL += "crashlog"
+
+# Clean corrupted journald entries
+IMAGE_INSTALL += "cleanjournal"
+
+# Adds various other tools
+IMAGE_INSTALL += "tcpdump"
+IMAGE_INSTALL += "net-tools"
+IMAGE_INSTALL += "lsof"
+IMAGE_INSTALL += "iperf"
+
+# Add pulseaudio
+IMAGE_INSTALL += "pulseaudio-server libpulsecore libpulsecommon libpulse libpulse-simple pulseaudio-misc pulseaudio-service"
+
+# Add Mplayer
+IMAGE_INSTALL += "mplayer"
+
+# Those are necessary to manually create partitions and file systems on the eMMC
+IMAGE_INSTALL += "parted"
+IMAGE_INSTALL += "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks libcomerr libss libe2p libext2fs dosfstools"
+
+# Time related
+IMAGE_INSTALL += "tzdata"
+
+# SWIG
+IMAGE_INSTALL += "swig"
+
+# INTEL MCU FW
+IMAGE_INSTALL += "mcu-fw-load"
+IMAGE_INSTALL += "mcu-fw-bin"
+
diff --git a/meta-edison-distro/recipes-core/ota-update/files/ota-update.service b/meta-edison-distro/recipes-core/ota-update/files/ota-update.service
new file mode 100644
index 0000000..bc43401
--- /dev/null
+++ b/meta-edison-distro/recipes-core/ota-update/files/ota-update.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=OTA update service
+OnFailure=reboot.target
+Requires=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device
+After=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device
+[Service]
+ExecStart=@BASE_BINDIR@/sh -c "shell='sh'; if [ -f /bin/bash ]; then shell='bash'; fi; @BASE_BINDIR@/$shell @BASE_SBINDIR@/ota-update.sh systemd-service"
+StandardOutput=journal+console
+
diff --git a/meta-edison-distro/recipes-core/ota-update/files/ota-update.sh b/meta-edison-distro/recipes-core/ota-update/files/ota-update.sh
new file mode 100644
index 0000000..cfbe8ea
--- /dev/null
+++ b/meta-edison-distro/recipes-core/ota-update/files/ota-update.sh
@@ -0,0 +1,149 @@
+#!/bin/bash
+# FIXME: function definition shall be moved to a common script
+
+# global variable set to 1 if output is systemd journal
+fi_journal_out=0
+
+export PATH="$PATH:/usr/sbin/"
+
+# handle argument, if ota-update is called from systemd service
+# arg1 is "systemd-service"
+if [ "$1" == "systemd-service" ]; then fi_journal_out=1; fi;
+
+#echo function to output to journal system or in colored terminal
+#arg $1 message
+#arg $2 log level
+fi_echo () {
+ lg_lvl=${2:-"log"}
+ msg_prefix=""
+ msg_suffix=""
+ case "$lg_lvl" in
+ log) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<5>"; else msg_prefix="\033[1m"; msg_suffix="\033[0m"; fi;;
+ err) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<1>"; else msg_prefix="\033[31;40m\033[1m"; msg_suffix="\033[0m"; fi;;
+ esac
+ printf "${msg_prefix}${1}${msg_suffix}\n"
+}
+
+# set_retry_count to failure file
+# arg $1 new retry count
+set_retry_count () {
+ fw_setenv ota_update_retry $1
+}
+
+# get_retry_count from failure from bootloader
+get_retry_count () {
+ retry_count=$(fw_printenv ota_update_retry | tr -d "ota_update_retry=")
+ [ -z $retry_count ] && { set_retry_count 0; retry_count=0;}
+ return $retry_count
+}
+
+# exit ota_update by rebooting and handling the failure by setting
+# the firmware target according to failure or success
+# on failure increment fail count and reboot
+# on success reboot in multi-user target
+# arg $1 exit code
+exit_ota_update () {
+ if [ $1 -eq 0 ]; then
+ # reset failure count
+ set_retry_count 0
+ # update firmware target
+ # next reboot will be on multi-user target
+ fw_setenv bootargs_target multi-user
+ fi
+
+ fi_echo "Rebooting...."
+ # dump journal to log file
+ journalctl -u ota-update -o short-iso >> /ota-update.log
+ systemctl daemon-reload
+ systemctl stop home.mount
+ systemctl default
+}
+
+# continue normal flow or exit on error code
+# arg $1 : return code to check
+# arg $2 : string resuming the action
+fi_assert () {
+ if [ $1 -ne 0 ]; then
+ fi_echo "${2} : Failed ret($1)" err;
+ exit_ota_update $1;
+ else
+ fi_echo "${2} : Success";
+ fi
+}
+
+factory_partition () {
+ mkdir -p /factory
+ mount /dev/disk/by-partlabel/factory /factory
+ # test can fail if done during manufacturing
+ if [ $? -ne 0 ];
+ then
+ mkfs.ext4 /dev/disk/by-partlabel/factory
+ mount /dev/disk/by-partlabel/factory /factory
+ echo "00:11:22:33:55:66" > /factory/bluetooth_address
+ echo "VSPPYWWDXXXXXNNN" > /factory/serial_number
+ fi
+}
+
+# generate sshd keys
+sshd_init () {
+ rm -rf /etc/ssh/*key*
+ systemctl start sshdgenkeys
+}
+
+
+# Substitute the SSID and passphrase in the file /etc/hostapd/hostapd.conf
+# The SSID is built from the hostname and a serial number to have a
+# unique SSID in case of multiple Edison boards having their WLAN AP active.
+setup_ap_ssid_and_passphrase () {
+ # factory_serial is 16 bytes long
+ if [ -f /sys/class/net/wlan0/address ];
+ then
+ ifconfig wlan0 up
+ wlan0_addr=$(cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]')
+ ssid="EDISON-${wlan0_addr:12:2}-${wlan0_addr:15:2}"
+
+ # Substitute the SSID
+ sed -i -e 's/^ssid=.*/ssid='${ssid}'/g' /etc/hostapd/hostapd.conf
+ fi
+
+ if [ -f /factory/serial_number ] ;
+ then
+ factory_serial=$(head -n1 /factory/serial_number | tr '[:lower:]' '[:upper:]')
+ passphrase="${factory_serial}"
+
+ # Substitute the passphrase
+ sed -i -e 's/^wpa_passphrase=.*/wpa_passphrase='${passphrase}'/g' /etc/hostapd/hostapd.conf
+ fi
+
+ sync
+}
+
+
+# script main part
+
+# print to journal the current retry count
+get_retry_count
+retry_count=$?
+set_retry_count $((${retry_count} + 1))
+fi_echo "Starting OTA update (try: ${retry_count})"
+
+# handle factory partition
+factory_partition
+
+# ssh
+sshd_init
+fi_assert $? "Generating sshd keys"
+
+# update entry in /etc/fstab to enable auto mount
+sed -i 's/#\/dev\/disk\/by-partlabel/\/dev\/disk\/by-partlabel/g' /etc/fstab
+fi_assert $? "Update file system table /etc/fstab"
+
+# Setup Access Point SSID and passphrase
+setup_ap_ssid_and_passphrase
+fi_assert $? "Generating Wifi Access Point SSID and passphrase"
+
+fi_echo "OTA update success"
+
+# end main part
+exit_ota_update 0
+
diff --git a/meta-edison-distro/recipes-core/ota-update/files/ota-update.target b/meta-edison-distro/recipes-core/ota-update/files/ota-update.target
new file mode 100644
index 0000000..6b23e39
--- /dev/null
+++ b/meta-edison-distro/recipes-core/ota-update/files/ota-update.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=OTA update target
+Requires=sysinit.target
+Conflicts=shutdown.target systemd-readahead-collect.service systemd-readahead-replay.service home.automount factory.automount
+After=sysinit.target
+Before=shutdown.target
+AllowIsolate=yes
diff --git a/meta-edison-distro/recipes-core/ota-update/ota-update.bb b/meta-edison-distro/recipes-core/ota-update/ota-update.bb
new file mode 100644
index 0000000..f41eb0d
--- /dev/null
+++ b/meta-edison-distro/recipes-core/ota-update/ota-update.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "OTA update systemd target"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "file://ota-update.service \
+ file://ota-update.target \
+ file://ota-update.sh"
+
+SYSTEMD_SERVICE_${PN} = "ota-update.service"
+
+RDEPENDS_${PN} = "systemd"
+
+do_install() {
+ install -d ${D}/sbin
+ install -c -m 0744 ${WORKDIR}/ota-update.sh ${D}/sbin
+ install -d ${D}${systemd_unitdir}/system
+ install -d ${D}${sysconfdir}/systemd/system/ota-update.target.wants
+ install -c -m 0644 ${WORKDIR}/ota-update.target ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/ota-update.service ${D}${systemd_unitdir}/system
+ sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+ -e 's,@BASE_SBINDIR@,${base_sbindir},g' \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@BINDIR@,${bindir},g' \
+ ${D}${systemd_unitdir}/system/ota-update.service
+
+ # enable services
+ ln -sf ${systemd_unitdir}/system/ota-update.service \
+ ${D}${sysconfdir}/systemd/system/ota-update.target.wants/ota-update.service
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/*.service \
+ ${base_libdir}/systemd/system/ota-update.target \
+ ${sysconfdir} \
+ /sbin/ota-update.sh"
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
diff --git a/meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch b/meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch
new file mode 100644
index 0000000..4dcaf89
--- /dev/null
+++ b/meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch
@@ -0,0 +1,39 @@
+From 8acbcaa6b3d855f3e85e6a108db323278584091e Mon Sep 17 00:00:00 2001
+From: Loic Akue <loicx.akue@intel.com>
+Date: Mon, 3 Nov 2014 16:26:42 +0100
+Subject: [PATCH] bug readline
+
+| READLINE PATCH REPORT
+| =====================
+|
+|Readline-Release: 6.3
+|Patch-ID: readline63-002
+|
+|Bug-Reported-by: Anatol Pomozov <anatol.pomozov@gmail.com>
+|Bug-Reference-ID: <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com>
+|Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
+|
+|Bug-Description:
+|
+|When in callback mode, some readline commands can cause readline to seg
+|fault by passing invalid contexts to callback functions.
+
+Signed-off-by: Loic Akue <loicx.akue@intel.com>
+
+diff --git a/readline.c b/readline.c
+index 03eefa6..55c0522 100644
+--- a/readline.c
++++ b/readline.c
+@@ -744,7 +744,8 @@ _rl_dispatch_callback (cxt)
+ r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ));
+
+ RL_CHECK_SIGNALS ();
+- if (r == 0) /* success! */
++ /* We only treat values < 0 specially to simulate recursion. */
++ if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */
+ {
+ _rl_keyseq_chain_dispose ();
+ RL_UNSETSTATE (RL_STATE_MULTIKEY);
+--
+1.7.9.5
+
diff --git a/meta-edison-distro/recipes-core/readline/readline_6.3.bbappend b/meta-edison-distro/recipes-core/readline/readline_6.3.bbappend
new file mode 100644
index 0000000..c8ecc36
--- /dev/null
+++ b/meta-edison-distro/recipes-core/readline/readline_6.3.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI += "\
+ file://readline-fix-segfault-when-pressing-DEL-key-twice.patch \
+ "
diff --git a/meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service b/meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service
new file mode 100644
index 0000000..708226f
--- /dev/null
+++ b/meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Increases rootfs image size to fit partition
+Requires=dev-disk-by\x2dpartlabel-rootfs.device
+After=dev-disk-by\x2dpartlabel-rootfs.device
+
+[Service]
+Type=oneshot
+ExecStart=/sbin/resize2fs /dev/disk/by-partlabel/rootfs
+ExecStart=/bin/systemctl disable resize-rootfs.service
+
+StandardOutput=journal+console
+
+[Install]
+WantedBy=default.target
diff --git a/meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb b/meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb
new file mode 100644
index 0000000..f91e4ba
--- /dev/null
+++ b/meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Resize Rootfs systemd service"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "file://resize-rootfs.service"
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "resize-rootfs.service"
+
+RDEPENDS_${PN} = "systemd e2fsprogs-resize2fs"
+
+do_install() {
+ install -d ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/resize-rootfs.service ${D}${systemd_unitdir}/system
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/resize-rootfs.service"
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
diff --git a/meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service b/meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service
new file mode 100644
index 0000000..3caa836
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service
@@ -0,0 +1,14 @@
+[Unit]
+Description= Generate unique machine-id
+After=systemd-remount-fs.service
+
+[Service]
+Type=oneshot
+ExecStartPre=/bin/umount /etc/machine-id
+ExecStart=/bin/systemd-machine-id-setup
+ExecStartPost=/bin/systemctl disable edison-machine-id
+StandardOutput=journal+console
+
+[Install]
+WantedBy=basic.target
+
diff --git a/meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service b/meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service
new file mode 100644
index 0000000..e81b6ff
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service
@@ -0,0 +1,14 @@
+[Unit]
+Description= HSU runtime pm service
+Requires=getty.target
+After=getty.target
+
+[Service]
+Type=oneshot
+ExecStart=/bin/sh -c 'echo auto > /sys/devices/pci0000:00/0000:00:04.3/power/control'
+ExecStart=/bin/sh -c 'echo auto > /sys/devices/pci0000:00/0000:00:04.1/power/control'
+StandardOutput=null
+
+[Install]
+WantedBy=default.target
+
diff --git a/meta-edison-distro/recipes-core/systemd/files/journald.conf b/meta-edison-distro/recipes-core/systemd/files/journald.conf
new file mode 100644
index 0000000..e096485
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/journald.conf
@@ -0,0 +1,36 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+#
+# See journald.conf(5) for details
+
+[Journal]
+Storage=persistent
+#Compress=yes
+#Seal=yes
+#SplitMode=login
+#SyncIntervalSec=5m
+#RateLimitInterval=30s
+#RateLimitBurst=1000
+#SystemMaxUse=
+#SystemKeepFree=
+#SystemMaxFileSize=
+#RuntimeMaxUse=
+#RuntimeKeepFree=
+#RuntimeMaxFileSize=
+#MaxRetentionSec=
+#MaxFileSec=1month
+#ForwardToSyslog=yes
+#ForwardToKMsg=no
+#ForwardToConsole=no
+#ForwardToWall=yes
+#TTYPath=/dev/console
+#MaxLevelStore=debug
+#MaxLevelSyslog=debug
+#MaxLevelKMsg=notice
+#MaxLevelConsole=info
+#MaxLevelWall=emerg
+
diff --git a/meta-edison-distro/recipes-core/systemd/files/system.conf b/meta-edison-distro/recipes-core/systemd/files/system.conf
new file mode 100644
index 0000000..e21ba85
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/system.conf
@@ -0,0 +1,45 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+#
+# See systemd-system.conf(5) for details
+
+[Manager]
+#LogLevel=info
+#LogTarget=journal-or-kmsg
+#LogColor=yes
+#LogLocation=no
+#DumpCore=yes
+#CrashShell=no
+#ShowStatus=yes
+#CrashChVT=1
+#CPUAffinity=1 2
+#DefaultControllers=cpu
+#DefaultStandardOutput=journal
+#DefaultStandardError=inherit
+#JoinControllers=cpu,cpuacct,cpuset net_cls,net_prio
+# Watchdog timeout. Value must be between 35 and 170 seconds.
+RuntimeWatchdogSec=90
+#ShutdownWatchdogSec=10min
+#CapabilityBoundingSet=
+#TimerSlackNSec=
+#DefaultEnvironment=
+#DefaultLimitCPU=
+#DefaultLimitFSIZE=
+#DefaultLimitDATA=
+#DefaultLimitSTACK=
+#DefaultLimitCORE=
+#DefaultLimitRSS=
+#DefaultLimitNOFILE=
+#DefaultLimitAS=
+#DefaultLimitNPROC=
+#DefaultLimitMEMLOCK=
+#DefaultLimitLOCKS=
+#DefaultLimitSIGPENDING=
+#DefaultLimitMSGQUEUE=
+#DefaultLimitNICE=
+#DefaultLimitRTPRIO=
+#DefaultLimitRTTIME=
diff --git a/meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch b/meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch
new file mode 100644
index 0000000..aaf1121
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch
@@ -0,0 +1,9 @@
+diff --git a/units/systemd-reboot.service.in b/units/systemd-reboot.service.in
+index d99bd3e..4517cfe 100644
+--- a/units/systemd-reboot.service.in
++++ b/units/systemd-reboot.service.in
+@@ -15,3 +15,4 @@ After=shutdown.target umount.target final.target
+ [Service]
+ Type=oneshot
+ ExecStart=@SYSTEMCTL@ --force reboot
++ExecStartPre=/bin/sh -c " if test -e /run/systemd/reboot-param ; then read REBOOTPARAM < /run/systemd/reboot-param ; fw_setenv bootargs_mode $REBOOTPARAM ; fi "
diff --git a/meta-edison-distro/recipes-core/systemd/files/timesyncd.conf b/meta-edison-distro/recipes-core/systemd/files/timesyncd.conf
new file mode 100644
index 0000000..620ef45
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/timesyncd.conf
@@ -0,0 +1,12 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+#
+# See timesyncd.conf(5) for details
+
+[Time]
+Servers=time1.google.com time2.google.com time3.google.com time4.google.com
+
diff --git a/meta-edison-distro/recipes-core/systemd/files/usb0.network b/meta-edison-distro/recipes-core/systemd/files/usb0.network
new file mode 100644
index 0000000..b7d1042
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/files/usb0.network
@@ -0,0 +1,6 @@
+[Match]
+Name=usb0
+
+[Network]
+Address=192.168.2.15/24
+
diff --git a/meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb b/meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb
new file mode 100644
index 0000000..6419bc2
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Enhances systemd compatilibity with existing SysVinit scripts"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PR = "r29"
+
+DEPENDS = "systemd-systemctl-native"
+
+inherit allarch
+
+ALLOW_EMPTY_${PN} = "1"
+
+SYSTEMD_DISABLED_SYSV_SERVICES = " \
+ busybox-udhcpc \
+ hwclock \
+ networking \
+ nfsserver \
+ nfscommon \
+ syslog.busybox \
+"
+
+pkg_postinst_${PN} () {
+ cd $D${sysconfdir}/init.d
+
+ echo "Disabling the following sysv scripts: "
+
+ OPTS=""
+
+ if [ -n "$D" ]; then
+ OPTS="--root=$D"
+ fi
+
+ for i in ${SYSTEMD_DISABLED_SYSV_SERVICES} ; do
+ if [ \( -e $i -o $i.sh \) -a ! \( -e $D${sysconfdir}/systemd/system/$i.service -o -e $D${systemd_unitdir}/system/$i.service \) ] ; then
+ echo -n "$i: " ; systemctl ${OPTS} mask $i.service
+ fi
+ done ; echo
+}
+
+RDPEPENDS_${PN} = "systemd"
diff --git a/meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb
new file mode 100644
index 0000000..1c34d5c
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Serial terminal support for systemd"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+PR = "r5"
+
+SERIAL_CONSOLE ?= "115200 ttyS0"
+
+SRC_URI = "file://serial-getty@.service"
+
+do_install() {
+ if [ ! -z "${SERIAL_CONSOLES}" ] ; then
+ default_baudrate=`echo "${SERIAL_CONSOLES}" | sed 's/\;.*//'`
+ install -d ${D}${systemd_unitdir}/system/
+ install -d ${D}${sysconfdir}/systemd/system/getty.target.wants/
+ install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/
+ sed -i -e s/\@BAUDRATE\@/$default_baudrate/g ${D}${systemd_unitdir}/system/serial-getty@.service
+
+ tmp="${SERIAL_CONSOLES}"
+ for entry in $tmp ; do
+ baudrate=`echo $entry | sed 's/\;.*//'`
+ ttydev=`echo $entry | sed -e 's/^[0-9]*\;//' -e 's/\;.*//'`
+ if [ "$baudrate" = "$default_baudrate" ] ; then
+ # enable the service
+ ln -sf ${systemd_unitdir}/system/serial-getty@.service \
+ ${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@$ttydev.service
+ else
+ # install custom service file for the non-default baudrate
+ install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service
+ sed -i -e s/\@BAUDRATE\@/$baudrate/g ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service
+ # enable the service
+ ln -sf ${systemd_unitdir}/system/serial-getty$baudrate@.service \
+ ${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty$baudrate@$ttydev.service
+ fi
+ done
+ fi
+}
+
+RDEPENDS_${PN} = "systemd"
+
+# This is a machine specific file
+FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
diff --git a/meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service
new file mode 100644
index 0000000..6dd335c
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service
@@ -0,0 +1,37 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Serial Getty on %I
+Documentation=man:agetty(8) man:systemd-getty-generator(8)
+Documentation=http://0pointer.de/blog/projects/serial-console.html
+BindsTo=dev-%i.device
+After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
+After=rc-local.service
+
+# If additional gettys are spawned during boot then we should make
+# sure that this is synchronized before getty.target, even though
+# getty.target didn't actually pull it in.
+Before=getty.target
+IgnoreOnIsolate=yes
+
+[Service]
+Environment="TERM=xterm"
+ExecStart=-/sbin/agetty -8 --keep-baud %I @BAUDRATE@ $TERM
+Type=idle
+Restart=always
+RestartSec=0
+UtmpIdentifier=%I
+TTYPath=/dev/%I
+TTYReset=yes
+TTYVHangup=yes
+KillMode=process
+IgnoreSIGPIPE=no
+SendSIGHUP=yes
+
+[Install]
+WantedBy=getty.target
diff --git a/meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb b/meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb
new file mode 100644
index 0000000..72bc77d
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Wrapper for enabling systemd services"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PR = "r6"
+
+inherit native
+
+SRC_URI = "file://systemctl"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/systemctl ${D}${bindir}
+}
diff --git a/meta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl b/meta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl
new file mode 100755
index 0000000..b37f27a
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl
@@ -0,0 +1,153 @@
+#!/bin/sh
+echo "Started $0 $*"
+
+ROOT=
+
+# parse command line params
+action=
+while [ $# != 0 ]; do
+ opt="$1"
+
+ case "$opt" in
+ enable)
+ shift
+
+ action="$opt"
+ services="$1"
+ cmd_args="1"
+ shift
+ ;;
+ disable)
+ shift
+
+ action="$opt"
+ services="$1"
+ cmd_args="1"
+ shift
+ ;;
+ mask)
+ shift
+
+ action="$opt"
+ services="$1"
+ cmd_args="1"
+ shift
+ ;;
+ preset)
+ shift
+
+ action="$opt"
+ services="$1"
+ cmd_args="1"
+ shift
+ ;;
+ --root=*)
+ ROOT=${opt##--root=}
+ cmd_args="0"
+ shift
+ ;;
+ *)
+ if [ "$cmd_args" = "1" ]; then
+ services="$services $opt"
+ shift
+ else
+ echo "'$opt' is an unkown option; exiting with error"
+ exit 1
+ fi
+ ;;
+ esac
+done
+if [ "$action" = "preset" -a "$service_file" = "" ]; then
+ services=$(for f in `find $ROOT/etc/systemd/system $ROOT/lib/systemd/system $ROOT/usr/lib/systemd/system -type f 2>1`; do basename $f; done)
+ services="$services $opt"
+ presetall=1
+fi
+
+for service in $services; do
+ if [ "$presetall" = "1" ]; then
+ action="preset"
+ fi
+ if [ "$action" = "mask" ]; then
+ if [ ! -d $ROOT/etc/systemd/system/ ]; then
+ mkdir -p $ROOT/etc/systemd/system/
+ fi
+ cmd="ln -s /dev/null $ROOT/etc/systemd/system/$service"
+ echo "$cmd"
+ $cmd
+ exit 0
+ fi
+
+ echo "Try to find location of $service..."
+ # find service file
+ for p in $ROOT/etc/systemd/system \
+ $ROOT/lib/systemd/system \
+ $ROOT/usr/lib/systemd/system; do
+ if [ -e $p/$service ]; then
+ service_file=$p/$service
+ service_file=${service_file##$ROOT}
+ fi
+ done
+ if [ -z "$service_file" ]; then
+ echo "'$service' couldn't be found; exiting with error"
+ exit 1
+ fi
+ echo "Found $service in $service_file"
+
+ # If any new unit types are added to systemd they should be added
+ # to this regular expression.
+ unit_types_re='\.\(service\|socket\|device\|mount\|automount\|swap\|target\|path\|timer\|snapshot\)$'
+ if [ "$action" = "preset" ]; then
+ action=`egrep -sh $service $ROOT/etc/systemd/user-preset/*.preset | cut -f1 -d' '`
+ if [ -z "$action" ]; then
+ globalpreset=`egrep -sh '\*' $ROOT/etc/systemd/user-preset/*.preset | cut -f1 -d' '`
+ if [ -n "$globalpreset" ]; then
+ action="$globalpreset"
+ else
+ action="enable"
+ fi
+ fi
+ fi
+ # create the required symbolic links
+ wanted_by=$(sed '/^WantedBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
+ | tr ',' '\n' \
+ | grep "$unit_types_re")
+
+ for r in $wanted_by; do
+ echo "WantedBy=$r found in $service"
+ if [ "$action" = "enable" ]; then
+ mkdir -p $ROOT/etc/systemd/system/$r.wants
+ ln -s $service_file $ROOT/etc/systemd/system/$r.wants
+ echo "Enabled $service for $wanted_by."
+ else
+ rm -f $ROOT/etc/systemd/system/$r.wants/$service
+ rmdir --ignore-fail-on-non-empty -p $ROOT/etc/systemd/system/$r.wants
+ echo "Disabled $service for $wanted_by."
+ fi
+ done
+
+ # create the required symbolic 'Alias' links
+ alias=$(sed '/^Alias[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
+ | tr ',' '\n' \
+ | grep "$unit_types_re")
+
+ for r in $alias; do
+ if [ "$action" = "enable" ]; then
+ mkdir -p $ROOT/etc/systemd/system
+ ln -s $service_file $ROOT/etc/systemd/system/$r
+ echo "Enabled $service for $alias."
+ else
+ rm -f $ROOT/etc/systemd/system/$r
+ echo "Disabled $service for $alias."
+ fi
+ done
+
+ # call us for the other required scripts
+ also=$(sed '/^Also[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
+ | tr ',' '\n')
+ for a in $also; do
+ echo "Also=$a found in $service"
+ if [ "$action" = "enable" ]; then
+ $0 --root=$ROOT enable $a
+ fi
+ done
+done
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf b/meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf
new file mode 100644
index 0000000..01ec03e
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf
@@ -0,0 +1,6 @@
+#This goes hand-in-hand with the base-files of OE-Core. The file must
+# be sorted before 'systemd.conf' becuase this attempts to create a file
+# inside /var/log.
+
+
+d /var/volatile/tmp - - - -
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch b/meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch
new file mode 100644
index 0000000..9fdb3c9
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Inappropriate [uclibc specific]
+
+From 7be9273548bcb1f57d011fc252965e45dd2a058c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 21 Aug 2013 19:09:27 -0700
+Subject: [PATCH] uClibc doesn't implement pwritev/preadv
+
+Lets stub out the testcase for building.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libsystemd-bus/test-bus-memfd.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: systemd-209/src/libsystemd/sd-bus/test-bus-memfd.c
+===================================================================
+--- systemd-209.orig/src/libsystemd/sd-bus/test-bus-memfd.c 2014-02-19 15:03:09.983254602 -0800
++++ systemd-209/src/libsystemd/sd-bus/test-bus-memfd.c 2014-02-19 23:42:10.636652864 -0800
+@@ -151,6 +151,7 @@
+ /* check content */
+ assert_se(memcmp(buf, "ll", 2) == 0);
+
++#ifndef __UCLIBC__
+ /* writev it out*/
+ iov[0].iov_base = (char *)"ABC";
+ iov[0].iov_len = 3;
+@@ -173,6 +174,7 @@
+ assert_se(memcmp(bufv[0], "ABC", 3) == 0);
+ assert_se(memcmp(bufv[1], "DEF", 3) == 0);
+ assert_se(memcmp(bufv[2], "GHI", 3) == 0);
++#endif /* __UCLIBC__ */
+
+ sd_memfd_free(m);
+
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch b/meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch
new file mode 100644
index 0000000..c2d5099
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch
@@ -0,0 +1,56 @@
+Don't install dependency links at install time for the binfmt services, use
+[Install] blocks so that they get created when the service is enabled like a
+traditional service.
+
+The [Install] blocks were rejected upstream as they don't have a way to "enable"
+it on install without static symlinks which can't be disabled, only masked. We
+however can do that in a postinst.
+
+Upstream-Status: Denied
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/Makefile.am b/Makefile.am
+index 7933de6..78acb6f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3133,10 +3133,6 @@ INSTALL_DIRS += \
+ $(prefix)/lib/binfmt.d \
+ $(sysconfdir)/binfmt.d
+
+-SYSINIT_TARGET_WANTS += \
+- systemd-binfmt.service \
+- proc-sys-fs-binfmt_misc.automount
+-
+ endif
+
+ EXTRA_DIST += \
+diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
+index 6be3893..709adef 100644
+--- a/units/proc-sys-fs-binfmt_misc.automount
++++ b/units/proc-sys-fs-binfmt_misc.automount
+@@ -16,3 +16,6 @@ ConditionPathIsReadWrite=/proc/sys/
+
+ [Automount]
+ Where=/proc/sys/fs/binfmt_misc
++
++[Install]
++WantedBy=sysinit.target
+diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
+index 02dfe77..86d3481 100644
+--- a/units/systemd-binfmt.service.in
++++ b/units/systemd-binfmt.service.in
+@@ -11,6 +11,7 @@ Documentation=man:systemd-binfmt.service(8) man:binfmt.d(5)
+ Documentation=https://www.kernel.org/doc/Documentation/binfmt_misc.txt
+ DefaultDependencies=no
+ Conflicts=shutdown.target
++Wants=proc-sys-fs-binfmt_misc.automount
+ After=systemd-readahead-collect.service systemd-readahead-replay.service proc-sys-fs-binfmt_misc.automount
+ Before=sysinit.target shutdown.target
+ ConditionPathIsReadWrite=/proc/sys/
+@@ -24,3 +25,6 @@ ConditionDirectoryNotEmpty=|/run/binfmt.d
+ Type=oneshot
+ RemainAfterExit=yes
+ ExecStart=@rootlibexecdir@/systemd-binfmt
++
++[Install]
++WantedBy=sysinit.target
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/init b/meta-edison-distro/recipes-core/systemd/systemd/init
new file mode 100644
index 0000000..ea52be4
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/init
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: udev
+# Required-Start: mountvirtfs
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+. /etc/init.d/functions
+
+export TZ=/etc/localtime
+
+[ -d /sys/class ] || exit 1
+[ -r /proc/mounts ] || exit 1
+[ -x @UDEVD@ ] || exit 1
+[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
+[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+
+readfile () {
+ filename=$1
+ READDATA=""
+ if [ -r $filename ]; then
+ while read line; do
+ READDATA="$READDATA$line"
+ done < $filename
+ fi
+}
+
+case "$1" in
+ start)
+ export ACTION=add
+ # propagate /dev from /sys
+ echo "Starting udev"
+
+ # mount the devtmpfs on /dev, if not already done
+ LANG=C awk '$2 == "/dev" && ($3 == "devtmpfs") { exit 1 }' /proc/mounts && {
+ mount -n -o mode=0755 -t devtmpfs none "/dev"
+ }
+ [ -e /dev/pts ] || mkdir -m 0755 /dev/pts
+ [ -e /dev/shm ] || mkdir -m 1777 /dev/shm
+ mount -a -t tmpfs 2>/dev/null
+
+ # cache handling
+ if [ "$DEVCACHE" != "" ]; then
+ readfile /proc/version
+ VERSION="$READDATA"
+ readfile /proc/cmdline
+ CMDLINE="$READDATA"
+ readfile /proc/devices
+ DEVICES="$READDATA"
+ readfile /proc/atags
+ ATAGS="$READDATA"
+
+ if [ -e $DEVCACHE ]; then
+ readfile /etc/udev/cache.data
+ if [ "$READDATA" = "$VERSION$CMDLINE$DEVICES$ATAGS" ]; then
+ (cd /; tar xf $DEVCACHE > /dev/null 2>&1)
+ not_first_boot=1
+ [ "$VERBOSE" != "no" ] && echo "udev: using cache file $DEVCACHE"
+ [ -e /dev/shm/udev.cache ] && rm -f /dev/shm/udev.cache
+ else
+ echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache
+ fi
+ else
+ echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache
+ fi
+ fi
+
+ # make_extra_nodes
+ killproc systemd-udevd > "/dev/null" 2>&1
+
+ # trigger the sorted events
+ echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
+ @UDEVD@ -d
+
+ udevadm control --env=STARTUP=1
+ if [ "$not_first_boot" != "" ];then
+ udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform
+ (udevadm settle --timeout=3; udevadm control --env=STARTUP=)&
+ else
+ udevadm trigger --action=add
+ udevadm settle
+ fi
+ ;;
+ stop)
+ echo "Stopping udevd"
+ start-stop-daemon --stop --name systemd-udevd --quiet
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ status systemd-udevd
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|status|restart}"
+ exit 1
+esac
+exit 0
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch b/meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch
new file mode 100644
index 0000000..2063268
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch
@@ -0,0 +1,19 @@
+on uclibc secure_getenv is not available
+therefore default to using getenv instead
+
+Upstream-Status: Denied [no desire for uclibc support]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: git/src/shared/missing.h
+===================================================================
+--- git.orig/src/shared/missing.h 2012-09-22 18:46:44.141282145 -0700
++++ git/src/shared/missing.h 2012-09-22 18:48:44.081276570 -0700
+@@ -233,6 +233,8 @@
+ #ifndef HAVE_SECURE_GETENV
+ # ifdef HAVE___SECURE_GETENV
+ # define secure_getenv __secure_getenv
++# elif defined __UCLIBC__
++# define secure_getenv getenv
+ # else
+ # error neither secure_getenv nor __secure_getenv are available
+ # endif
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/run-ptest b/meta-edison-distro/recipes-core/systemd/systemd/run-ptest
new file mode 100644
index 0000000..2f6bd93
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/run-ptest
@@ -0,0 +1,3 @@
+tar -C test -xJf test/sys.tar.xz
+make test/rules-test.sh.log
+make test/udev-test.pl.log
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch
new file mode 100644
index 0000000..18b50e7
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch
@@ -0,0 +1,56 @@
+From 6109f02dcc4f2d7a461c5772bab494f5753a2203 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 29 May 2014 08:09:07 +0000
+Subject: [PATCH] rtnl-types.c: check IFLA_VLAN_PROTOCOL
+
+The older kernel's linux/if_link.h doesn't have IFLA_VLAN_PROTOCOL, we need
+check whether it has been defined or not.
+
+The maintainer said that he would fix it:
+
+http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/18200
+
+Also we need redefine IFLA_MAX from 34 to 35 when define IFLA_CARRIER,
+otherwise there would be error:
+
+| src/libsystemd/sd-rtnl/rtnl-types.c:233:9: error: array index in initializer exceeds array bounds
+| [IFLA_CARRIER] = { .type = NLA_U8 },
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ src/libsystemd/sd-rtnl/rtnl-types.c | 2 ++
+ src/shared/missing.h | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/src/libsystemd/sd-rtnl/rtnl-types.c b/src/libsystemd/sd-rtnl/rtnl-types.c
+index 44ac5ec..ab6161f 100644
+--- a/src/libsystemd/sd-rtnl/rtnl-types.c
++++ b/src/libsystemd/sd-rtnl/rtnl-types.c
+@@ -67,7 +67,9 @@ static const NLType rtnl_link_info_data_vlan_types[IFLA_VLAN_MAX + 1] = {
+ [IFLA_VLAN_EGRESS_QOS] = { .type = NLA_NESTED },
+ [IFLA_VLAN_INGRESS_QOS] = { .type = NLA_NESTED },
+ */
++#ifdef IFLA_VLAN_PROTOCOL
+ [IFLA_VLAN_PROTOCOL] = { .type = NLA_U16 },
++#endif
+ };
+
+ static const NLType rtnl_link_info_data_bond_types[IFLA_BOND_MAX + 1] = {
+diff --git a/src/shared/missing.h b/src/shared/missing.h
+index d5ec2f8..732853f 100644
+--- a/src/shared/missing.h
++++ b/src/shared/missing.h
+@@ -94,6 +94,8 @@
+
+ #ifndef IFLA_CARRIER
+ #define IFLA_CARRIER 33
++ #undef IFLA_MAX
++ #define IFLA_MAX 35
+ #ifndef IFLA_NUM_RX_QUEUES
+ #define IFLA_NUM_RX_QUEUES 32
+ #ifndef IFLA_NUM_TX_QUEUES
+--
+1.8.3.4
+
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch
new file mode 100644
index 0000000..4639532
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch
@@ -0,0 +1,32 @@
+Upstream-Status: Denied [no desire for uclibc support]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac 2014-03-15 17:53:51.756340454 -0700
++++ git/configure.ac 2014-03-15 18:07:34.888355897 -0700
+@@ -78,6 +78,24 @@
+
+ M4_DEFINES=
+
++# check for few functions not implemented in uClibc
++
++AC_CHECK_FUNCS_ONCE(mkostemp execvpe posix_fallocate)
++
++# check for %ms format support - assume always no if cross compiling
++
++AC_MSG_CHECKING([whether %ms format is supported by *scanf])
++
++AC_LINK_IFELSE(
++ [AC_LANG_PROGRAM([
++ #include <stdio.h>
++ ],[
++ char *buf1, *buf2, *buf3, str="1 2.3 abcde" ;
++ int rc = sscanf(str, "%ms %ms %ms", &buf1, &buf2, &buf3) ;
++ return (rc==3)?0:1;])],
++ [AC_DEFINE([HAVE_MSFORMAT], [1], [Define if %ms format is supported by *scanf.])],
++ [AC_MSG_RESULT([no])])
++
+ # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
+ m4_ifdef([GTK_DOC_CHECK], [
+ GTK_DOC_CHECK([1.18],[--flavour no-tmpl])],
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch
new file mode 100644
index 0000000..7170a38
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch
@@ -0,0 +1,29 @@
+Upstream-Status: Denied [no desire for uclibc support]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: systemd-209/src/nspawn/nspawn.c
+===================================================================
+--- systemd-209.orig/src/nspawn/nspawn.c 2014-02-19 15:03:09.000000000 -0800
++++ systemd-209/src/nspawn/nspawn.c 2014-02-19 23:20:38.720628627 -0800
+@@ -91,6 +91,8 @@
+ LINK_GUEST
+ } LinkJournal;
+
++#include "config.h"
++
+ static char *arg_directory = NULL;
+ static char *arg_user = NULL;
+ static sd_id128_t arg_uuid = {};
+@@ -2045,7 +2047,12 @@
+ a[0] = (char*) "/sbin/init";
+ execve(a[0], a, env_use);
+ } else if (argc > optind)
++#ifdef HAVE_EXECVPE
+ execvpe(argv[optind], argv + optind, env_use);
++#else
++ environ = env_use;
++ execvp(argv[optind], argv + optind);
++#endif /* HAVE_EXECVPE */
+ else {
+ chdir(home ? home : "/root");
+ execle("/bin/bash", "-bash", NULL, env_use);
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch
new file mode 100644
index 0000000..f8e19ce
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch
@@ -0,0 +1,92 @@
+Upstream-Status: Denied [no desire for uclibc support]
+
+This patch is uclibc specific, thus not suitable for upstream.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/journal/journal-file.c | 16 +++++++++++++++-
+ src/journal/journald-kmsg.c | 16 ++++++++++++++--
+ 2 files changed, 29 insertions(+), 3 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index f2f1f35..092f87b 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -38,6 +38,8 @@
+ #include "compress.h"
+ #include "fsprg.h"
+
++#include "config.h"
++
+ #define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*sizeof(HashItem))
+ #define DEFAULT_FIELD_HASH_TABLE_SIZE (333ULL*sizeof(HashItem))
+
+@@ -314,7 +316,7 @@ static int journal_file_verify_header(JournalFile *f) {
+
+ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
+ uint64_t old_size, new_size;
+- int r;
++ int r = 0;
+
+ assert(f);
+
+@@ -362,9 +364,21 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
+ /* Note that the glibc fallocate() fallback is very
+ inefficient, hence we try to minimize the allocation area
+ as we can. */
++#ifdef HAVE_POSIX_FALLOCATE
+ r = posix_fallocate(f->fd, old_size, new_size - old_size);
+ if (r != 0)
+ return -r;
++#else
++ /* Write something every 512 bytes to make sure the block is allocated */
++ uint64_t len = new_size - old_size;
++ uint64_t offset = old_size;
++ for (offset += (len-1) % 512; len > 0; offset += 512) {
++ len -= 512;
++ if (pwrite(f->fd, "", 1, offset) != 1)
++ return -errno;
++ }
++
++#endif /* HAVE_POSIX_FALLOCATE */
+
+ if (fstat(f->fd, &f->last_stat) < 0)
+ return -errno;
+diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
+index 12992e7..dc4fa93 100644
+--- a/src/journal/journald-kmsg.c
++++ b/src/journal/journald-kmsg.c
+@@ -437,6 +437,7 @@ fail:
+ int server_open_kernel_seqnum(Server *s) {
+ _cleanup_close_ int fd;
+ uint64_t *p;
++ int r = 0;
+
+ assert(s);
+
+@@ -449,8 +450,19 @@ int server_open_kernel_seqnum(Server *s) {
+ log_error("Failed to open /run/systemd/journal/kernel-seqnum, ignoring: %m");
+ return 0;
+ }
+-
+- if (posix_fallocate(fd, 0, sizeof(uint64_t)) < 0) {
++#ifdef HAVE_POSIX_FALLOCATE
++ r = posix_fallocate(fd, 0, sizeof(uint64_t));
++#else
++ /* Use good old method to write zeros into the journal file
++ perhaps very inefficient yet working. */
++ char *buf = alloca(sizeof(uint64_t));
++ off_t oldpos = lseek(fd, 0, SEEK_CUR);
++ bzero(buf, sizeof(uint64_t));
++ lseek(fd, 0, SEEK_SET);
++ r = write(fd, buf, sizeof(uint64_t));
++ lseek(fd, oldpos, SEEK_SET);
++#endif /* HAVE_POSIX_FALLOCATE */
++ if (r < 0) {
+ log_error("Failed to allocate sequential number file, ignoring: %m");
+ return 0;
+ }
+--
+1.7.9.5
+
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch
new file mode 100644
index 0000000..9b4c940
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch
@@ -0,0 +1,35 @@
+Prefer getty to agetty in console setup systemd units
+
+Upstream-Status: Inappropriate [configuration specific]
+Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
+---
+ units/getty@.service.m4 | 2 +-
+ units/serial-getty@.service.m4 | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: git/units/getty@.service.m4
+===================================================================
+--- git.orig/units/getty@.service.m4 2014-03-15 08:16:17.000000000 -0700
++++ git/units/getty@.service.m4 2014-03-15 08:21:11.007695825 -0700
+@@ -27,7 +27,7 @@
+
+ [Service]
+ # the VT is cleared by TTYVTDisallocate
+-ExecStart=-/sbin/agetty --noclear %I $TERM
++ExecStart=-/sbin/getty -L %I $TERM
+ Type=idle
+ Restart=always
+ RestartSec=0
+Index: git/units/serial-getty@.service.m4
+===================================================================
+--- git.orig/units/serial-getty@.service.m4 2014-03-15 08:16:17.000000000 -0700
++++ git/units/serial-getty@.service.m4 2014-03-15 08:22:31.291697331 -0700
+@@ -22,7 +22,7 @@
+ IgnoreOnIsolate=yes
+
+ [Service]
+-ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM
++ExecStart=-/sbin/getty -L 115200 %I $TERM
+ Type=idle
+ Restart=always
+ RestartSec=0
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch
new file mode 100644
index 0000000..8c7aa07
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Denied [no desire for uclibc support]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: git/src/shared/util.c
+===================================================================
+--- git.orig/src/shared/util.c 2014-03-15 15:14:21.368160908 -0700
++++ git/src/shared/util.c 2014-03-15 15:44:21.988194688 -0700
+@@ -85,6 +85,8 @@
+ #include "def.h"
+ #include "missing.h"
+
++#include "config.h"
++
+ int saved_argc = 0;
+ char **saved_argv = NULL;
+
+@@ -6222,7 +6224,13 @@
+
+ u = umask(077);
+
++#ifdef HAVE_MKOSTEMP
+ fd = mkostemp(pattern, flags);
++#else
++ fd = mkstemp(pattern);
++ if (fd >= 0) fcntl(fd, F_SETFD, flags);
++#endif /* HAVE_MKOSTEMP */
++
+ if (fd < 0)
+ return -errno;
+
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules b/meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules
new file mode 100644
index 0000000..d83fd16
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules
@@ -0,0 +1,18 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Create a symlink to any touchscreen input device
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/touchscreen0"
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch
new file mode 100644
index 0000000..39dfc9e
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch
@@ -0,0 +1,37 @@
+bypass unimplemented _SC_PHYS_PAGES system configuration API in uclibc
+
+Upstream-Status: Inappropriate [uclibc-specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: git/src/shared/util.c
+===================================================================
+--- git.orig/src/shared/util.c 2014-03-15 18:09:34.796358146 -0700
++++ git/src/shared/util.c 2014-03-15 20:16:33.836501084 -0700
+@@ -6332,11 +6332,24 @@
+
+ /* We return this as uint64_t in case we are running as 32bit
+ * process on a 64bit kernel with huge amounts of memory */
+-
++#ifdef __UCLIBC__
++ char line[128];
++ FILE *f = fopen("/proc/meminfo", "r");
++ if (f == NULL)
++ return 0;
++ while (!feof(f) && fgets(line, sizeof(line)-1, f)) {
++ if (sscanf(line, "MemTotal: %l kB", &mem) == 1) {
++ mem *= 1024;
++ break;
++ }
++ }
++ fclose(f);
++ return (uint64_t) mem;
++#else
+ mem = sysconf(_SC_PHYS_PAGES);
+ assert(mem > 0);
+-
+ return (uint64_t) mem * (uint64_t) page_size();
++#endif
+ }
+
+ char* mount_test_option(const char *haystack, const char *needle) {
diff --git a/meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch
new file mode 100644
index 0000000..15645de
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch
@@ -0,0 +1,19 @@
+Dont include sys/sysinfo.h on uclibc it conflicts with linux/sysinfo.h
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Inappropriate [uclibc specific]
+
+Index: systemd-209/src/readahead/readahead-common.c
+===================================================================
+--- systemd-209.orig/src/readahead/readahead-common.c 2014-02-12 18:42:33.810685053 -0800
++++ systemd-209/src/readahead/readahead-common.c 2014-02-19 23:49:31.856661142 -0800
+@@ -22,7 +22,9 @@
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <string.h>
++#ifndef __UCLIBC__
+ #include <sys/sysinfo.h>
++#endif
+ #include <sys/inotify.h>
+ #include <fcntl.h>
+ #include <sys/mman.h>
diff --git a/meta-edison-distro/recipes-core/systemd/systemd_%.bbappend b/meta-edison-distro/recipes-core/systemd/systemd_%.bbappend
new file mode 100644
index 0000000..07b6cb2
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd_%.bbappend
@@ -0,0 +1,34 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI += "file://journald.conf \
+ file://timesyncd.conf \
+ file://system.conf \
+ file://systemd-reboot-service.patch \
+ file://hsu-pm-runtime.service \
+ file://usb0.network \
+ file://edison-machine-id.service"
+
+do_install_append() {
+ # Push the custom conf files on target
+ install -m 0644 ${WORKDIR}/journald.conf ${D}${sysconfdir}/systemd
+ install -m 0644 ${WORKDIR}/system.conf ${D}${sysconfdir}/systemd
+ install -m 0644 ${WORKDIR}/timesyncd.conf ${D}${sysconfdir}/systemd
+ install -m 0644 ${WORKDIR}/usb0.network ${D}${sysconfdir}/systemd/network
+
+ # enable timesyncd service
+ install -d ${D}${sysconfdir}/systemd/system/sysinit.target.wants
+ ln -sf ${systemd_unitdir}/system/systemd-timesyncd.service \
+ ${D}${sysconfdir}/systemd/system/sysinit.target.wants/systemd-timesyncd.service
+
+ # enable a custom service to enable the hsu driver's runtime pm
+ install -d ${D}${sysconfdir}/systemd/system/default.target.wants
+ install -m 0644 ${WORKDIR}/hsu-pm-runtime.service \
+ ${D}${systemd_unitdir}/system/hsu-pm-runtime.service
+
+ # enable a custom service to provide a persistant machine-id value to Edison
+ install -d ${D}${sysconfdir}/systemd/system/basic.target.wants
+ install -m 0644 ${WORKDIR}/edison-machine-id.service \
+ ${D}${systemd_unitdir}/system/edison-machine-id.service
+ ln -sf ${systemd_unitdir}/system/edison-machine-id.service \
+ ${D}${sysconfdir}/systemd/system/basic.target.wants/edison-machine-id.service
+
+}
diff --git a/meta-edison-distro/recipes-core/systemd/systemd_213.bb b/meta-edison-distro/recipes-core/systemd/systemd_213.bb
new file mode 100644
index 0000000..003b33e
--- /dev/null
+++ b/meta-edison-distro/recipes-core/systemd/systemd_213.bb
@@ -0,0 +1,351 @@
+SUMMARY = "System and service manager for Linux, replacing SysVinit"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd"
+
+LICENSE = "GPLv2 & LGPLv2.1 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
+ file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \
+ file://LICENSE.MIT;md5=544799d0b492f119fa04641d1b8868ed"
+
+PROVIDES = "udev"
+
+PE = "1"
+
+DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline dbus libcap libcgroup glib-2.0 qemu-native util-linux"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SECTION = "base/shell"
+
+inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest
+
+SRCREV = "c9679c652b3c31f2510e8805d81630680ebc7e95"
+
+PV = "213+git${SRCPV}"
+
+SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=git \
+ file://binfmt-install.patch \
+ file://systemd-pam-configure-check-uclibc.patch \
+ file://systemd-pam-fix-execvpe.patch \
+ file://systemd-pam-fix-fallocate.patch \
+ file://systemd-pam-fix-mkostemp.patch \
+ file://optional_secure_getenv.patch \
+ file://0001-uClibc-doesn-t-implement-pwritev-preadv.patch \
+ file://uclibc-sysinfo_h.patch \
+ file://uclibc-get-physmem.patch \
+ file://touchscreen.rules \
+ file://00-create-volatile.conf \
+ file://init \
+ file://run-ptest \
+ file://systemd-older-kernel.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+SRC_URI_append_libc-uclibc = "\
+ file://systemd-pam-fix-getty-unit.patch \
+ "
+LDFLAGS_append_libc-uclibc = " -lrt"
+
+GTKDOC_DOCDIR = "${S}/docs/"
+
+PACKAGECONFIG ??= "xz"
+# Sign the journal for anti-tampering
+PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt"
+# regardless of PACKAGECONFIG, libgcrypt is always required to expand
+# the AM_PATH_LIBGCRYPT autoconf macro
+DEPENDS += "libgcrypt"
+# Compress the journal
+PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz"
+PACKAGECONFIG[cryptsetup] = "--enable-libcryptsetup,--disable-libcryptsetup,cryptsetup"
+PACKAGECONFIG[microhttpd] = "--enable-microhttpd,--disable-microhttpd,libmicrohttpd"
+
+CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill"
+
+# Helper variables to clarify locations. This mirrors the logic in systemd's
+# build system.
+rootprefix ?= "${base_prefix}"
+rootlibdir ?= "${base_libdir}"
+rootlibexecdir = "${rootprefix}/lib"
+
+# The gtk+ tools should get built as a separate recipe e.g. systemd-tools
+EXTRA_OECONF = " --with-rootprefix=${rootprefix} \
+ --with-rootlibdir=${rootlibdir} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)} \
+ --disable-manpages \
+ --disable-coredump \
+ --disable-introspection \
+ --disable-kdbus \
+ --enable-split-usr \
+ --without-python \
+ --with-sysvrcnd-path=${sysconfdir} \
+ --with-firmware-path=/lib/firmware \
+ ac_cv_path_KILL=${base_bindir}/kill \
+ "
+# uclibc does not have NSS
+EXTRA_OECONF_append_libc-uclibc = " --disable-myhostname "
+
+do_configure_prepend() {
+ export CPP="${HOST_PREFIX}cpp ${TOOLCHAIN_OPTIONS} ${HOST_CC_ARCH}"
+ export NM="${HOST_PREFIX}gcc-nm"
+ export AR="${HOST_PREFIX}gcc-ar"
+ export RANLIB="${HOST_PREFIX}gcc-ranlib"
+ export KMOD="${base_bindir}/kmod"
+ if [ -d ${S}/units.pre_sed ] ; then
+ cp -r ${S}/units.pre_sed ${S}/units
+ else
+ cp -r ${S}/units ${S}/units.pre_sed
+ fi
+ sed -i -e 's:=/root:=${ROOT_HOME}:g' ${S}/units/*.service*
+ sed -i '/ln --relative --help/d' ${S}/configure.ac
+ sed -i -e 's:\$(LN_S) --relative -f:lnr:g' ${S}/Makefile.am
+ sed -i -e 's:\$(LN_S) --relative:lnr:g' ${S}/Makefile.am
+}
+
+do_install() {
+ autotools_do_install
+ install -d ${D}/${base_sbindir}
+ # Provided by a separate recipe
+ rm ${D}${systemd_unitdir}/system/serial-getty* -f
+
+ # Provide support for initramfs
+ [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
+ [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
+
+ # Create machine-id
+ # 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable
+ touch ${D}${sysconfdir}/machine-id
+
+ install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
+
+ install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
+ sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
+ fi
+
+ # Delete journal README, as log can be symlinked inside volatile.
+ rm -f ${D}/${localstatedir}/log/README
+}
+
+do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/test
+ cp -rf ${S}/test/* ${D}${PTEST_PATH}/test
+ install -m 0755 ${B}/test-udev ${D}${PTEST_PATH}/
+ install -d ${D}${PTEST_PATH}/build-aux
+ cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+ cp -rf ${B}/rules ${D}${PTEST_PATH}/
+ # This directory needs to be there for udev-test.pl to work.
+ install -d ${D}${libdir}/udev/rules.d
+ cp ${B}/Makefile ${D}${PTEST_PATH}/
+ cp ${S}/test/sys.tar.xz ${D}${PTEST_PATH}/test
+ sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/test/udev-test.pl
+ sed -i 's#${S}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile
+ sed -i 's#${B}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile
+}
+
+python populate_packages_prepend (){
+ systemdlibdir = d.getVar("rootlibdir", True)
+ do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
+}
+PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*"
+
+PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze ${PN}-kernel-install \
+ ${PN}-rpm-macros ${PN}-binfmt ${PN}-pam ${PN}-zsh"
+
+SYSTEMD_PACKAGES = "${PN}-binfmt"
+SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} += "--system systemd-journal-gateway;--system systemd-timesync"
+GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal"
+
+FILES_${PN}-analyze = "${bindir}/systemd-analyze"
+
+FILES_${PN}-initramfs = "/init"
+RDEPENDS_${PN}-initramfs = "${PN}"
+
+# The test cases need perl and bash to run correctly.
+RDEPENDS_${PN}-ptest += "perl bash"
+FILES_${PN}-ptest += "${libdir}/udev/rules.d"
+
+FILES_${PN}-dbg += "${libdir}/systemd/ptest/.debug"
+
+FILES_${PN}-gui = "${bindir}/systemadm"
+
+FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
+ ${systemd_unitdir}/system/systemd-vconsole-setup.service \
+ ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service"
+
+FILES_${PN}-kernel-install = "${bindir}/kernel-install \
+ ${sysconfdir}/kernel/ \
+ ${exec_prefix}/lib/kernel \
+ "
+FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
+ "
+
+FILES_${PN}-zsh = "${datadir}/zsh/site-functions"
+
+FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
+ ${exec_prefix}/lib/binfmt.d \
+ ${rootlibexecdir}/systemd/systemd-binfmt \
+ ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \
+ ${systemd_unitdir}/system/systemd-binfmt.service"
+RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc"
+
+RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts"
+
+CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \
+ ${sysconfdir}/systemd/logind.conf \
+ ${sysconfdir}/systemd/system.conf \
+ ${sysconfdir}/systemd/user.conf"
+
+FILES_${PN} = " ${base_bindir}/* \
+ ${datadir}/bash-completion \
+ ${datadir}/dbus-1/services \
+ ${datadir}/dbus-1/system-services \
+ ${datadir}/polkit-1 \
+ ${datadir}/${BPN} \
+ ${sysconfdir}/bash_completion.d/ \
+ ${sysconfdir}/dbus-1/ \
+ ${sysconfdir}/machine-id \
+ ${sysconfdir}/modules-load.d/ \
+ ${sysconfdir}/sysctl.d/ \
+ ${sysconfdir}/systemd/ \
+ ${sysconfdir}/tmpfiles.d/ \
+ ${sysconfdir}/xdg/ \
+ ${sysconfdir}/init.d/README \
+ ${rootlibexecdir}/systemd/* \
+ ${systemd_unitdir}/* \
+ ${base_libdir}/security/*.so \
+ ${libdir}/libnss_myhostname.so.2 \
+ /cgroup \
+ ${bindir}/systemd* \
+ ${bindir}/busctl \
+ ${bindir}/localectl \
+ ${bindir}/hostnamectl \
+ ${bindir}/timedatectl \
+ ${bindir}/bootctl \
+ ${bindir}/kernel-install \
+ ${exec_prefix}/lib/tmpfiles.d/*.conf \
+ ${exec_prefix}/lib/systemd \
+ ${exec_prefix}/lib/modules-load.d \
+ ${exec_prefix}/lib/sysctl.d \
+ ${localstatedir} \
+ /lib/udev/rules.d/70-uaccess.rules \
+ /lib/udev/rules.d/71-seat.rules \
+ /lib/udev/rules.d/73-seat-late.rules \
+ /lib/udev/rules.d/99-systemd.rules \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${sysconfdir}/pam.d', '', d)} \
+ "
+
+FILES_${PN}-dbg += "${rootlibdir}/.debug ${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/"
+FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
+
+RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})"
+
+RRECOMMENDS_${PN} += "systemd-serialgetty systemd-compat-units \
+ util-linux-agetty \
+ util-linux-fsck e2fsprogs-e2fsck \
+ kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
+"
+
+PACKAGES =+ "udev-dbg udev udev-hwdb"
+
+FILES_udev-dbg += "/lib/udev/.debug"
+
+RPROVIDES_udev = "hotplug"
+RRECOMMENDS_udev += "udev-hwdb"
+
+FILES_udev += "${base_sbindir}/udevd \
+ ${rootlibexecdir}/systemd/systemd-udevd \
+ ${rootlibexecdir}/udev/accelerometer \
+ ${rootlibexecdir}/udev/ata_id \
+ ${rootlibexecdir}/udev/cdrom_id \
+ ${rootlibexecdir}/udev/collect \
+ ${rootlibexecdir}/udev/findkeyboards \
+ ${rootlibexecdir}/udev/keyboard-force-release.sh \
+ ${rootlibexecdir}/udev/keymap \
+ ${rootlibexecdir}/udev/mtd_probe \
+ ${rootlibexecdir}/udev/scsi_id \
+ ${rootlibexecdir}/udev/v4l_id \
+ ${rootlibexecdir}/udev/keymaps \
+ ${rootlibexecdir}/udev/rules.d/4*.rules \
+ ${rootlibexecdir}/udev/rules.d/5*.rules \
+ ${rootlibexecdir}/udev/rules.d/6*.rules \
+ ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
+ ${rootlibexecdir}/udev/rules.d/75*.rules \
+ ${rootlibexecdir}/udev/rules.d/78*.rules \
+ ${rootlibexecdir}/udev/rules.d/8*.rules \
+ ${rootlibexecdir}/udev/rules.d/95*.rules \
+ ${sysconfdir}/udev \
+ ${sysconfdir}/init.d/systemd-udevd \
+ ${systemd_unitdir}/system/*udev* \
+ ${systemd_unitdir}/system/*.wants/*udev* \
+ ${base_bindir}/udevadm \
+ ${datadir}/bash-completion/completions/udevadm \
+ "
+
+FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d"
+
+INITSCRIPT_PACKAGES = "udev"
+INITSCRIPT_NAME_udev = "systemd-udevd"
+INITSCRIPT_PARAMS_udev = "start 03 S ."
+
+python __anonymous() {
+ if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+ d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+}
+
+# TODO:
+# u-a for runlevel and telinit
+
+ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel"
+
+ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd"
+ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
+ALTERNATIVE_PRIORITY[init] ?= "300"
+
+ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
+ALTERNATIVE_PRIORITY[halt] ?= "300"
+
+ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
+ALTERNATIVE_PRIORITY[reboot] ?= "300"
+
+ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
+ALTERNATIVE_PRIORITY[shutdown] ?= "300"
+
+ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
+ALTERNATIVE_PRIORITY[poweroff] ?= "300"
+
+ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
+ALTERNATIVE_PRIORITY[runlevel] ?= "300"
+
+pkg_postinst_udev-hwdb () {
+ if test -n "$D"; then
+ ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \
+ --root $D
+ else
+ udevadm hwdb --update
+ fi
+}
+
+pkg_prerm_udev-hwdb () {
+ if test -n "$D"; then
+ exit 1
+ fi
+
+ rm -f ${sysconfdir}/udev/hwdb.bin
+}
+
+# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
+# that we don't build both udev and systemd in world builds.
+python () {
+ if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
diff --git a/meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend b/meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend
new file mode 100644
index 0000000..01a6d33
--- /dev/null
+++ b/meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend
@@ -0,0 +1,11 @@
+# Add resize2fs tool
+
+
+EXTRA_OECONF += "\
+ --enable-resizer \
+"
+
+PACKAGES =+ "e2fsprogs-resize2fs"
+
+FILES_e2fsprogs-resize2fs = "${base_sbindir}/resize2fs"
+
diff --git a/meta-edison-distro/recipes-devtools/swig/swig.inc b/meta-edison-distro/recipes-devtools/swig/swig.inc
new file mode 100644
index 0000000..5571a55
--- /dev/null
+++ b/meta-edison-distro/recipes-devtools/swig/swig.inc
@@ -0,0 +1,63 @@
+DESCRIPTION = "SWIG - Simplified Wrapper and Interface Generator"
+HOMEPAGE = "http://swig.sourceforge.net/"
+LICENSE = "BSD & GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \
+ file://LICENSE-GPL;md5=d32239bcb673463ab874e80d47fae504 \
+ file://LICENSE-UNIVERSITIES;md5=8ce9dcc8f7c994de4a408b205c72ba08"
+
+SECTION = "devel"
+
+DEPENDS = "libpcre python"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
+
+inherit autotools pythonnative
+
+EXTRA_OECONF = " \
+ --with-python=${PYTHON} \
+ --without-allegrocl \
+ --without-android \
+ --without-boost \
+ --without-chicken \
+ --without-clisp \
+ --without-csharp \
+ --without-d \
+ --without-gcj \
+ --without-go \
+ --without-guile \
+ --without-java \
+ --without-lua \
+ --without-mzscheme \
+ --without-ocaml \
+ --without-octave \
+ --without-perl5 \
+ --without-pike \
+ --without-php \
+ --without-python3 \
+ --without-r \
+ --without-ruby \
+ --without-tcl \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_configure() {
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/Tools/config
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/Tools/config
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
+ oe_runconf
+}
+
+do_install_append_class-nativesdk() {
+ cd ${D}${bindir}
+ ln -s swig swig2.0
+}
+
+def swiglib_relpath(d):
+ swiglib = d.getVar('datadir', True) + "/" + d.getVar('BPN', True) + "/" + d.getVar('PV', True)
+ return os.path.relpath(swiglib, d.getVar('bindir', True))
+
+do_install_append_class-native() {
+ create_wrapper ${D}${bindir}/swig SWIG_LIB='`dirname $''realpath`'/${@swiglib_relpath(d)}
+} \ No newline at end of file
diff --git a/meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch b/meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
new file mode 100644
index 0000000..4115469
--- /dev/null
+++ b/meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
@@ -0,0 +1,56 @@
+---
+ Source/Modules/main.cxx | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx
+index d2f5d3b..cbb0a12 100644
+--- a/Source/Modules/main.cxx
++++ b/Source/Modules/main.cxx
+@@ -26,6 +26,11 @@ char cvsroot_main_cxx[] = "$Id$";
+ #include "cparse.h"
+ #include <ctype.h>
+ #include <limits.h> // for INT_MAX
++#ifndef _WIN32
++#include <cstddef>
++#include <unistd.h> // for readlink
++#include <sys/stat.h> // for stat
++#endif
+
+ // Global variables
+
+@@ -902,9 +907,9 @@ int SWIG_main(int argc, char *argv[], Language *l) {
+
+ // Check for SWIG_LIB environment variable
+ if ((c = getenv("SWIG_LIB")) == (char *) 0) {
++ char *p;
+ #if defined(_WIN32)
+ char buf[MAX_PATH];
+- char *p;
+ if (!(GetModuleFileName(0, buf, MAX_PATH) == 0 || (p = strrchr(buf, '\\')) == 0)) {
+ *(p + 1) = '\0';
+ SwigLib = NewStringf("%sLib", buf); // Native windows installation path
+@@ -914,7 +919,22 @@ int SWIG_main(int argc, char *argv[], Language *l) {
+ if (Len(SWIG_LIB_WIN_UNIX) > 0)
+ SwigLibWinUnix = NewString(SWIG_LIB_WIN_UNIX); // Unix installation path using a drive letter (for msys/mingw)
+ #else
+- SwigLib = NewString(SWIG_LIB);
++ char buf[PATH_MAX];
++ if (0 < ::readlink("/proc/self/exe", buf, sizeof(buf)) &&
++ (p = ::strstr(buf, "/bin/swig"))) {
++ int major, minor, patch;
++ const int ret = ::sscanf(VERSION, "%d.%d.%d", &major, &minor, &patch);
++ if (3 == ret) {
++ const ::ptrdiff_t dir_part_len = p - buf;
++ ::snprintf(p, PATH_MAX - dir_part_len, "/share/swig/%d.%d.%d", major, minor, patch);
++ struct ::stat stat_res;
++ if (0 == ::stat(buf, &stat_res) && S_ISDIR(stat_res.st_mode)) {
++ SwigLib = NewString(buf);
++ }
++ }
++ }
++ if (NULL == SwigLib)
++ SwigLib = NewString(SWIG_LIB);
+ #endif
+ } else {
+ SwigLib = NewString(c);
+--
diff --git a/meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch b/meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch
new file mode 100644
index 0000000..5a05d7b
--- /dev/null
+++ b/meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch
@@ -0,0 +1,55 @@
+---
+ configure.ac | 38 +++++++-------------------------------
+ 1 file changed, 7 insertions(+), 31 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0c984b7..6edcec1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -70,38 +70,14 @@ AC_MSG_RESULT([$with_pcre])
+
+ dnl To make configuring easier, check for a locally built PCRE using the Tools/pcre-build.sh script
+ if test x"${with_pcre}" = xyes ; then
+- AC_MSG_CHECKING([whether to use local PCRE])
+- local_pcre_config=no
+- if test -z $PCRE_CONFIG; then
+- if test -f `pwd`/pcre/pcre-swig-install/bin/pcre-config; then
+- PCRE_CONFIG=`pwd`/pcre/pcre-swig-install/bin/pcre-config
+- local_pcre_config=$PCRE_CONFIG
+- fi
+- fi
+- AC_MSG_RESULT([$local_pcre_config])
+-fi
+-AS_IF([test "x$with_pcre" != xno],
+- [AX_PATH_GENERIC([pcre],
+- [], dnl Minimal version of PCRE we need -- accept any
+- [], dnl custom sed script for version parsing is not needed
+- [AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library])
+- LIBS="$LIBS $PCRE_LIBS"
+- CPPFLAGS="$CPPFLAGS $PCRE_CFLAGS"
+- ],
+- [AC_MSG_FAILURE([
+- Cannot find pcre-config script from PCRE (Perl Compatible Regular Expressions)
+- library package. This dependency is needed for configure to complete,
+- Either:
+- - Install the PCRE developer package on your system (preferred approach).
+- - Download the PCRE source tarball, build and install on your system
+- as you would for any package built from source distribution.
+- - Use the Tools/pcre-build.sh script to build PCRE just for SWIG to statically
+- link against. Run 'Tools/pcre-build.sh --help' for instructions.
+- (quite easy and does not require privileges to install PCRE on your system)
+- - Use configure --without-pcre to disable regular expressions support in SWIG
+- (not recommended).])
+- ])
++ PKG_CHECK_MODULES([PCRE], [libpcre], [
++ AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library])
++ LIBS="$LIBS $PCRE_LIBS"
++ CPPFLAGS="$CPPFLAGS $PCRE_CFLAGS"
++ ], [
++ AC_MSG_WARN([$PCRE_PKG_ERRORS])
+ ])
++fi
+
+
+ dnl CCache
+--
diff --git a/meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb b/meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb
new file mode 100644
index 0000000..ac41914
--- /dev/null
+++ b/meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \
+ file://0001-configure-use-pkg-config-for-pcre-detection.patch \
+ "
+
+SRC_URI[md5sum] = "62f9b0d010cef36a13a010dc530d0d41"
+SRC_URI[sha256sum] = "a2669657cabcedc371f63c0457407a183e0b6b2ef4e7e303c1ec9a3964cc7813"
diff --git a/meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend b/meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend
new file mode 100644
index 0000000..ae82a2b
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend
@@ -0,0 +1,13 @@
+# Provide default alsa configuration for Edison
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+SRC_URI += "\
+ file://asound.state \
+"
+
+do_install_append() {
+ install -v -d ${D}/var/lib/alsa/
+ install -m 644 ${WORKDIR}/asound.state ${D}/var/lib/alsa/
+}
+
diff --git a/meta-edison-distro/recipes-multimedia/alsa/files/asound.state b/meta-edison-distro/recipes-multimedia/alsa/files/asound.state
new file mode 100644
index 0000000..18aa6e2
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/alsa/files/asound.state
@@ -0,0 +1,14141 @@
+state.wm8958audio {
+ control.1 {
+ iface MIXER
+ name 'ssp1_out mux 0'
+ value fm
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 fm
+ item.1 bt
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'aware_out aware 0 switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'modem_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'modem_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'modem_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'modem_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'modem_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'modem_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'modem_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'modem_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'modem_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'modem_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'modem_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'modem_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'modem_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'modem_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'modem_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'modem_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'fm_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'fm_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'fm_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'fm_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'fm_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'fm_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'fm_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'fm_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'fm_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'fm_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'fm_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'fm_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'fm_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'fm_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'fm_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'fm_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'bt_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'bt_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'bt_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'bt_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'bt_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'bt_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'bt_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'bt_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'bt_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'bt_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'bt_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'bt_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'bt_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'bt_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'bt_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'bt_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'codec_out1 mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'codec_out1 mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'codec_out1 mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'codec_out1 mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'codec_out1 mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'codec_out1 mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'codec_out1 mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'codec_out1 mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'codec_out1 mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'codec_out1 mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'codec_out1 mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'codec_out1 mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'codec_out1 mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'codec_out1 mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.65 {
+ iface MIXER
+ name 'codec_out1 mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.66 {
+ iface MIXER
+ name 'codec_out1 mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.67 {
+ iface MIXER
+ name 'codec_out0 mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.68 {
+ iface MIXER
+ name 'codec_out0 mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.69 {
+ iface MIXER
+ name 'codec_out0 mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.70 {
+ iface MIXER
+ name 'codec_out0 mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.71 {
+ iface MIXER
+ name 'codec_out0 mix 0 sprot_loop_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.72 {
+ iface MIXER
+ name 'codec_out0 mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.73 {
+ iface MIXER
+ name 'codec_out0 mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.74 {
+ iface MIXER
+ name 'codec_out0 mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.75 {
+ iface MIXER
+ name 'codec_out0 mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.76 {
+ iface MIXER
+ name 'codec_out0 mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.77 {
+ iface MIXER
+ name 'codec_out0 mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.78 {
+ iface MIXER
+ name 'codec_out0 mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.79 {
+ iface MIXER
+ name 'codec_out0 mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.80 {
+ iface MIXER
+ name 'codec_out0 mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.81 {
+ iface MIXER
+ name 'codec_out0 mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.82 {
+ iface MIXER
+ name 'codec_out0 mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.83 {
+ iface MIXER
+ name 'rxspeech_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.84 {
+ iface MIXER
+ name 'rxspeech_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.85 {
+ iface MIXER
+ name 'rxspeech_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.86 {
+ iface MIXER
+ name 'rxspeech_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.87 {
+ iface MIXER
+ name 'rxspeech_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.88 {
+ iface MIXER
+ name 'rxspeech_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.89 {
+ iface MIXER
+ name 'rxspeech_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.90 {
+ iface MIXER
+ name 'rxspeech_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.91 {
+ iface MIXER
+ name 'rxspeech_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.92 {
+ iface MIXER
+ name 'rxspeech_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.93 {
+ iface MIXER
+ name 'rxspeech_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.94 {
+ iface MIXER
+ name 'rxspeech_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.95 {
+ iface MIXER
+ name 'rxspeech_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.96 {
+ iface MIXER
+ name 'rxspeech_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.97 {
+ iface MIXER
+ name 'rxspeech_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.98 {
+ iface MIXER
+ name 'rxspeech_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.99 {
+ iface MIXER
+ name 'speech_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.100 {
+ iface MIXER
+ name 'speech_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.101 {
+ iface MIXER
+ name 'speech_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.102 {
+ iface MIXER
+ name 'speech_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.103 {
+ iface MIXER
+ name 'speech_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.104 {
+ iface MIXER
+ name 'speech_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.105 {
+ iface MIXER
+ name 'speech_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.106 {
+ iface MIXER
+ name 'speech_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.107 {
+ iface MIXER
+ name 'speech_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.108 {
+ iface MIXER
+ name 'speech_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.109 {
+ iface MIXER
+ name 'speech_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.110 {
+ iface MIXER
+ name 'speech_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.111 {
+ iface MIXER
+ name 'speech_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.112 {
+ iface MIXER
+ name 'speech_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.113 {
+ iface MIXER
+ name 'speech_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.114 {
+ iface MIXER
+ name 'speech_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.115 {
+ iface MIXER
+ name 'hf_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.116 {
+ iface MIXER
+ name 'hf_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.117 {
+ iface MIXER
+ name 'hf_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.118 {
+ iface MIXER
+ name 'hf_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.119 {
+ iface MIXER
+ name 'hf_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.120 {
+ iface MIXER
+ name 'hf_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.121 {
+ iface MIXER
+ name 'hf_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.122 {
+ iface MIXER
+ name 'hf_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.123 {
+ iface MIXER
+ name 'hf_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.124 {
+ iface MIXER
+ name 'hf_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.125 {
+ iface MIXER
+ name 'hf_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.126 {
+ iface MIXER
+ name 'hf_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.127 {
+ iface MIXER
+ name 'hf_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.128 {
+ iface MIXER
+ name 'hf_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.129 {
+ iface MIXER
+ name 'hf_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.130 {
+ iface MIXER
+ name 'hf_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.131 {
+ iface MIXER
+ name 'hf_sns_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.132 {
+ iface MIXER
+ name 'hf_sns_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.133 {
+ iface MIXER
+ name 'hf_sns_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.134 {
+ iface MIXER
+ name 'hf_sns_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.135 {
+ iface MIXER
+ name 'hf_sns_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.136 {
+ iface MIXER
+ name 'hf_sns_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.137 {
+ iface MIXER
+ name 'hf_sns_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.138 {
+ iface MIXER
+ name 'hf_sns_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.139 {
+ iface MIXER
+ name 'hf_sns_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.140 {
+ iface MIXER
+ name 'hf_sns_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.141 {
+ iface MIXER
+ name 'hf_sns_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.142 {
+ iface MIXER
+ name 'hf_sns_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.143 {
+ iface MIXER
+ name 'hf_sns_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.144 {
+ iface MIXER
+ name 'hf_sns_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.145 {
+ iface MIXER
+ name 'hf_sns_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.146 {
+ iface MIXER
+ name 'hf_sns_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.147 {
+ iface MIXER
+ name 'vad_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.148 {
+ iface MIXER
+ name 'vad_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.149 {
+ iface MIXER
+ name 'vad_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.150 {
+ iface MIXER
+ name 'vad_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.151 {
+ iface MIXER
+ name 'vad_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.152 {
+ iface MIXER
+ name 'vad_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.153 {
+ iface MIXER
+ name 'vad_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.154 {
+ iface MIXER
+ name 'vad_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.155 {
+ iface MIXER
+ name 'vad_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.156 {
+ iface MIXER
+ name 'vad_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.157 {
+ iface MIXER
+ name 'vad_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.158 {
+ iface MIXER
+ name 'vad_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.159 {
+ iface MIXER
+ name 'vad_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.160 {
+ iface MIXER
+ name 'vad_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.161 {
+ iface MIXER
+ name 'vad_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.162 {
+ iface MIXER
+ name 'vad_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.163 {
+ iface MIXER
+ name 'aware_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.164 {
+ iface MIXER
+ name 'aware_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.165 {
+ iface MIXER
+ name 'aware_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.166 {
+ iface MIXER
+ name 'aware_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.167 {
+ iface MIXER
+ name 'aware_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.168 {
+ iface MIXER
+ name 'aware_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.169 {
+ iface MIXER
+ name 'aware_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.170 {
+ iface MIXER
+ name 'aware_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.171 {
+ iface MIXER
+ name 'aware_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.172 {
+ iface MIXER
+ name 'aware_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.173 {
+ iface MIXER
+ name 'aware_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.174 {
+ iface MIXER
+ name 'aware_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.175 {
+ iface MIXER
+ name 'aware_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.176 {
+ iface MIXER
+ name 'aware_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.177 {
+ iface MIXER
+ name 'aware_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.178 {
+ iface MIXER
+ name 'aware_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.179 {
+ iface MIXER
+ name 'voip_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.180 {
+ iface MIXER
+ name 'voip_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.181 {
+ iface MIXER
+ name 'voip_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.182 {
+ iface MIXER
+ name 'voip_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.183 {
+ iface MIXER
+ name 'voip_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.184 {
+ iface MIXER
+ name 'voip_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.185 {
+ iface MIXER
+ name 'voip_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.186 {
+ iface MIXER
+ name 'voip_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.187 {
+ iface MIXER
+ name 'voip_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.188 {
+ iface MIXER
+ name 'voip_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.189 {
+ iface MIXER
+ name 'voip_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.190 {
+ iface MIXER
+ name 'voip_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.191 {
+ iface MIXER
+ name 'voip_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.192 {
+ iface MIXER
+ name 'voip_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.193 {
+ iface MIXER
+ name 'voip_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.194 {
+ iface MIXER
+ name 'voip_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.195 {
+ iface MIXER
+ name 'media_loop2_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.196 {
+ iface MIXER
+ name 'media_loop2_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.197 {
+ iface MIXER
+ name 'media_loop2_out mix 0 codec_in0'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.198 {
+ iface MIXER
+ name 'media_loop2_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.199 {
+ iface MIXER
+ name 'media_loop2_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.200 {
+ iface MIXER
+ name 'media_loop2_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.201 {
+ iface MIXER
+ name 'media_loop2_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.202 {
+ iface MIXER
+ name 'media_loop2_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.203 {
+ iface MIXER
+ name 'media_loop2_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.204 {
+ iface MIXER
+ name 'media_loop2_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.205 {
+ iface MIXER
+ name 'media_loop2_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.206 {
+ iface MIXER
+ name 'media_loop2_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.207 {
+ iface MIXER
+ name 'media_loop2_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.208 {
+ iface MIXER
+ name 'media_loop2_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.209 {
+ iface MIXER
+ name 'media_loop2_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.210 {
+ iface MIXER
+ name 'media_loop2_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.211 {
+ iface MIXER
+ name 'media_loop1_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.212 {
+ iface MIXER
+ name 'media_loop1_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.213 {
+ iface MIXER
+ name 'media_loop1_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.214 {
+ iface MIXER
+ name 'media_loop1_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.215 {
+ iface MIXER
+ name 'media_loop1_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.216 {
+ iface MIXER
+ name 'media_loop1_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.217 {
+ iface MIXER
+ name 'media_loop1_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.218 {
+ iface MIXER
+ name 'media_loop1_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.219 {
+ iface MIXER
+ name 'media_loop1_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.220 {
+ iface MIXER
+ name 'media_loop1_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.221 {
+ iface MIXER
+ name 'media_loop1_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.222 {
+ iface MIXER
+ name 'media_loop1_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.223 {
+ iface MIXER
+ name 'media_loop1_out mix 0 pcm0_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.224 {
+ iface MIXER
+ name 'media_loop1_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.225 {
+ iface MIXER
+ name 'media_loop1_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.226 {
+ iface MIXER
+ name 'media_loop1_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.227 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.228 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.229 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.230 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.231 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.232 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 media_loop1_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.233 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.234 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.235 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.236 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.237 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.238 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.239 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.240 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.241 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.242 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.243 {
+ iface MIXER
+ name 'pcm2_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.244 {
+ iface MIXER
+ name 'pcm2_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.245 {
+ iface MIXER
+ name 'pcm2_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.246 {
+ iface MIXER
+ name 'pcm2_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.247 {
+ iface MIXER
+ name 'pcm2_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.248 {
+ iface MIXER
+ name 'pcm2_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.249 {
+ iface MIXER
+ name 'pcm2_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.250 {
+ iface MIXER
+ name 'pcm2_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.251 {
+ iface MIXER
+ name 'pcm2_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.252 {
+ iface MIXER
+ name 'pcm2_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.253 {
+ iface MIXER
+ name 'pcm2_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.254 {
+ iface MIXER
+ name 'pcm2_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.255 {
+ iface MIXER
+ name 'pcm2_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.256 {
+ iface MIXER
+ name 'pcm2_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.257 {
+ iface MIXER
+ name 'pcm2_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.258 {
+ iface MIXER
+ name 'pcm2_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.259 {
+ iface MIXER
+ name 'pcm1_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.260 {
+ iface MIXER
+ name 'pcm1_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.261 {
+ iface MIXER
+ name 'pcm1_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.262 {
+ iface MIXER
+ name 'pcm1_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.263 {
+ iface MIXER
+ name 'pcm1_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.264 {
+ iface MIXER
+ name 'pcm1_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.265 {
+ iface MIXER
+ name 'pcm1_out mix 0 media_loop2_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.266 {
+ iface MIXER
+ name 'pcm1_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.267 {
+ iface MIXER
+ name 'pcm1_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.268 {
+ iface MIXER
+ name 'pcm1_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.269 {
+ iface MIXER
+ name 'pcm1_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.270 {
+ iface MIXER
+ name 'pcm1_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.271 {
+ iface MIXER
+ name 'pcm1_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.272 {
+ iface MIXER
+ name 'pcm1_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.273 {
+ iface MIXER
+ name 'pcm1_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.274 {
+ iface MIXER
+ name 'pcm1_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.275 {
+ iface MIXER
+ name 'pcm0_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.276 {
+ iface MIXER
+ name 'pcm0_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.277 {
+ iface MIXER
+ name 'pcm0_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.278 {
+ iface MIXER
+ name 'pcm0_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.279 {
+ iface MIXER
+ name 'pcm0_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.280 {
+ iface MIXER
+ name 'pcm0_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.281 {
+ iface MIXER
+ name 'pcm0_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.282 {
+ iface MIXER
+ name 'pcm0_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.283 {
+ iface MIXER
+ name 'pcm0_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.284 {
+ iface MIXER
+ name 'pcm0_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.285 {
+ iface MIXER
+ name 'pcm0_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.286 {
+ iface MIXER
+ name 'pcm0_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.287 {
+ iface MIXER
+ name 'pcm0_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.288 {
+ iface MIXER
+ name 'pcm0_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.289 {
+ iface MIXER
+ name 'pcm0_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.290 {
+ iface MIXER
+ name 'pcm0_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.291 {
+ iface MIXER
+ name 'media1_out mix 0 media0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.292 {
+ iface MIXER
+ name 'media1_out mix 0 media1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.293 {
+ iface MIXER
+ name 'media1_out mix 0 media2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.294 {
+ iface MIXER
+ name 'media1_out mix 0 media3_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.295 {
+ iface MIXER
+ name 'media0_out mix 0 media0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.296 {
+ iface MIXER
+ name 'media0_out mix 0 media1_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.297 {
+ iface MIXER
+ name 'media0_out mix 0 media2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.298 {
+ iface MIXER
+ name 'media0_out mix 0 media3_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.299 {
+ iface MIXER
+ name 'media0_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.300 {
+ iface MIXER
+ name 'media0_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.301 {
+ iface MIXER
+ name 'media0_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.302 {
+ iface MIXER
+ name 'media1_in gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.303 {
+ iface MIXER
+ name 'media1_in gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.304 {
+ iface MIXER
+ name 'media1_in gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.305 {
+ iface MIXER
+ name 'media2_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.306 {
+ iface MIXER
+ name 'media2_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.307 {
+ iface MIXER
+ name 'media2_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.308 {
+ iface MIXER
+ name 'media3_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.309 {
+ iface MIXER
+ name 'media3_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.310 {
+ iface MIXER
+ name 'media3_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.311 {
+ iface MIXER
+ name 'pcm0_in gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.312 {
+ iface MIXER
+ name 'pcm0_in gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.313 {
+ iface MIXER
+ name 'pcm0_in gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.314 {
+ iface MIXER
+ name 'pcm1_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.315 {
+ iface MIXER
+ name 'pcm1_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.316 {
+ iface MIXER
+ name 'pcm1_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.317 {
+ iface MIXER
+ name 'low_pcm0_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.318 {
+ iface MIXER
+ name 'low_pcm0_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.319 {
+ iface MIXER
+ name 'low_pcm0_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.320 {
+ iface MIXER
+ name 'pcm1_out gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.321 {
+ iface MIXER
+ name 'pcm1_out gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.322 {
+ iface MIXER
+ name 'pcm1_out gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.323 {
+ iface MIXER
+ name 'pcm2_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.324 {
+ iface MIXER
+ name 'pcm2_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.325 {
+ iface MIXER
+ name 'pcm2_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.326 {
+ iface MIXER
+ name 'voip_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.327 {
+ iface MIXER
+ name 'voip_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.328 {
+ iface MIXER
+ name 'voip_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.329 {
+ iface MIXER
+ name 'voip_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.330 {
+ iface MIXER
+ name 'voip_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.331 {
+ iface MIXER
+ name 'voip_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.332 {
+ iface MIXER
+ name 'tone_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.333 {
+ iface MIXER
+ name 'tone_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.334 {
+ iface MIXER
+ name 'tone_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.335 {
+ iface MIXER
+ name 'aware_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.336 {
+ iface MIXER
+ name 'aware_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.337 {
+ iface MIXER
+ name 'aware_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.338 {
+ iface MIXER
+ name 'vad_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.339 {
+ iface MIXER
+ name 'vad_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.340 {
+ iface MIXER
+ name 'vad_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.341 {
+ iface MIXER
+ name 'hf_sns_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.342 {
+ iface MIXER
+ name 'hf_sns_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.343 {
+ iface MIXER
+ name 'hf_sns_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.344 {
+ iface MIXER
+ name 'hf_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.345 {
+ iface MIXER
+ name 'hf_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.346 {
+ iface MIXER
+ name 'hf_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.347 {
+ iface MIXER
+ name 'speech_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.348 {
+ iface MIXER
+ name 'speech_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.349 {
+ iface MIXER
+ name 'speech_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.350 {
+ iface MIXER
+ name 'txspeech_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.351 {
+ iface MIXER
+ name 'txspeech_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.352 {
+ iface MIXER
+ name 'txspeech_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.353 {
+ iface MIXER
+ name 'rxspeech_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.354 {
+ iface MIXER
+ name 'rxspeech_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.355 {
+ iface MIXER
+ name 'rxspeech_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.356 {
+ iface MIXER
+ name 'speech_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.357 {
+ iface MIXER
+ name 'speech_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.358 {
+ iface MIXER
+ name 'speech_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.359 {
+ iface MIXER
+ name 'codec_in0 gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.360 {
+ iface MIXER
+ name 'codec_in0 gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.361 {
+ iface MIXER
+ name 'codec_in0 gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.362 {
+ iface MIXER
+ name 'codec_in1 gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.363 {
+ iface MIXER
+ name 'codec_in1 gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.364 {
+ iface MIXER
+ name 'codec_in1 gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.365 {
+ iface MIXER
+ name 'codec_out0 gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.366 {
+ iface MIXER
+ name 'codec_out0 gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.367 {
+ iface MIXER
+ name 'codec_out0 gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.368 {
+ iface MIXER
+ name 'codec_out1 gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.369 {
+ iface MIXER
+ name 'codec_out1 gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.370 {
+ iface MIXER
+ name 'codec_out1 gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.371 {
+ iface MIXER
+ name 'bt_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.372 {
+ iface MIXER
+ name 'bt_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.373 {
+ iface MIXER
+ name 'bt_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.374 {
+ iface MIXER
+ name 'fm_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.375 {
+ iface MIXER
+ name 'fm_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.376 {
+ iface MIXER
+ name 'fm_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.377 {
+ iface MIXER
+ name 'bt_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.378 {
+ iface MIXER
+ name 'bt_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.379 {
+ iface MIXER
+ name 'bt_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.380 {
+ iface MIXER
+ name 'fm_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.381 {
+ iface MIXER
+ name 'fm_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.382 {
+ iface MIXER
+ name 'fm_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.383 {
+ iface MIXER
+ name 'modem_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.384 {
+ iface MIXER
+ name 'modem_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.385 {
+ iface MIXER
+ name 'modem_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.386 {
+ iface MIXER
+ name 'modem_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.387 {
+ iface MIXER
+ name 'modem_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.388 {
+ iface MIXER
+ name 'modem_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.389 {
+ iface MIXER
+ name 'media_loop1_out gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.390 {
+ iface MIXER
+ name 'media_loop1_out gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.391 {
+ iface MIXER
+ name 'media_loop1_out gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.392 {
+ iface MIXER
+ name 'media_loop2_out gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.393 {
+ iface MIXER
+ name 'media_loop2_out gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.394 {
+ iface MIXER
+ name 'media_loop2_out gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.395 {
+ iface MIXER
+ name 'sprot_loop_out gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.396 {
+ iface MIXER
+ name 'sprot_loop_out gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.397 {
+ iface MIXER
+ name 'sprot_loop_out gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.398 {
+ iface MIXER
+ name 'media0_in volume 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.399 {
+ iface MIXER
+ name 'media0_in volume 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.400 {
+ iface MIXER
+ name 'media0_in volume 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.401 {
+ iface MIXER
+ name 'sidetone_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.402 {
+ iface MIXER
+ name 'sidetone_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.403 {
+ iface MIXER
+ name 'sidetone_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.404 {
+ iface MIXER
+ name 'speech_out gain 1 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.405 {
+ iface MIXER
+ name 'speech_out gain 1 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.406 {
+ iface MIXER
+ name 'speech_out gain 1 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.407 {
+ iface MIXER
+ name 'media_loop1_out fir 0 params'
+ value '8a0003000100400000000000150014001400130011000e0009000000f3ffe0ffc8ffa8ff81ff52ff1bffddfe97fe4afef8fda1fd47fdecfc92fc3afce7fb9afb56fb1bfbecfac9fab4fa707ab4fac9faecfa1bfb56fb9afbe7fb3afc92fcecfc47fda1fdf8fd4afe97feddfe1bff52ff81ffa8ffc8ffe0fff3ff000009000e0000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 138
+ }
+ }
+ control.408 {
+ iface MIXER
+ name 'media_loop1_out iir 0 params'
+ value '98000300010001005a5aefcdd0ca5c8c2e74006f573a0022518b006f573a000100005a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.409 {
+ iface MIXER
+ name 'media_loop1_out mdrp 0 params'
+ value '4c00030000000100010000000000000000000000000000000000000000000000000000500000003c000000060000001900000001000058020000000100001400000014000000400000000001'
+ comment {
+ access 'read write'
+ type BYTES
+ count 76
+ }
+ }
+ control.410 {
+ iface MIXER
+ name 'media_loop2_out fir 0 params'
+ value '100103000300400000000000fcffeaffdeffc6ffbbffa7ffa5ffa3ffb9ffc3ffdcffdcfff2ffeffffbffeaff150014001a00e5ff1800990083013900ddfda1fe51066209460c6e01a204de40a2046e01460c62095106a1feddfd3900830199001800e5ff1a0014001500eafffbffeffff2ffdcffdcffc3ffb9ffa3ffa5ffa7ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 272
+ }
+ }
+ control.411 {
+ iface MIXER
+ name 'media_loop2_out iir 0 params'
+ value '2c010300030001005a5aefcdd0ca5c8c2e74006f573a0022518b006f573a1f0000005a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.412 {
+ iface MIXER
+ name 'media_loop2_out mdrp 0 params'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 76
+ }
+ }
+ control.413 {
+ iface MIXER
+ name 'aware_out fir 0 params'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 272
+ }
+ }
+ control.414 {
+ iface MIXER
+ name 'aware_out iir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.415 {
+ iface MIXER
+ name 'aware_out aware 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.416 {
+ iface MIXER
+ name 'vad_out fir 0 params'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 272
+ }
+ }
+ control.417 {
+ iface MIXER
+ name 'vad_out iir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.418 {
+ iface MIXER
+ name 'sprot_loop_out lpro 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 192
+ }
+ }
+ control.419 {
+ iface MIXER
+ name 'codec_in0 dcr 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.420 {
+ iface MIXER
+ name 'codec_in1 dcr 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.421 {
+ iface MIXER
+ name 'speech_out ul_module 0 params fir_speech'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 136
+ }
+ }
+ control.422 {
+ iface MIXER
+ name 'speech_out ul_module 0 params fir_hf_sns'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 136
+ }
+ }
+ control.423 {
+ iface MIXER
+ name 'speech_out ul_module 0 params iir_speech'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.424 {
+ iface MIXER
+ name 'speech_out ul_module 0 params iir_hf_sns'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.425 {
+ iface MIXER
+ name 'speech_out ul_module 0 params aec'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 640
+ }
+ }
+ control.426 {
+ iface MIXER
+ name 'speech_out ul_module 0 params nr'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 38
+ }
+ }
+ control.427 {
+ iface MIXER
+ name 'speech_out ul_module 0 params agc'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 58
+ }
+ }
+ control.428 {
+ iface MIXER
+ name 'speech_out ul_module 0 params biquad'
+ value '00000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 22
+ }
+ }
+ control.429 {
+ iface MIXER
+ name 'speech_out ul_module 0 params compr'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 36
+ }
+ }
+ control.430 {
+ iface MIXER
+ name 'speech_out ul_module 0 params sns'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 324
+ }
+ }
+ control.431 {
+ iface MIXER
+ name 'speech_out ul_module 0 params ser'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 42
+ }
+ }
+ control.432 {
+ iface MIXER
+ name 'speech_out ul_module 0 params cni'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.433 {
+ iface MIXER
+ name 'speech_out ul_module 0 params ref'
+ value '000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 24
+ }
+ }
+ control.434 {
+ iface MIXER
+ name 'speech_out ul_module 0 params delay'
+ value '000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 6
+ }
+ }
+ control.435 {
+ iface MIXER
+ name 'speech_out ul_module 0 params bmf'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 264
+ }
+ }
+ control.436 {
+ iface MIXER
+ name 'speech_out ul_module 0 params dnr'
+ value '000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 18
+ }
+ }
+ control.437 {
+ iface MIXER
+ name 'speech_in dl_module 0 params ana'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 52
+ }
+ }
+ control.438 {
+ iface MIXER
+ name 'speech_in dl_module 0 params fir'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 136
+ }
+ }
+ control.439 {
+ iface MIXER
+ name 'speech_in dl_module 0 params iir'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.440 {
+ iface MIXER
+ name 'speech_in dl_module 0 params nr'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 38
+ }
+ }
+ control.441 {
+ iface MIXER
+ name 'speech_in dl_module 0 params biquad'
+ value '00000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 22
+ }
+ }
+ control.442 {
+ iface MIXER
+ name 'speech_in dl_module 0 params compr'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 36
+ }
+ }
+ control.443 {
+ iface MIXER
+ name 'speech_in dl_module 0 params cni'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.444 {
+ iface MIXER
+ name 'speech_in dl_module 0 params bwx'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 54
+ }
+ }
+ control.445 {
+ iface MIXER
+ name 'speech_in dl_module 0 params gmm'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 586
+ }
+ }
+ control.446 {
+ iface MIXER
+ name 'speech_in dl_module 0 params glc'
+ value '000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 18
+ }
+ }
+ control.447 {
+ iface MIXER
+ name 'codec_out interleaver slot 0'
+ value codec_out0_0
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.448 {
+ iface MIXER
+ name 'codec_out interleaver slot 1'
+ value codec_out0_1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.449 {
+ iface MIXER
+ name 'codec_out interleaver slot 2'
+ value codec_out1_0
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.450 {
+ iface MIXER
+ name 'codec_out interleaver slot 3'
+ value codec_out1_1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.451 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in0_0'
+ value 'slot 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.452 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in0_1'
+ value 'slot 1'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.453 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in1_0'
+ value none
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.454 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in1_1'
+ value none
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.455 {
+ iface MIXER
+ name 'domain voice mode 0'
+ value narrowband
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 narrowband
+ item.1 wideband
+ }
+ }
+ control.456 {
+ iface MIXER
+ name 'domain bt mode 0'
+ value narrowband
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 narrowband
+ item.1 wideband
+ }
+ }
+ control.457 {
+ iface MIXER
+ name 'sst debug byte control'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 512
+ }
+ }
+ control.458 {
+ iface MIXER
+ name 'probe out0 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.459 {
+ iface MIXER
+ name 'probe out1 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.460 {
+ iface MIXER
+ name 'probe out2 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.461 {
+ iface MIXER
+ name 'probe out3 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.462 {
+ iface MIXER
+ name 'probe out4 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.463 {
+ iface MIXER
+ name 'probe out5 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.464 {
+ iface MIXER
+ name 'probe out6 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.465 {
+ iface MIXER
+ name 'probe out7 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.466 {
+ iface MIXER
+ name 'probe in0 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.467 {
+ iface MIXER
+ name 'probe in1 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.468 {
+ iface MIXER
+ name 'probe in2 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.469 {
+ iface MIXER
+ name 'probe in3 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.470 {
+ iface MIXER
+ name 'probe in4 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.471 {
+ iface MIXER
+ name 'probe in5 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.472 {
+ iface MIXER
+ name 'probe in6 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.473 {
+ iface MIXER
+ name 'probe in7 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.474 {
+ iface MIXER
+ name 'AIF1.1 DRC'
+ value '00980845000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.475 {
+ iface MIXER
+ name 'AIF1.2 DRC'
+ value '00980845000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.476 {
+ iface MIXER
+ name 'AIF2 DRC'
+ value '00980845000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.477 {
+ iface MIXER
+ name 'AIF1DAC1 EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.478 {
+ iface MIXER
+ name 'AIF1DAC1 EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.479 {
+ iface MIXER
+ name 'AIF1DAC1 EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.480 {
+ iface MIXER
+ name 'AIF1DAC1 EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.481 {
+ iface MIXER
+ name 'AIF1DAC1 EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.482 {
+ iface MIXER
+ name 'AIF1DAC2 EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.483 {
+ iface MIXER
+ name 'AIF1DAC2 EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.484 {
+ iface MIXER
+ name 'AIF1DAC2 EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.485 {
+ iface MIXER
+ name 'AIF1DAC2 EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.486 {
+ iface MIXER
+ name 'AIF1DAC2 EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.487 {
+ iface MIXER
+ name 'AIF2 EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.488 {
+ iface MIXER
+ name 'AIF2 EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.489 {
+ iface MIXER
+ name 'AIF2 EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.490 {
+ iface MIXER
+ name 'AIF2 EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.491 {
+ iface MIXER
+ name 'AIF2 EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.492 {
+ iface MIXER
+ name 'IN1L Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.493 {
+ iface MIXER
+ name 'IN1L Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.494 {
+ iface MIXER
+ name 'IN1L ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.495 {
+ iface MIXER
+ name 'IN1R Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.496 {
+ iface MIXER
+ name 'IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.497 {
+ iface MIXER
+ name 'IN1R ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.498 {
+ iface MIXER
+ name 'IN2L Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.499 {
+ iface MIXER
+ name 'IN2L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.500 {
+ iface MIXER
+ name 'IN2L ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.501 {
+ iface MIXER
+ name 'IN2R Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.502 {
+ iface MIXER
+ name 'IN2R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.503 {
+ iface MIXER
+ name 'IN2R ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.504 {
+ iface MIXER
+ name 'MIXINL IN2L Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.505 {
+ iface MIXER
+ name 'MIXINL IN1L Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.506 {
+ iface MIXER
+ name 'MIXINL Output Record Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.507 {
+ iface MIXER
+ name 'MIXINL IN1LP Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.508 {
+ iface MIXER
+ name 'MIXINL Direct Voice Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 6'
+ dbmin -9999999
+ dbmax 300
+ dbvalue.0 -9999999
+ }
+ }
+ control.509 {
+ iface MIXER
+ name 'MIXINR IN2R Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.510 {
+ iface MIXER
+ name 'MIXINR IN1R Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.511 {
+ iface MIXER
+ name 'MIXINR Output Record Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.512 {
+ iface MIXER
+ name 'MIXINR IN1RP Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.513 {
+ iface MIXER
+ name 'MIXINR Direct Voice Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 6'
+ dbmin -9999999
+ dbmax 300
+ dbvalue.0 -9999999
+ }
+ }
+ control.514 {
+ iface MIXER
+ name 'Left Output Mixer IN2RN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.515 {
+ iface MIXER
+ name 'Left Output Mixer IN2LN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.516 {
+ iface MIXER
+ name 'Left Output Mixer IN2LP Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.517 {
+ iface MIXER
+ name 'Left Output Mixer IN1L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.518 {
+ iface MIXER
+ name 'Left Output Mixer IN1R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.519 {
+ iface MIXER
+ name 'Left Output Mixer Right Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.520 {
+ iface MIXER
+ name 'Left Output Mixer Left Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.521 {
+ iface MIXER
+ name 'Left Output Mixer DAC Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.522 {
+ iface MIXER
+ name 'Right Output Mixer IN2LN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.523 {
+ iface MIXER
+ name 'Right Output Mixer IN2RN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.524 {
+ iface MIXER
+ name 'Right Output Mixer IN1L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.525 {
+ iface MIXER
+ name 'Right Output Mixer IN1R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.526 {
+ iface MIXER
+ name 'Right Output Mixer IN2RP Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.527 {
+ iface MIXER
+ name 'Right Output Mixer Left Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.528 {
+ iface MIXER
+ name 'Right Output Mixer Right Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.529 {
+ iface MIXER
+ name 'Right Output Mixer DAC Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.530 {
+ iface MIXER
+ name 'Output Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.531 {
+ iface MIXER
+ name 'Output Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.532 {
+ iface MIXER
+ name 'Output ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.533 {
+ iface MIXER
+ name 'Earpiece Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.534 {
+ iface MIXER
+ name 'Earpiece Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.535 {
+ iface MIXER
+ name 'SPKL Input Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.536 {
+ iface MIXER
+ name 'SPKL IN1LP Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.537 {
+ iface MIXER
+ name 'SPKL Output Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.538 {
+ iface MIXER
+ name 'SPKR Input Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.539 {
+ iface MIXER
+ name 'SPKR IN1RP Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.540 {
+ iface MIXER
+ name 'SPKR Output Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.541 {
+ iface MIXER
+ name 'Speaker Mixer Volume'
+ value.0 3
+ value.1 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 3'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.542 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.543 {
+ iface MIXER
+ name 'Speaker Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.544 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.545 {
+ iface MIXER
+ name 'Speaker Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.546 {
+ iface MIXER
+ name 'Speaker Reference'
+ value SPKVDD/2
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 SPKVDD/2
+ item.1 VMID
+ }
+ }
+ control.547 {
+ iface MIXER
+ name 'Speaker Mode'
+ value 'Class D'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Class D'
+ item.1 'Class AB'
+ }
+ }
+ control.548 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 45
+ value.1 45
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -1200
+ dbvalue.1 -1200
+ }
+ }
+ control.549 {
+ iface MIXER
+ name 'Headphone Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.550 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.551 {
+ iface MIXER
+ name 'LINEOUT1N Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.552 {
+ iface MIXER
+ name 'LINEOUT1P Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.553 {
+ iface MIXER
+ name 'LINEOUT1 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.554 {
+ iface MIXER
+ name 'LINEOUT2N Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.555 {
+ iface MIXER
+ name 'LINEOUT2P Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.556 {
+ iface MIXER
+ name 'LINEOUT2 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.557 {
+ iface MIXER
+ name 'AIF1ADC1 Volume'
+ value.0 110
+ value.1 110
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 120'
+ dbmin -9999999
+ dbmax 1800
+ dbvalue.0 1050
+ dbvalue.1 1050
+ }
+ }
+ control.558 {
+ iface MIXER
+ name 'AIF1ADC2 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 120'
+ dbmin -9999999
+ dbmax 1800
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.559 {
+ iface MIXER
+ name 'AIF2ADC Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 120'
+ dbmin -9999999
+ dbmax 1800
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.560 {
+ iface MIXER
+ name 'AIF1ADCL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.561 {
+ iface MIXER
+ name 'AIF1ADCR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.562 {
+ iface MIXER
+ name 'AIF2ADCL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.563 {
+ iface MIXER
+ name 'AIF2ADCR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.564 {
+ iface MIXER
+ name 'AIF1DACL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.565 {
+ iface MIXER
+ name 'AIF1DACR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.566 {
+ iface MIXER
+ name 'AIF2DACL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.567 {
+ iface MIXER
+ name 'AIF2DACR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.568 {
+ iface MIXER
+ name 'AIF1DAC1 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.569 {
+ iface MIXER
+ name 'AIF1DAC2 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.570 {
+ iface MIXER
+ name 'AIF2DAC Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.571 {
+ iface MIXER
+ name 'AIF1 Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.572 {
+ iface MIXER
+ name 'AIF2 Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.573 {
+ iface MIXER
+ name 'AIF1DAC1 EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.574 {
+ iface MIXER
+ name 'AIF1DAC2 EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.575 {
+ iface MIXER
+ name 'AIF2 EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.576 {
+ iface MIXER
+ name 'AIF1DAC1 DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.577 {
+ iface MIXER
+ name 'AIF1ADC1L DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.578 {
+ iface MIXER
+ name 'AIF1ADC1R DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.579 {
+ iface MIXER
+ name 'AIF1DAC2 DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.580 {
+ iface MIXER
+ name 'AIF1ADC2L DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.581 {
+ iface MIXER
+ name 'AIF1ADC2R DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.582 {
+ iface MIXER
+ name 'AIF2DAC DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.583 {
+ iface MIXER
+ name 'AIF2ADCL DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.584 {
+ iface MIXER
+ name 'AIF2ADCR DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.585 {
+ iface MIXER
+ name 'DAC1 Right Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.586 {
+ iface MIXER
+ name 'DAC1 Left Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.587 {
+ iface MIXER
+ name 'DAC2 Right Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.588 {
+ iface MIXER
+ name 'DAC2 Left Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.589 {
+ iface MIXER
+ name 'Sidetone HPF Mux'
+ value '2.7kHz'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '2.7kHz'
+ item.1 '1.35kHz'
+ item.2 '675Hz'
+ item.3 '370Hz'
+ item.4 '180Hz'
+ item.5 '90Hz'
+ item.6 '45Hz'
+ }
+ }
+ control.590 {
+ iface MIXER
+ name 'Sidetone HPF Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.591 {
+ iface MIXER
+ name 'AIF1ADC1 HPF Mode'
+ value HiFi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 HiFi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.592 {
+ iface MIXER
+ name 'AIF1ADC1 HPF Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.593 {
+ iface MIXER
+ name 'AIF1ADC2 HPF Mode'
+ value HiFi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 HiFi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.594 {
+ iface MIXER
+ name 'AIF1ADC2 HPF Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.595 {
+ iface MIXER
+ name 'AIF2ADC HPF Mode'
+ value HiFi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 HiFi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.596 {
+ iface MIXER
+ name 'AIF2ADC HPF Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.597 {
+ iface MIXER
+ name 'ADC OSR'
+ value 'High Performance'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Low Power'
+ item.1 'High Performance'
+ }
+ }
+ control.598 {
+ iface MIXER
+ name 'DAC OSR'
+ value 'Low Power'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Low Power'
+ item.1 'High Performance'
+ }
+ }
+ control.599 {
+ iface MIXER
+ name 'DAC1 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 112'
+ dbmin -9999999
+ dbmax 1200
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.600 {
+ iface MIXER
+ name 'DAC1 Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.601 {
+ iface MIXER
+ name 'DAC2 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 112'
+ dbmin -9999999
+ dbmax 1200
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.602 {
+ iface MIXER
+ name 'DAC2 Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.603 {
+ iface MIXER
+ name 'SPKL DAC2 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.604 {
+ iface MIXER
+ name 'SPKL DAC1 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.605 {
+ iface MIXER
+ name 'SPKR DAC2 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.606 {
+ iface MIXER
+ name 'SPKR DAC1 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.607 {
+ iface MIXER
+ name 'AIF1DAC1 3D Stereo Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -1600
+ dbmax 1145
+ dbvalue.0 -1600
+ }
+ }
+ control.608 {
+ iface MIXER
+ name 'AIF1DAC1 3D Stereo Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.609 {
+ iface MIXER
+ name 'AIF1DAC2 3D Stereo Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -1600
+ dbmax 1145
+ dbvalue.0 -1600
+ }
+ }
+ control.610 {
+ iface MIXER
+ name 'AIF1DAC2 3D Stereo Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.611 {
+ iface MIXER
+ name 'AIF2DAC 3D Stereo Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -1600
+ dbmax 1145
+ dbvalue.0 -1600
+ }
+ }
+ control.612 {
+ iface MIXER
+ name 'AIF2DAC 3D Stereo Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.613 {
+ iface MIXER
+ name 'MIXINL MIXOUTL Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin 0
+ dbmax 6300
+ dbvalue.0 0
+ }
+ }
+ control.614 {
+ iface MIXER
+ name 'MIXINR MIXOUTR Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin 0
+ dbmax 6300
+ dbvalue.0 0
+ }
+ }
+ control.615 {
+ iface MIXER
+ name 'AIF3 Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.616 {
+ iface MIXER
+ name 'AIF1DAC1 Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.617 {
+ iface MIXER
+ name 'AIF1DAC1 Noise Gate Hold Time'
+ value '30ms'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '30ms'
+ item.1 '125ms'
+ item.2 '250ms'
+ item.3 '500ms'
+ }
+ }
+ control.618 {
+ iface MIXER
+ name 'AIF1DAC1 Noise Gate Threshold Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -10200
+ dbmax -6000
+ dbvalue.0 -8400
+ }
+ }
+ control.619 {
+ iface MIXER
+ name 'AIF1DAC2 Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.620 {
+ iface MIXER
+ name 'AIF1DAC2 Noise Gate Hold Time'
+ value '30ms'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '30ms'
+ item.1 '125ms'
+ item.2 '250ms'
+ item.3 '500ms'
+ }
+ }
+ control.621 {
+ iface MIXER
+ name 'AIF1DAC2 Noise Gate Threshold Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -10200
+ dbmax -6000
+ dbvalue.0 -8400
+ }
+ }
+ control.622 {
+ iface MIXER
+ name 'AIF2DAC Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.623 {
+ iface MIXER
+ name 'AIF2DAC Noise Gate Hold Time'
+ value '30ms'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '30ms'
+ item.1 '125ms'
+ item.2 '250ms'
+ item.3 '500ms'
+ }
+ }
+ control.624 {
+ iface MIXER
+ name 'AIF2DAC Noise Gate Threshold Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -10200
+ dbmax -6000
+ dbvalue.0 -8400
+ }
+ }
+ control.625 {
+ iface MIXER
+ name 'AIF1DAC1 MBC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.626 {
+ iface MIXER
+ name 'AIF1DAC2 MBC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.627 {
+ iface MIXER
+ name 'AIF2DAC MBC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.628 {
+ iface MIXER
+ name 'AIF1DAC1 VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.629 {
+ iface MIXER
+ name 'AIF1DAC2 VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.630 {
+ iface MIXER
+ name 'AIF2DAC VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.631 {
+ iface MIXER
+ name 'AIF1DAC1 HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.632 {
+ iface MIXER
+ name 'AIF1DAC2 HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.633 {
+ iface MIXER
+ name 'AIF2DAC HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.634 {
+ iface MIXER
+ name 'AIF1DAC1 HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.635 {
+ iface MIXER
+ name 'AIF1DAC2 HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.636 {
+ iface MIXER
+ name 'AIF2DAC HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.637 {
+ iface MIXER
+ name 'AIF1DAC1 Enhanced EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.638 {
+ iface MIXER
+ name 'AIF1DAC2 Enhanced EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.639 {
+ iface MIXER
+ name 'AIF2DAC Enhanced EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.640 {
+ iface MIXER
+ name 'ADCR Mux'
+ value DMIC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 DMIC
+ }
+ }
+ control.641 {
+ iface MIXER
+ name 'ADCL Mux'
+ value DMIC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 DMIC
+ }
+ }
+ control.642 {
+ iface MIXER
+ name 'Right Headphone Mux'
+ value Mixer
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Mixer
+ item.1 DAC
+ }
+ }
+ control.643 {
+ iface MIXER
+ name 'Left Headphone Mux'
+ value Mixer
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Mixer
+ item.1 DAC
+ }
+ }
+ control.644 {
+ iface MIXER
+ name 'SPKR DAC2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.645 {
+ iface MIXER
+ name 'SPKR Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.646 {
+ iface MIXER
+ name 'SPKR IN1RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.647 {
+ iface MIXER
+ name 'SPKR Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.648 {
+ iface MIXER
+ name 'SPKR DAC1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.649 {
+ iface MIXER
+ name 'SPKL DAC2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.650 {
+ iface MIXER
+ name 'SPKL Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.651 {
+ iface MIXER
+ name 'SPKL IN1LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.652 {
+ iface MIXER
+ name 'SPKL Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.653 {
+ iface MIXER
+ name 'SPKL DAC1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.654 {
+ iface MIXER
+ name 'AIF3ADC Mux'
+ value AIF1ADCDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF1ADCDAT
+ item.1 AIF2ADCDAT
+ item.2 AIF2DACDAT
+ item.3 'Mono PCM'
+ }
+ }
+ control.655 {
+ iface MIXER
+ name 'AIF2DACR Mux'
+ value AIF2
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2
+ item.1 AIF3
+ }
+ }
+ control.656 {
+ iface MIXER
+ name 'AIF2DACL Mux'
+ value AIF2
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2
+ item.1 AIF3
+ }
+ }
+ control.657 {
+ iface MIXER
+ name 'Mono PCM Out Mux'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 AIF2ADCL
+ item.2 AIF2ADCR
+ }
+ }
+ control.658 {
+ iface MIXER
+ name 'AIF2 Loopback'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 ADCDAT
+ }
+ }
+ control.659 {
+ iface MIXER
+ name 'AIF1 Loopback'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 ADCDAT
+ }
+ }
+ control.660 {
+ iface MIXER
+ name 'AIF2ADC Mux'
+ value AIF2ADCDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2ADCDAT
+ item.1 AIF3DACDAT
+ }
+ }
+ control.661 {
+ iface MIXER
+ name 'AIF2DAC Mux'
+ value AIF2DACDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2DACDAT
+ item.1 AIF3DACDAT
+ }
+ }
+ control.662 {
+ iface MIXER
+ name 'AIF1DAC Mux'
+ value AIF1DACDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF1DACDAT
+ item.1 AIF3DACDAT
+ }
+ }
+ control.663 {
+ iface MIXER
+ name 'DAC1R Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.664 {
+ iface MIXER
+ name 'DAC1R Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.665 {
+ iface MIXER
+ name 'DAC1R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.666 {
+ iface MIXER
+ name 'DAC1R Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.667 {
+ iface MIXER
+ name 'DAC1R Mixer AIF1.1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.668 {
+ iface MIXER
+ name 'DAC1L Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.669 {
+ iface MIXER
+ name 'DAC1L Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.670 {
+ iface MIXER
+ name 'DAC1L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.671 {
+ iface MIXER
+ name 'DAC1L Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.672 {
+ iface MIXER
+ name 'DAC1L Mixer AIF1.1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.673 {
+ iface MIXER
+ name 'Right Sidetone'
+ value ADC/DMIC1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC/DMIC1
+ item.1 DMIC2
+ }
+ }
+ control.674 {
+ iface MIXER
+ name 'Left Sidetone'
+ value ADC/DMIC1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC/DMIC1
+ item.1 DMIC2
+ }
+ }
+ control.675 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.676 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.677 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.678 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.679 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer AIF1.1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.680 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.681 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.682 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.683 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.684 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer AIF1.1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.685 {
+ iface MIXER
+ name 'AIF1ADC2R Mixer DMIC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.686 {
+ iface MIXER
+ name 'AIF1ADC2R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.687 {
+ iface MIXER
+ name 'AIF1ADC2L Mixer DMIC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.688 {
+ iface MIXER
+ name 'AIF1ADC2L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.689 {
+ iface MIXER
+ name 'AIF1ADC1R Mixer ADC/DMIC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.690 {
+ iface MIXER
+ name 'AIF1ADC1R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.691 {
+ iface MIXER
+ name 'AIF1ADC1L Mixer ADC/DMIC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.692 {
+ iface MIXER
+ name 'AIF1ADC1L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.693 {
+ iface MIXER
+ name 'LINEOUT2P Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.694 {
+ iface MIXER
+ name 'LINEOUT2N Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.695 {
+ iface MIXER
+ name 'LINEOUT2N Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.696 {
+ iface MIXER
+ name 'LINEOUT1P Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.697 {
+ iface MIXER
+ name 'LINEOUT1N Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.698 {
+ iface MIXER
+ name 'LINEOUT1N Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.699 {
+ iface MIXER
+ name 'SPKR Boost Direct Voice Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.700 {
+ iface MIXER
+ name 'SPKR Boost SPKL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.701 {
+ iface MIXER
+ name 'SPKR Boost SPKR Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.702 {
+ iface MIXER
+ name 'SPKL Boost Direct Voice Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.703 {
+ iface MIXER
+ name 'SPKL Boost SPKL Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.704 {
+ iface MIXER
+ name 'SPKL Boost SPKR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.705 {
+ iface MIXER
+ name 'Earpiece Mixer Direct Voice Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.706 {
+ iface MIXER
+ name 'Earpiece Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.707 {
+ iface MIXER
+ name 'Earpiece Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.708 {
+ iface MIXER
+ name 'Right Output Mixer Left Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.709 {
+ iface MIXER
+ name 'Right Output Mixer Right Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.710 {
+ iface MIXER
+ name 'Right Output Mixer IN2LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.711 {
+ iface MIXER
+ name 'Right Output Mixer IN2RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.712 {
+ iface MIXER
+ name 'Right Output Mixer IN1L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.713 {
+ iface MIXER
+ name 'Right Output Mixer IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.714 {
+ iface MIXER
+ name 'Right Output Mixer IN2RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.715 {
+ iface MIXER
+ name 'Right Output Mixer DAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.716 {
+ iface MIXER
+ name 'Left Output Mixer Right Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.717 {
+ iface MIXER
+ name 'Left Output Mixer Left Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.718 {
+ iface MIXER
+ name 'Left Output Mixer IN2RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.719 {
+ iface MIXER
+ name 'Left Output Mixer IN2LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.720 {
+ iface MIXER
+ name 'Left Output Mixer IN2LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.721 {
+ iface MIXER
+ name 'Left Output Mixer IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.722 {
+ iface MIXER
+ name 'Left Output Mixer IN1L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.723 {
+ iface MIXER
+ name 'Left Output Mixer DAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.724 {
+ iface MIXER
+ name 'MIXINR IN2R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.725 {
+ iface MIXER
+ name 'MIXINR IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.726 {
+ iface MIXER
+ name 'MIXINL IN2L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.727 {
+ iface MIXER
+ name 'MIXINL IN1L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.728 {
+ iface MIXER
+ name 'IN2R PGA IN2RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.729 {
+ iface MIXER
+ name 'IN2R PGA IN2RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.730 {
+ iface MIXER
+ name 'IN2L PGA IN2LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.731 {
+ iface MIXER
+ name 'IN2L PGA IN2LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.732 {
+ iface MIXER
+ name 'IN1R PGA IN1RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.733 {
+ iface MIXER
+ name 'IN1R PGA IN1RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.734 {
+ iface MIXER
+ name 'IN1L PGA IN1LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.735 {
+ iface MIXER
+ name 'IN1L PGA IN1LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+}
+state.dummyaudio {
+ control.1 {
+ iface MIXER
+ name 'ssp1_out mux 0'
+ value fm
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 fm
+ item.1 bt
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'aware_out aware 0 switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'modem_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'modem_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'modem_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'modem_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'modem_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'modem_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'modem_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'modem_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'modem_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'modem_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'modem_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'modem_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'modem_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'modem_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'modem_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'modem_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'fm_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'fm_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'fm_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'fm_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'fm_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'fm_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'fm_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'fm_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'fm_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'fm_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'fm_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'fm_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'fm_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'fm_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'fm_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'fm_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'bt_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'bt_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'bt_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'bt_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'bt_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'bt_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'bt_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'bt_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'bt_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'bt_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'bt_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'bt_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'bt_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'bt_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'bt_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'bt_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'codec_out1 mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'codec_out1 mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'codec_out1 mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'codec_out1 mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'codec_out1 mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'codec_out1 mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'codec_out1 mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'codec_out1 mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'codec_out1 mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'codec_out1 mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'codec_out1 mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'codec_out1 mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'codec_out1 mix 0 pcm0_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'codec_out1 mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.65 {
+ iface MIXER
+ name 'codec_out1 mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.66 {
+ iface MIXER
+ name 'codec_out1 mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.67 {
+ iface MIXER
+ name 'codec_out0 mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.68 {
+ iface MIXER
+ name 'codec_out0 mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.69 {
+ iface MIXER
+ name 'codec_out0 mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.70 {
+ iface MIXER
+ name 'codec_out0 mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.71 {
+ iface MIXER
+ name 'codec_out0 mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.72 {
+ iface MIXER
+ name 'codec_out0 mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.73 {
+ iface MIXER
+ name 'codec_out0 mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.74 {
+ iface MIXER
+ name 'codec_out0 mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.75 {
+ iface MIXER
+ name 'codec_out0 mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.76 {
+ iface MIXER
+ name 'codec_out0 mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.77 {
+ iface MIXER
+ name 'codec_out0 mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.78 {
+ iface MIXER
+ name 'codec_out0 mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.79 {
+ iface MIXER
+ name 'codec_out0 mix 0 pcm0_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.80 {
+ iface MIXER
+ name 'codec_out0 mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.81 {
+ iface MIXER
+ name 'codec_out0 mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.82 {
+ iface MIXER
+ name 'codec_out0 mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.83 {
+ iface MIXER
+ name 'rxspeech_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.84 {
+ iface MIXER
+ name 'rxspeech_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.85 {
+ iface MIXER
+ name 'rxspeech_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.86 {
+ iface MIXER
+ name 'rxspeech_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.87 {
+ iface MIXER
+ name 'rxspeech_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.88 {
+ iface MIXER
+ name 'rxspeech_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.89 {
+ iface MIXER
+ name 'rxspeech_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.90 {
+ iface MIXER
+ name 'rxspeech_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.91 {
+ iface MIXER
+ name 'rxspeech_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.92 {
+ iface MIXER
+ name 'rxspeech_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.93 {
+ iface MIXER
+ name 'rxspeech_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.94 {
+ iface MIXER
+ name 'rxspeech_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.95 {
+ iface MIXER
+ name 'rxspeech_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.96 {
+ iface MIXER
+ name 'rxspeech_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.97 {
+ iface MIXER
+ name 'rxspeech_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.98 {
+ iface MIXER
+ name 'rxspeech_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.99 {
+ iface MIXER
+ name 'speech_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.100 {
+ iface MIXER
+ name 'speech_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.101 {
+ iface MIXER
+ name 'speech_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.102 {
+ iface MIXER
+ name 'speech_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.103 {
+ iface MIXER
+ name 'speech_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.104 {
+ iface MIXER
+ name 'speech_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.105 {
+ iface MIXER
+ name 'speech_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.106 {
+ iface MIXER
+ name 'speech_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.107 {
+ iface MIXER
+ name 'speech_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.108 {
+ iface MIXER
+ name 'speech_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.109 {
+ iface MIXER
+ name 'speech_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.110 {
+ iface MIXER
+ name 'speech_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.111 {
+ iface MIXER
+ name 'speech_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.112 {
+ iface MIXER
+ name 'speech_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.113 {
+ iface MIXER
+ name 'speech_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.114 {
+ iface MIXER
+ name 'speech_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.115 {
+ iface MIXER
+ name 'hf_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.116 {
+ iface MIXER
+ name 'hf_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.117 {
+ iface MIXER
+ name 'hf_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.118 {
+ iface MIXER
+ name 'hf_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.119 {
+ iface MIXER
+ name 'hf_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.120 {
+ iface MIXER
+ name 'hf_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.121 {
+ iface MIXER
+ name 'hf_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.122 {
+ iface MIXER
+ name 'hf_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.123 {
+ iface MIXER
+ name 'hf_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.124 {
+ iface MIXER
+ name 'hf_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.125 {
+ iface MIXER
+ name 'hf_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.126 {
+ iface MIXER
+ name 'hf_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.127 {
+ iface MIXER
+ name 'hf_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.128 {
+ iface MIXER
+ name 'hf_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.129 {
+ iface MIXER
+ name 'hf_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.130 {
+ iface MIXER
+ name 'hf_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.131 {
+ iface MIXER
+ name 'hf_sns_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.132 {
+ iface MIXER
+ name 'hf_sns_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.133 {
+ iface MIXER
+ name 'hf_sns_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.134 {
+ iface MIXER
+ name 'hf_sns_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.135 {
+ iface MIXER
+ name 'hf_sns_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.136 {
+ iface MIXER
+ name 'hf_sns_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.137 {
+ iface MIXER
+ name 'hf_sns_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.138 {
+ iface MIXER
+ name 'hf_sns_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.139 {
+ iface MIXER
+ name 'hf_sns_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.140 {
+ iface MIXER
+ name 'hf_sns_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.141 {
+ iface MIXER
+ name 'hf_sns_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.142 {
+ iface MIXER
+ name 'hf_sns_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.143 {
+ iface MIXER
+ name 'hf_sns_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.144 {
+ iface MIXER
+ name 'hf_sns_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.145 {
+ iface MIXER
+ name 'hf_sns_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.146 {
+ iface MIXER
+ name 'hf_sns_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.147 {
+ iface MIXER
+ name 'vad_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.148 {
+ iface MIXER
+ name 'vad_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.149 {
+ iface MIXER
+ name 'vad_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.150 {
+ iface MIXER
+ name 'vad_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.151 {
+ iface MIXER
+ name 'vad_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.152 {
+ iface MIXER
+ name 'vad_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.153 {
+ iface MIXER
+ name 'vad_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.154 {
+ iface MIXER
+ name 'vad_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.155 {
+ iface MIXER
+ name 'vad_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.156 {
+ iface MIXER
+ name 'vad_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.157 {
+ iface MIXER
+ name 'vad_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.158 {
+ iface MIXER
+ name 'vad_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.159 {
+ iface MIXER
+ name 'vad_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.160 {
+ iface MIXER
+ name 'vad_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.161 {
+ iface MIXER
+ name 'vad_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.162 {
+ iface MIXER
+ name 'vad_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.163 {
+ iface MIXER
+ name 'aware_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.164 {
+ iface MIXER
+ name 'aware_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.165 {
+ iface MIXER
+ name 'aware_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.166 {
+ iface MIXER
+ name 'aware_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.167 {
+ iface MIXER
+ name 'aware_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.168 {
+ iface MIXER
+ name 'aware_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.169 {
+ iface MIXER
+ name 'aware_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.170 {
+ iface MIXER
+ name 'aware_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.171 {
+ iface MIXER
+ name 'aware_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.172 {
+ iface MIXER
+ name 'aware_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.173 {
+ iface MIXER
+ name 'aware_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.174 {
+ iface MIXER
+ name 'aware_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.175 {
+ iface MIXER
+ name 'aware_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.176 {
+ iface MIXER
+ name 'aware_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.177 {
+ iface MIXER
+ name 'aware_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.178 {
+ iface MIXER
+ name 'aware_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.179 {
+ iface MIXER
+ name 'voip_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.180 {
+ iface MIXER
+ name 'voip_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.181 {
+ iface MIXER
+ name 'voip_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.182 {
+ iface MIXER
+ name 'voip_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.183 {
+ iface MIXER
+ name 'voip_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.184 {
+ iface MIXER
+ name 'voip_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.185 {
+ iface MIXER
+ name 'voip_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.186 {
+ iface MIXER
+ name 'voip_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.187 {
+ iface MIXER
+ name 'voip_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.188 {
+ iface MIXER
+ name 'voip_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.189 {
+ iface MIXER
+ name 'voip_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.190 {
+ iface MIXER
+ name 'voip_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.191 {
+ iface MIXER
+ name 'voip_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.192 {
+ iface MIXER
+ name 'voip_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.193 {
+ iface MIXER
+ name 'voip_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.194 {
+ iface MIXER
+ name 'voip_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.195 {
+ iface MIXER
+ name 'media_loop2_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.196 {
+ iface MIXER
+ name 'media_loop2_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.197 {
+ iface MIXER
+ name 'media_loop2_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.198 {
+ iface MIXER
+ name 'media_loop2_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.199 {
+ iface MIXER
+ name 'media_loop2_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.200 {
+ iface MIXER
+ name 'media_loop2_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.201 {
+ iface MIXER
+ name 'media_loop2_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.202 {
+ iface MIXER
+ name 'media_loop2_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.203 {
+ iface MIXER
+ name 'media_loop2_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.204 {
+ iface MIXER
+ name 'media_loop2_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.205 {
+ iface MIXER
+ name 'media_loop2_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.206 {
+ iface MIXER
+ name 'media_loop2_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.207 {
+ iface MIXER
+ name 'media_loop2_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.208 {
+ iface MIXER
+ name 'media_loop2_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.209 {
+ iface MIXER
+ name 'media_loop2_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.210 {
+ iface MIXER
+ name 'media_loop2_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.211 {
+ iface MIXER
+ name 'media_loop1_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.212 {
+ iface MIXER
+ name 'media_loop1_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.213 {
+ iface MIXER
+ name 'media_loop1_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.214 {
+ iface MIXER
+ name 'media_loop1_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.215 {
+ iface MIXER
+ name 'media_loop1_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.216 {
+ iface MIXER
+ name 'media_loop1_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.217 {
+ iface MIXER
+ name 'media_loop1_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.218 {
+ iface MIXER
+ name 'media_loop1_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.219 {
+ iface MIXER
+ name 'media_loop1_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.220 {
+ iface MIXER
+ name 'media_loop1_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.221 {
+ iface MIXER
+ name 'media_loop1_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.222 {
+ iface MIXER
+ name 'media_loop1_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.223 {
+ iface MIXER
+ name 'media_loop1_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.224 {
+ iface MIXER
+ name 'media_loop1_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.225 {
+ iface MIXER
+ name 'media_loop1_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.226 {
+ iface MIXER
+ name 'media_loop1_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.227 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.228 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.229 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.230 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.231 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.232 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.233 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.234 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.235 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.236 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.237 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.238 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.239 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.240 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.241 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.242 {
+ iface MIXER
+ name 'sprot_loop_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.243 {
+ iface MIXER
+ name 'pcm2_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.244 {
+ iface MIXER
+ name 'pcm2_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.245 {
+ iface MIXER
+ name 'pcm2_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.246 {
+ iface MIXER
+ name 'pcm2_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.247 {
+ iface MIXER
+ name 'pcm2_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.248 {
+ iface MIXER
+ name 'pcm2_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.249 {
+ iface MIXER
+ name 'pcm2_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.250 {
+ iface MIXER
+ name 'pcm2_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.251 {
+ iface MIXER
+ name 'pcm2_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.252 {
+ iface MIXER
+ name 'pcm2_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.253 {
+ iface MIXER
+ name 'pcm2_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.254 {
+ iface MIXER
+ name 'pcm2_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.255 {
+ iface MIXER
+ name 'pcm2_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.256 {
+ iface MIXER
+ name 'pcm2_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.257 {
+ iface MIXER
+ name 'pcm2_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.258 {
+ iface MIXER
+ name 'pcm2_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.259 {
+ iface MIXER
+ name 'pcm1_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.260 {
+ iface MIXER
+ name 'pcm1_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.261 {
+ iface MIXER
+ name 'pcm1_out mix 0 codec_in0'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.262 {
+ iface MIXER
+ name 'pcm1_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.263 {
+ iface MIXER
+ name 'pcm1_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.264 {
+ iface MIXER
+ name 'pcm1_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.265 {
+ iface MIXER
+ name 'pcm1_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.266 {
+ iface MIXER
+ name 'pcm1_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.267 {
+ iface MIXER
+ name 'pcm1_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.268 {
+ iface MIXER
+ name 'pcm1_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.269 {
+ iface MIXER
+ name 'pcm1_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.270 {
+ iface MIXER
+ name 'pcm1_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.271 {
+ iface MIXER
+ name 'pcm1_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.272 {
+ iface MIXER
+ name 'pcm1_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.273 {
+ iface MIXER
+ name 'pcm1_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.274 {
+ iface MIXER
+ name 'pcm1_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.275 {
+ iface MIXER
+ name 'pcm0_out mix 0 modem_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.276 {
+ iface MIXER
+ name 'pcm0_out mix 0 bt_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.277 {
+ iface MIXER
+ name 'pcm0_out mix 0 codec_in0'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.278 {
+ iface MIXER
+ name 'pcm0_out mix 0 codec_in1'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.279 {
+ iface MIXER
+ name 'pcm0_out mix 0 sprot_loop_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.280 {
+ iface MIXER
+ name 'pcm0_out mix 0 media_loop1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.281 {
+ iface MIXER
+ name 'pcm0_out mix 0 media_loop2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.282 {
+ iface MIXER
+ name 'pcm0_out mix 0 sidetone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.283 {
+ iface MIXER
+ name 'pcm0_out mix 0 txspeech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.284 {
+ iface MIXER
+ name 'pcm0_out mix 0 speech_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.285 {
+ iface MIXER
+ name 'pcm0_out mix 0 tone_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.286 {
+ iface MIXER
+ name 'pcm0_out mix 0 voip_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.287 {
+ iface MIXER
+ name 'pcm0_out mix 0 pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.288 {
+ iface MIXER
+ name 'pcm0_out mix 0 pcm1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.289 {
+ iface MIXER
+ name 'pcm0_out mix 0 low_pcm0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.290 {
+ iface MIXER
+ name 'pcm0_out mix 0 fm_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.291 {
+ iface MIXER
+ name 'media1_out mix 0 media0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.292 {
+ iface MIXER
+ name 'media1_out mix 0 media1_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.293 {
+ iface MIXER
+ name 'media1_out mix 0 media2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.294 {
+ iface MIXER
+ name 'media1_out mix 0 media3_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.295 {
+ iface MIXER
+ name 'media0_out mix 0 media0_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.296 {
+ iface MIXER
+ name 'media0_out mix 0 media1_in'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.297 {
+ iface MIXER
+ name 'media0_out mix 0 media2_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.298 {
+ iface MIXER
+ name 'media0_out mix 0 media3_in'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.299 {
+ iface MIXER
+ name 'media0_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.300 {
+ iface MIXER
+ name 'media0_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.301 {
+ iface MIXER
+ name 'media0_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.302 {
+ iface MIXER
+ name 'media1_in gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.303 {
+ iface MIXER
+ name 'media1_in gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.304 {
+ iface MIXER
+ name 'media1_in gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.305 {
+ iface MIXER
+ name 'media2_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.306 {
+ iface MIXER
+ name 'media2_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.307 {
+ iface MIXER
+ name 'media2_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.308 {
+ iface MIXER
+ name 'media3_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.309 {
+ iface MIXER
+ name 'media3_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.310 {
+ iface MIXER
+ name 'media3_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.311 {
+ iface MIXER
+ name 'pcm0_in gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.312 {
+ iface MIXER
+ name 'pcm0_in gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.313 {
+ iface MIXER
+ name 'pcm0_in gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.314 {
+ iface MIXER
+ name 'pcm1_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.315 {
+ iface MIXER
+ name 'pcm1_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.316 {
+ iface MIXER
+ name 'pcm1_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.317 {
+ iface MIXER
+ name 'low_pcm0_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.318 {
+ iface MIXER
+ name 'low_pcm0_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.319 {
+ iface MIXER
+ name 'low_pcm0_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.320 {
+ iface MIXER
+ name 'pcm1_out gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.321 {
+ iface MIXER
+ name 'pcm1_out gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.322 {
+ iface MIXER
+ name 'pcm1_out gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.323 {
+ iface MIXER
+ name 'pcm2_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.324 {
+ iface MIXER
+ name 'pcm2_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.325 {
+ iface MIXER
+ name 'pcm2_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.326 {
+ iface MIXER
+ name 'voip_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.327 {
+ iface MIXER
+ name 'voip_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.328 {
+ iface MIXER
+ name 'voip_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.329 {
+ iface MIXER
+ name 'voip_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.330 {
+ iface MIXER
+ name 'voip_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.331 {
+ iface MIXER
+ name 'voip_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.332 {
+ iface MIXER
+ name 'tone_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.333 {
+ iface MIXER
+ name 'tone_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.334 {
+ iface MIXER
+ name 'tone_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.335 {
+ iface MIXER
+ name 'aware_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.336 {
+ iface MIXER
+ name 'aware_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.337 {
+ iface MIXER
+ name 'aware_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.338 {
+ iface MIXER
+ name 'vad_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.339 {
+ iface MIXER
+ name 'vad_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.340 {
+ iface MIXER
+ name 'vad_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.341 {
+ iface MIXER
+ name 'hf_sns_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.342 {
+ iface MIXER
+ name 'hf_sns_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.343 {
+ iface MIXER
+ name 'hf_sns_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.344 {
+ iface MIXER
+ name 'hf_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.345 {
+ iface MIXER
+ name 'hf_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.346 {
+ iface MIXER
+ name 'hf_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.347 {
+ iface MIXER
+ name 'speech_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.348 {
+ iface MIXER
+ name 'speech_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.349 {
+ iface MIXER
+ name 'speech_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.350 {
+ iface MIXER
+ name 'txspeech_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.351 {
+ iface MIXER
+ name 'txspeech_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.352 {
+ iface MIXER
+ name 'txspeech_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.353 {
+ iface MIXER
+ name 'rxspeech_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.354 {
+ iface MIXER
+ name 'rxspeech_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.355 {
+ iface MIXER
+ name 'rxspeech_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.356 {
+ iface MIXER
+ name 'speech_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.357 {
+ iface MIXER
+ name 'speech_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.358 {
+ iface MIXER
+ name 'speech_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.359 {
+ iface MIXER
+ name 'codec_in0 gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.360 {
+ iface MIXER
+ name 'codec_in0 gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.361 {
+ iface MIXER
+ name 'codec_in0 gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.362 {
+ iface MIXER
+ name 'codec_in1 gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.363 {
+ iface MIXER
+ name 'codec_in1 gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.364 {
+ iface MIXER
+ name 'codec_in1 gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.365 {
+ iface MIXER
+ name 'codec_out0 gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.366 {
+ iface MIXER
+ name 'codec_out0 gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.367 {
+ iface MIXER
+ name 'codec_out0 gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.368 {
+ iface MIXER
+ name 'codec_out1 gain 0 rampduration'
+ value 50
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.369 {
+ iface MIXER
+ name 'codec_out1 gain 0 mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.370 {
+ iface MIXER
+ name 'codec_out1 gain 0 volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.371 {
+ iface MIXER
+ name 'bt_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.372 {
+ iface MIXER
+ name 'bt_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.373 {
+ iface MIXER
+ name 'bt_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.374 {
+ iface MIXER
+ name 'fm_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.375 {
+ iface MIXER
+ name 'fm_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.376 {
+ iface MIXER
+ name 'fm_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.377 {
+ iface MIXER
+ name 'bt_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.378 {
+ iface MIXER
+ name 'bt_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.379 {
+ iface MIXER
+ name 'bt_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.380 {
+ iface MIXER
+ name 'fm_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.381 {
+ iface MIXER
+ name 'fm_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.382 {
+ iface MIXER
+ name 'fm_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.383 {
+ iface MIXER
+ name 'modem_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.384 {
+ iface MIXER
+ name 'modem_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.385 {
+ iface MIXER
+ name 'modem_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.386 {
+ iface MIXER
+ name 'modem_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.387 {
+ iface MIXER
+ name 'modem_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.388 {
+ iface MIXER
+ name 'modem_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.389 {
+ iface MIXER
+ name 'media_loop1_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.390 {
+ iface MIXER
+ name 'media_loop1_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.391 {
+ iface MIXER
+ name 'media_loop1_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.392 {
+ iface MIXER
+ name 'media_loop2_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.393 {
+ iface MIXER
+ name 'media_loop2_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.394 {
+ iface MIXER
+ name 'media_loop2_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.395 {
+ iface MIXER
+ name 'sprot_loop_out gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.396 {
+ iface MIXER
+ name 'sprot_loop_out gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.397 {
+ iface MIXER
+ name 'sprot_loop_out gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.398 {
+ iface MIXER
+ name 'media0_in volume 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.399 {
+ iface MIXER
+ name 'media0_in volume 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.400 {
+ iface MIXER
+ name 'media0_in volume 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.401 {
+ iface MIXER
+ name 'sidetone_in gain 0 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.402 {
+ iface MIXER
+ name 'sidetone_in gain 0 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.403 {
+ iface MIXER
+ name 'sidetone_in gain 0 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.404 {
+ iface MIXER
+ name 'speech_out gain 1 rampduration'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '5 - 5000'
+ }
+ }
+ control.405 {
+ iface MIXER
+ name 'speech_out gain 1 mute'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.406 {
+ iface MIXER
+ name 'speech_out gain 1 volume'
+ value.0 -1440
+ value.1 -1440
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '-1440 - 360'
+ dbmin -14400
+ dbmax 3600
+ dbvalue.0 -14400
+ dbvalue.1 -14400
+ }
+ }
+ control.407 {
+ iface MIXER
+ name 'media_loop1_out fir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 138
+ }
+ }
+ control.408 {
+ iface MIXER
+ name 'media_loop1_out iir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.409 {
+ iface MIXER
+ name 'media_loop1_out mdrp 0 params'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 76
+ }
+ }
+ control.410 {
+ iface MIXER
+ name 'media_loop2_out fir 0 params'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 272
+ }
+ }
+ control.411 {
+ iface MIXER
+ name 'media_loop2_out iir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.412 {
+ iface MIXER
+ name 'media_loop2_out mdrp 0 params'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 76
+ }
+ }
+ control.413 {
+ iface MIXER
+ name 'aware_out fir 0 params'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 272
+ }
+ }
+ control.414 {
+ iface MIXER
+ name 'aware_out iir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.415 {
+ iface MIXER
+ name 'aware_out aware 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.416 {
+ iface MIXER
+ name 'vad_out fir 0 params'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 272
+ }
+ }
+ control.417 {
+ iface MIXER
+ name 'vad_out iir 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.418 {
+ iface MIXER
+ name 'sprot_loop_out lpro 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 192
+ }
+ }
+ control.419 {
+ iface MIXER
+ name 'codec_in0 dcr 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.420 {
+ iface MIXER
+ name 'codec_in1 dcr 0 params'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 300
+ }
+ }
+ control.421 {
+ iface MIXER
+ name 'speech_out ul_module 0 params fir_speech'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 136
+ }
+ }
+ control.422 {
+ iface MIXER
+ name 'speech_out ul_module 0 params fir_hf_sns'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 136
+ }
+ }
+ control.423 {
+ iface MIXER
+ name 'speech_out ul_module 0 params iir_speech'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.424 {
+ iface MIXER
+ name 'speech_out ul_module 0 params iir_hf_sns'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.425 {
+ iface MIXER
+ name 'speech_out ul_module 0 params aec'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 640
+ }
+ }
+ control.426 {
+ iface MIXER
+ name 'speech_out ul_module 0 params nr'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 38
+ }
+ }
+ control.427 {
+ iface MIXER
+ name 'speech_out ul_module 0 params agc'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 58
+ }
+ }
+ control.428 {
+ iface MIXER
+ name 'speech_out ul_module 0 params biquad'
+ value '00000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 22
+ }
+ }
+ control.429 {
+ iface MIXER
+ name 'speech_out ul_module 0 params compr'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 36
+ }
+ }
+ control.430 {
+ iface MIXER
+ name 'speech_out ul_module 0 params sns'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 324
+ }
+ }
+ control.431 {
+ iface MIXER
+ name 'speech_out ul_module 0 params ser'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 42
+ }
+ }
+ control.432 {
+ iface MIXER
+ name 'speech_out ul_module 0 params cni'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.433 {
+ iface MIXER
+ name 'speech_out ul_module 0 params ref'
+ value '000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 24
+ }
+ }
+ control.434 {
+ iface MIXER
+ name 'speech_out ul_module 0 params delay'
+ value '000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 6
+ }
+ }
+ control.435 {
+ iface MIXER
+ name 'speech_out ul_module 0 params bmf'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 264
+ }
+ }
+ control.436 {
+ iface MIXER
+ name 'speech_out ul_module 0 params dnr'
+ value '000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 18
+ }
+ }
+ control.437 {
+ iface MIXER
+ name 'speech_in dl_module 0 params ana'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 52
+ }
+ }
+ control.438 {
+ iface MIXER
+ name 'speech_in dl_module 0 params fir'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 136
+ }
+ }
+ control.439 {
+ iface MIXER
+ name 'speech_in dl_module 0 params iir'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.440 {
+ iface MIXER
+ name 'speech_in dl_module 0 params nr'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 38
+ }
+ }
+ control.441 {
+ iface MIXER
+ name 'speech_in dl_module 0 params biquad'
+ value '00000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 22
+ }
+ }
+ control.442 {
+ iface MIXER
+ name 'speech_in dl_module 0 params compr'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 36
+ }
+ }
+ control.443 {
+ iface MIXER
+ name 'speech_in dl_module 0 params cni'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 48
+ }
+ }
+ control.444 {
+ iface MIXER
+ name 'speech_in dl_module 0 params bwx'
+ value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 54
+ }
+ }
+ control.445 {
+ iface MIXER
+ name 'speech_in dl_module 0 params gmm'
+ value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 586
+ }
+ }
+ control.446 {
+ iface MIXER
+ name 'speech_in dl_module 0 params glc'
+ value '000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 18
+ }
+ }
+ control.447 {
+ iface MIXER
+ name 'codec_out interleaver slot 0'
+ value codec_out0_0
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.448 {
+ iface MIXER
+ name 'codec_out interleaver slot 1'
+ value codec_out0_1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.449 {
+ iface MIXER
+ name 'codec_out interleaver slot 2'
+ value codec_out1_0
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.450 {
+ iface MIXER
+ name 'codec_out interleaver slot 3'
+ value codec_out1_1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 codec_out0_0
+ item.2 codec_out0_1
+ item.3 codec_out1_0
+ item.4 codec_out1_1
+ }
+ }
+ control.451 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in0_0'
+ value 'slot 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.452 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in0_1'
+ value 'slot 1'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.453 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in1_0'
+ value 'slot 2'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.454 {
+ iface MIXER
+ name 'codec_in deinterleaver codec_in1_1'
+ value 'slot 3'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 none
+ item.1 'slot 0'
+ item.2 'slot 1'
+ item.3 'slot 2'
+ item.4 'slot 3'
+ }
+ }
+ control.455 {
+ iface MIXER
+ name 'domain voice mode 0'
+ value narrowband
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 narrowband
+ item.1 wideband
+ }
+ }
+ control.456 {
+ iface MIXER
+ name 'domain bt mode 0'
+ value narrowband
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 narrowband
+ item.1 wideband
+ }
+ }
+ control.457 {
+ iface MIXER
+ name 'sst debug byte control'
+ value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 512
+ }
+ }
+ control.458 {
+ iface MIXER
+ name 'probe out0 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.459 {
+ iface MIXER
+ name 'probe out1 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.460 {
+ iface MIXER
+ name 'probe out2 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.461 {
+ iface MIXER
+ name 'probe out3 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.462 {
+ iface MIXER
+ name 'probe out4 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.463 {
+ iface MIXER
+ name 'probe out5 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.464 {
+ iface MIXER
+ name 'probe out6 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.465 {
+ iface MIXER
+ name 'probe out7 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.466 {
+ iface MIXER
+ name 'probe in0 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.467 {
+ iface MIXER
+ name 'probe in1 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.468 {
+ iface MIXER
+ name 'probe in2 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.469 {
+ iface MIXER
+ name 'probe in3 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.470 {
+ iface MIXER
+ name 'probe in4 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.471 {
+ iface MIXER
+ name 'probe in5 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.472 {
+ iface MIXER
+ name 'probe in6 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+ control.473 {
+ iface MIXER
+ name 'probe in7 connection'
+ value 'media0_in gain'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'media0_in gain'
+ item.1 'media1_in gain'
+ item.2 'media2_in gain'
+ item.3 'media3_in gain'
+ item.4 'pcm0_in gain'
+ item.5 'pcm1_in gain'
+ item.6 'pcm1_out gain'
+ item.7 'pcm2_out gain'
+ item.8 'voip_in gain'
+ item.9 'voip_out gain'
+ item.10 'aware_out gain'
+ item.11 'vad_out gain'
+ item.12 'hf_sns_out gain'
+ item.13 'hf_out gain'
+ item.14 'speech_out gain'
+ item.15 'txspeech_in gain'
+ item.16 'rxspeech_out gain'
+ item.17 'speech_in gain'
+ item.18 'media_loop1_out gain'
+ item.19 'media_loop2_out gain'
+ item.20 'tone_in gain'
+ item.21 'codec_out0 gain'
+ item.22 'codec_out1 gain'
+ item.23 'bt_out gain'
+ item.24 'fm_out gain'
+ item.25 'modem_out gain'
+ item.26 'codec_in0 gain'
+ item.27 'codec_in1 gain'
+ item.28 'bt_in gain'
+ item.29 'fm_in gain'
+ item.30 'modem_in gain'
+ }
+ }
+}
diff --git a/meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend b/meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend
new file mode 100644
index 0000000..939e988
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend
@@ -0,0 +1,23 @@
+# Disable features that have potential commercial licensing restrictions
+EXTRA_OECONF += "\
+ --disable-encoder=libmp3lame \
+ --disable-decoder=mp3 \
+ --disable-decoder=mp3adu \
+ --disable-decoder=mp3adufloat \
+ --disable-decoder=mp3float \
+ --disable-decoder=mp3on4 \
+ --disable-decoder=mp3on4float \
+ --disable-muxer=mp3 \
+ --disable-demuxer=mp3 \
+ --disable-bsf=mp3_header_decompress \
+ --disable-bsf=mp3_header_compress \
+ \
+ --disable-encoder=mpeg2video \
+ --disable-decoder=mpeg2video \
+ --disable-hwaccel=mpeg2_vaapi\
+ --disable-hwaccel=mpeg2_dxva2\
+ --disable-muxer=mpeg2dvd \
+ --disable-muxer=mpeg2svcd \
+ --disable-muxer=mpeg2video \
+ --disable-muxer=mpeg2vob \
+"
diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb
new file mode 100644
index 0000000..889bb95
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb
@@ -0,0 +1,22 @@
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see COPYING.MIT)
+
+DESCRIPTION = "Preconfigured mplayer preferences"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+PV = "0.0.1"
+
+SRC_URI = "file://mplayer.conf"
+
+# Yes, really /usr/etc!!!
+do_install() {
+ install -d "${D}/usr${sysconfdir}/mplayer"
+
+ install -m 0644 ${WORKDIR}/mplayer.conf "${D}/usr${sysconfdir}/mplayer"
+}
+
+FILES_${PN} = "/usr${sysconfdir}/mplayer"
+
+inherit allarch
diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
new file mode 100644
index 0000000..37ad65f
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
@@ -0,0 +1,15 @@
+
+# You probably shouldn't touch these
+ac=mad,
+ao=alsa,
+
+# Required on SL-Cxxxx for correct rotation in the *VT*,
+# breaks rotation in X!
+# vf=rotate=1
+
+# Enable fullscreen display by default
+# fs=true
+
+# Drop frames to keep audio and video in sync
+framedrop=true
+
diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch
new file mode 100644
index 0000000..7b290b5
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch
@@ -0,0 +1,16 @@
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff --git a/Makefile b/Makefile
+index 6013ca3..28c6383 100644
+--- a/Makefile
++++ b/Makefile
+@@ -600,7 +602,7 @@ mplayer$(EXESUF):
+ $(CC) -o $@ $^ $(EXTRALIBS)
+
+ codec-cfg$(EXESUF): codec-cfg.c codec-cfg.h
+- $(HOST_CC) -O -DCODECS2HTML -I. -o $@ $<
++ $(BUILD_CC) -O -DCODECS2HTML -I. -Iffmpeg -o $@ $<
+
+ codecs.conf.h: codec-cfg$(EXESUF) etc/codecs.conf
+ ./$^ > $@
diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb
new file mode 100644
index 0000000..820bffa
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb
@@ -0,0 +1,161 @@
+DESCRIPTION = "Open Source multimedia player."
+SECTION = "multimedia"
+HOMEPAGE = "http://www.mplayerhq.hu/"
+DEPENDS = "libtheora ffmpeg zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame pulseaudio \
+ ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad liba52 lame', d)}"
+
+RDEPENDS_${PN} = "mplayer-common"
+PROVIDES = "mplayer"
+RPROVIDES_${PN} = "mplayer"
+RCONFLICTS_${PN} = "mplayer"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "git://repo.or.cz/mplayer.git;protocol=git;branch=master \
+ file://cross.compile.codec-cfg.patch \
+"
+
+SRCREV = "e3f5043233336d8b4b0731c6a8b42a8fda5535ac"
+
+ARM_INSTRUCTION_SET = "arm"
+
+PV = "2.0+gitr${SRCPV}"
+PR = "r8"
+
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} = "${bindir}/mplayer ${libdir} /usr/etc/mplayer/"
+CONFFILES_${PN} += "/usr/etc/mplayer/input.conf \
+ /usr/etc/mplayer/example.conf \
+ /usr/etc/mplayer/codecs.conf \
+ "
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " \
+ --prefix=/usr \
+ --mandir=${mandir} \
+ --target=${SIMPLE_TARGET_SYS} \
+ \
+ --disable-fontconfig \
+ --disable-libass \
+ --disable-lirc \
+ --disable-lircc \
+ --disable-joystick \
+ --disable-vm \
+ --disable-xf86keysym \
+ --disable-tv \
+ --disable-tv-v4l1 \
+ --disable-tv-v4l2 \
+ --disable-tv-bsdbt848 \
+ --enable-rtc \
+ --disable-networking \
+ --disable-smb \
+ --disable-live \
+ --disable-dvdnav \
+ --disable-dvdread \
+ --disable-dvdread-internal \
+ --disable-libdvdcss-internal \
+ --disable-cdparanoia \
+ --enable-freetype \
+ --disable-sortsub \
+ --disable-fribidi \
+ --disable-enca \
+ --disable-ftp \
+ --disable-vstream \
+ \
+ --disable-gif \
+ --disable-png \
+ --disable-jpeg \
+ --disable-libcdio \
+ --disable-qtx \
+ --disable-xanim \
+ --disable-real \
+ --disable-xvid \
+ \
+ --disable-mpg123 \
+ --disable-speex \
+ --enable-theora \
+ --disable-ladspa \
+ --disable-libdv \
+ --disable-mad \
+ --disable-xmms \
+ --disable-musepack \
+ \
+ --disable-gl \
+ --disable-vesa \
+ --disable-svga \
+ --disable-sdl \
+ --disable-aa \
+ --disable-caca \
+ --disable-ggi \
+ --disable-ggiwmh \
+ --disable-directx \
+ --disable-dxr3 \
+ --disable-dvb \
+ --disable-mga \
+ --disable-xmga \
+ --disable-xv \
+ --disable-vm \
+ --disable-xinerama \
+ --disable-x11 \
+ --disable-fbdev \
+ --disable-3dfx \
+ --disable-tdfxfb \
+ --disable-s3fb \
+ --disable-directfb \
+ --disable-bl \
+ --disable-tdfxvid \
+ --disable-tga \
+ --disable-pnm \
+ --disable-md5sum \
+ \
+ --disable-alsa \
+ --disable-ossaudio \
+ --disable-arts \
+ --disable-esd \
+ --enable-pulse \
+ --disable-jack \
+ --disable-openal \
+ --disable-nas \
+ --disable-sgiaudio \
+ --disable-sunaudio \
+ --disable-win32waveout \
+ --enable-select \
+ \
+ --extra-libs=' -lstdc++ -lvorbis ' \
+"
+
+EXTRA_OECONF_append_armv6 = " --enable-armv6"
+EXTRA_OECONF_append_armv7a = " --enable-armv6 --enable-neon"
+
+FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math"
+BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
+
+CFLAGS_append = " -I${S}/libdvdread4 "
+
+do_configure() {
+ sed -i 's|/usr/include|${STAGING_INCDIR}|g' ${S}/configure
+ sed -i 's|/usr/lib|${STAGING_LIBDIR}|g' ${S}/configure
+ sed -i 's|/usr/\S*include[\w/]*||g' ${S}/configure
+ sed -i 's|/usr/\S*lib[\w/]*||g' ${S}/configure
+ sed -i 's|_install_strip="-s"|_install_strip=""|g' ${S}/configure
+ sed -i 's|HOST_CC|BUILD_CC|' ${S}/Makefile
+
+ export SIMPLE_TARGET_SYS="$(echo ${TARGET_SYS} | sed s:${TARGET_VENDOR}::g)"
+ ./configure ${EXTRA_OECONF}
+}
+
+do_compile () {
+ oe_runmake
+}
+
+do_install_append() {
+ install -d ${D}/usr/etc/mplayer
+ install ${S}/etc/input.conf ${D}/usr/etc/mplayer/
+ install ${S}/etc/example.conf ${D}/usr/etc/mplayer/
+ install ${S}/etc/codecs.conf ${D}/usr/etc/mplayer/
+}
diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service b/meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service
new file mode 100644
index 0000000..0f43b1f
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=PulseAudio Sound System
+After=alsa-restore.service
+
+[Service]
+BusName=org.pulseaudio.Server
+ExecStart=/usr/bin/pulseaudio --system --resample-method=src-sinc-fastest
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa b/meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa
new file mode 100644
index 0000000..77e5a35
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa
@@ -0,0 +1,66 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio 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 Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+# This startup script is used only if PulseAudio is started in system
+# mode.
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+.else
+### Use the static hardware detection module (for systems that lack udev/hal support)
+load-module module-detect
+.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Load bluetooth modules
+.ifexists module-bluetooth-policy.so
+load-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluez5-discover.so
+load-module module-bluez5-discover
+.endif
+
+### Automatically restore the volume of streams and devices
+load-module module-stream-restore
+load-module module-device-restore
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### Enable positioned event sounds
+load-module module-position-event-sounds \ No newline at end of file
diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb
new file mode 100644
index 0000000..e8e10b5
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Pulseaudio systemd service"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd useradd
+
+DEPENDS = "pulseaudio"
+
+SRC_URI += "\
+ file://pulseaudio.service \
+ "
+
+SYSTEMD_SERVICE_${PN} = "pulseaudio.service"
+
+FILES_${PN} = " \
+ ${systemd_unitdir} \
+"
+
+USERADD_PACKAGES = "pulseaudio-service"
+GROUPMEMS_PARAM_pulseaudio-service = " --add root --group audio"
+
+do_install_append() {
+ if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/pulseaudio.service ${D}/${systemd_unitdir}/system/
+ fi
+}
+
diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
new file mode 100644
index 0000000..7900344
--- /dev/null
+++ b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
@@ -0,0 +1,22 @@
+# Overlay the pulseaudio recipe to embed bluetooth modules for A2DP
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+SRC_URI += "\
+ file://system.pa \
+ "
+
+PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
+ ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+ ${@base_contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
+ ${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+
+RDEPENDS_pulseaudio-server += " \
+ pulseaudio-module-loopback \
+ pulseaudio-module-bluez5-discover \
+ pulseaudio-module-bluez5-device \
+ pulseaudio-module-bluetooth-policy"
+
+do_install_append() {
+ install -m 0644 ${WORKDIR}/system.pa ${D}/${sysconfdir}/pulse/
+}
diff --git a/meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb b/meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb
new file mode 100644
index 0000000..9fff7d2
--- /dev/null
+++ b/meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Blinks the Edison LED"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+SRC_URI = "file://blink-led"
+SRC_URI += "file://blink-led.service"
+
+S = "${WORKDIR}"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 blink-led ${D}${bindir}
+
+ # Copy service file
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/blink-led.service ${D}/${systemd_unitdir}/system
+}
+
+FILES_${PN} += "${base_libdir}/systemd/system/blink-led.service"
+FILES_${PN} += "${bindir}/blink-led"
diff --git a/meta-edison-distro/recipes-support/blink-led/files/blink-led b/meta-edison-distro/recipes-support/blink-led/files/blink-led
new file mode 100755
index 0000000..f8b884f
--- /dev/null
+++ b/meta-edison-distro/recipes-support/blink-led/files/blink-led
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+
+#
+# Edison LED blinker
+#
+# Copyright (c) 2014, Intel Corporation.
+# Fabien Chereau <fabien.chereau@intel.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+# This is a very poor implementation as it uses subprocesses for init
+
+import subprocess
+import time
+import argparse
+import signal
+import sys
+
+initial_led_state = "high"
+
+def write_led(value):
+ with open("/sys/class/gpio/gpio40/direction","w") as lf:
+ lf.write(value)
+
+def blink_once():
+ write_led("low")
+ time.sleep(1./args.frequency*args.duty_cycle)
+ write_led("high")
+ time.sleep(1./args.frequency*(1.-args.duty_cycle))
+
+def deinit_led_gpio():
+ # Revert to default state with LED activated
+ write_led(initial_led_state)
+
+ # Deinit LED GPIO
+ subprocess.call("""
+ echo 40 >/sys/class/gpio/unexport
+ echo 214 >/sys/class/gpio/unexport
+ echo 243 >/sys/class/gpio/unexport
+ echo 261 >/sys/class/gpio/unexport
+ """, shell=True)
+
+def signal_term_handler(signal, frame):
+ print 'Signal intercepted: de-initing LED GPIOs'
+ deinit_led_gpio()
+ sys.exit(0)
+
+
+parser = argparse.ArgumentParser(description='Blink the Edison Arduino board LED.')
+parser.add_argument('--frequency', type=float, default=4, help='blink frequency in Hz')
+parser.add_argument('--duration', type=float, default=-1, help='duration of the blink in seconds. Negative value means no timeout, i.e. it will stop when the program is killed.')
+parser.add_argument('--duty_cycle', type=float, default=0.5, help='duty cycle between 0 and 1')
+
+args = parser.parse_args()
+
+# Allows to quit cleanly with CRTL+C or SIGTERM (systemd use SIGTERM to kill a service by default)
+signal.signal(signal.SIGTERM, signal_term_handler)
+signal.signal(signal.SIGINT, signal_term_handler)
+
+# Init GPIO mux for LED control
+subprocess.call("""
+echo 40 >/sys/class/gpio/export
+echo 214 >/sys/class/gpio/export
+echo 243 >/sys/class/gpio/export
+echo 261 >/sys/class/gpio/export
+echo high >/sys/class/gpio/gpio214/direction
+echo mode0 > /sys/kernel/debug/gpio_debug/gpio40/current_pinmux
+echo low >/sys/class/gpio/gpio243/direction
+echo high >/sys/class/gpio/gpio261/direction
+echo low >/sys/class/gpio/gpio214/direction""", shell=True)
+
+# Save current LED value for reverting to proper state at exit
+try:
+ lf = open("/sys/class/gpio/gpio40/value","r")
+ v = lf.read()
+ lf.close()
+ if v[0] == '0':
+ initial_led_state = "low"
+ else:
+ initial_led_state = "high"
+except:
+ print "Can't get current LED state"
+
+# Blink LED
+if args.duration >= 0:
+ for i in range(0, int(args.duration*args.frequency)):
+ blink_once()
+else:
+ while True:
+ blink_once()
+
+deinit_led_gpio()
+
diff --git a/meta-edison-distro/recipes-support/blink-led/files/blink-led.service b/meta-edison-distro/recipes-support/blink-led/files/blink-led.service
new file mode 100644
index 0000000..3dcb2ab
--- /dev/null
+++ b/meta-edison-distro/recipes-support/blink-led/files/blink-led.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Edison Arduino board LED Blinker
+
+[Service]
+ExecStart=/usr/bin/blink-led
+Restart=on-failure
+
+[Install]
+WantedBy=basic.target
+
diff --git a/meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb b/meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb
new file mode 100644
index 0000000..cc21638
--- /dev/null
+++ b/meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Cleanjournal tool. Remove all corrupted journald entries at startup."
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+
+SRC_URI += "file://cleanjournal.service"
+SRC_URI += "file://clean_journal.sh"
+
+SYSTEMD_SERVICE_${PN} = "cleanjournal.service"
+
+RDEPENDS_${PN} = "systemd"
+DEPENDS = "systemd"
+inherit systemd
+
+do_install() {
+ # install service file
+ install -d ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/cleanjournal.service ${D}${systemd_unitdir}/system
+
+ # install cleanjournal script
+ install -d ${D}${sbindir}
+ install -c -m 0755 ${WORKDIR}/clean_journal.sh ${D}${sbindir}
+}
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
+
diff --git a/meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh b/meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh
new file mode 100644
index 0000000..5758d09
--- /dev/null
+++ b/meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#
+# Cleanjournal script
+#
+# Copyright (c) 2014, Intel Corporation.
+# Fabien Rodriguez <fabienx.rodriguez@intel.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+#
+# This script checks if the remaining space in root partition is lower than 10%.
+# In that case, the corrupted journald entries (ended by '~') will be deleted
+# one by one until remaining space becomes greater or equal to 10%.
+# At each boot, the script is launched by systemd at startup.
+#
+
+# max allowed free space is 10%
+max_allowed_free_space=10
+
+# check remaining space and update clean_journal_needed variable
+check_free_space() {
+ current_free_space=$(df -h | grep /dev/root | awk '{print 100 - $5}' | sed 's/%//')
+ if [ "$current_free_space" -lt "$max_allowed_free_space" ]; then
+ clean_journal_needed=true
+ else
+ clean_journal_needed=false
+ fi
+}
+
+check_free_space
+if [ "$clean_journal_needed" = true ]; then
+ # delete each journald corrupted entry
+ # until remaining space becomes greater than 10%
+ for corrupted_journal_file in $(find /var/log/journal/ -name '*~'); do
+ rm "$corrupted_journal_file"
+ check_free_space
+ if [ "$clean_journal_needed" = false ]; then
+ break
+ fi
+ done
+fi
+
diff --git a/meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service b/meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service
new file mode 100644
index 0000000..ab704f3
--- /dev/null
+++ b/meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Cleanjournal service
+
+[Service]
+ExecStart=/usr/sbin/clean_journal.sh
+Restart=no
+
+[Install]
+WantedBy=basic.target
+
diff --git a/meta-edison-distro/recipes-support/crashlog/crashlog.bb b/meta-edison-distro/recipes-support/crashlog/crashlog.bb
new file mode 100644
index 0000000..2ef10ce
--- /dev/null
+++ b/meta-edison-distro/recipes-support/crashlog/crashlog.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Crashlog tool. Retrieve last saved kernel message in case of crash"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+
+SRC_URI += "file://crashlog.service"
+SRC_URI += "file://retrieve_crashlog.sh"
+
+SYSTEMD_SERVICE_${PN} = "crashlog.service"
+
+RDEPENDS_${PN} = "systemd"
+DEPENDS = "systemd"
+inherit systemd
+
+do_install() {
+ # install service file
+ install -d ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/crashlog.service ${D}${systemd_unitdir}/system
+
+ # install crashlog script
+ install -d ${D}${sbindir}
+ install -c -m 0755 ${WORKDIR}/retrieve_crashlog.sh ${D}${sbindir}
+}
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
+
diff --git a/meta-edison-distro/recipes-support/crashlog/files/crashlog.service b/meta-edison-distro/recipes-support/crashlog/files/crashlog.service
new file mode 100644
index 0000000..a2c7aab
--- /dev/null
+++ b/meta-edison-distro/recipes-support/crashlog/files/crashlog.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Crashlog service
+
+[Service]
+ExecStart=/usr/sbin/retrieve_crashlog.sh
+Restart=no
+
+[Install]
+WantedBy=basic.target
+
diff --git a/meta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh b/meta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh
new file mode 100755
index 0000000..a7f007c
--- /dev/null
+++ b/meta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+#
+# Crashlog script
+#
+# Copyright (c) 2014, Intel Corporation.
+# Simon Desfarges <simonx.desfarges@intel.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+#
+# This script automatically gather kernel logs in case of crashing.
+# At each boot, the script is launched by systemd at startup.
+# It detects the boot reason and in case of watchdog reboot
+# (saying the platform hanged) the script will save the kernel
+# log into a file named crashlog_xxxx.
+#
+
+ipanic_console_path=/proc/emmc_ipanic_console
+crashlog_path=/home/root
+
+# line containing 'WAKESRC' looks like:
+# 'Jan 01 00:00:12 edison kernel: [BOOT] WAKESRC=[real reset] (osnib)'
+# wakesrc is the 4th field with [ and ] separators
+# List of available wake sources is in driver/platform/x86/intel_scu_ipcutil.c
+
+wakesrc=$(journalctl -k -b -0 | grep WAKESRC | awk -F'[][]' '{print $4}')
+
+# any watchdog boot implies a crash
+tmp=$(echo -n "${wakesrc}" | grep watchdog)
+if [ -n "${tmp}" ]; then
+ # get the last sequence number (ie for crashlog_00001, get the 1)
+ last_sequence_number=$(ls ${crashlog_path}/crashlog_* | tail -1 | awk -F_ '{print $NF}' | awk -F. '{print $NR}')
+ if [ -z $last_sequence_number ]; then
+ last_sequence_number="0"
+ fi
+
+ new_sequence_number=$(expr ${last_sequence_number} + 1)
+ new_name=$(printf "crashlog_%05d" $new_sequence_number)
+
+ # create working directory
+ mkdir ${crashlog_path}/${new_name}
+
+ # write crashfile
+ crashfile_path=${crashlog_path}/${new_name}/crashfile
+
+ event="CRASH"
+ manufacturer="Intel Corporation"
+ product_name=$(cat /factory/hardware_model)
+ version=$(cat /factory/hardware_version)
+ serial_number=$(cat /factory/serial_number)
+ linux_version=$(uname -a)
+ build_version=$(cat /etc/version)
+ date=$(date)
+
+ echo "EVENT=${event}" > ${crashfile_path}
+ echo "Manufacturer : ${manufacturer}" >> ${crashfile_path}
+ echo "Product name : ${product_name}" >> ${crashfile_path}
+ echo "Version : ${version}" >> ${crashfile_path}
+ echo "Serial Number : ${serial_number}" >> ${crashfile_path}
+ echo "Linux version : ${linux_version}" >> ${crashfile_path}
+ echo "Build version : ${build_version}" >> ${crashfile_path}
+ echo "Date : ${date}" >> ${crashfile_path}
+ echo -e "Wake source : ${wakesrc}" >> ${crashfile_path}
+
+ # write full journal binary & logs from previous boot
+ journalctl -b -1 -o short-monotonic > ${crashlog_path}/${new_name}/journal_logs
+ journalctl -b -1 -o export > ${crashlog_path}/${new_name}/journal_binary
+
+ # write panic trace
+ if [ -e ${ipanic_console_path} ]; then
+ cat ${ipanic_console_path} > ${crashlog_path}/${new_name}/panic
+ echo clear > ${ipanic_console_path}
+ fi
+
+ # create archive and clear folder
+ tar -zcf ${crashlog_path}/${new_name}.tar.gz -C ${crashlog_path} ${new_name}
+ rm -rf ${crashlog_path}/${new_name}
+
+fi
+
diff --git a/meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.bin b/meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.bin
new file mode 100644
index 0000000..dcf0544
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.bin
Binary files differ
diff --git a/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service
new file mode 100644
index 0000000..0057ab6
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Daemon to load edison mcu app binary
+After=syslog.target
+
+[Service]
+ExecStart=/etc/intel_mcu/mcu_fw_loader.sh
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh
new file mode 100644
index 0000000..734352d
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+#author: JiuJin Hong (jiujinx.hong@intel.com)
+if [ ! -d "/sys/devices/platform/intel_mcu" ];then
+ exit
+fi
+
+if [ ! -f "/lib/firmware/intel_mcu.bin" ];then
+ exit
+fi
+
+echo "load mcu app" > /sys/devices/platform/intel_mcu/control
+
diff --git a/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb
new file mode 100644
index 0000000..eafb813
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "This is edison mcu fw binary."
+HOMEPAGE = "http://www.intel.com"
+LICENSE = "CLOSED"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+SRC_URI = "file://intel_mcu.bin"
+
+S = "${WORKDIR}"
+
+do_install () {
+ install -v -d ${D}/${base_libdir}/firmware/
+ install -m 644 intel_mcu.bin ${D}/${base_libdir}/firmware/
+}
+
+FILES_${PN} = "${base_libdir}/firmware/"
+
diff --git a/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb
new file mode 100644
index 0000000..a48aa10
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "This is intel mcu app download daemon."
+HOMEPAGE = "http://www.intel.com"
+LICENSE = "CLOSED"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+SRC_URI = "file://mcu_fw_loader.service \
+ file://mcu_fw_loader.sh"
+
+SYSTEMD_SERVICE_${PN} = "mcu_fw_loader.service"
+
+S = "${WORKDIR}"
+
+inherit systemd
+
+do_install () {
+ install -d ${D}${sysconfdir}/intel_mcu/
+ install -m 0755 mcu_fw_loader.sh ${D}${sysconfdir}/intel_mcu/
+
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 mcu_fw_loader.service ${D}${systemd_unitdir}/system/
+}
+
diff --git a/meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.bin b/meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.bin
new file mode 100644
index 0000000..b704fb6
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.bin
Binary files differ
diff --git a/meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb b/meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb
new file mode 100644
index 0000000..a6c7021
--- /dev/null
+++ b/meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "This is edison sst fw binary."
+HOMEPAGE = "http://www.intel.com"
+LICENSE = "CLOSED"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+SRC_URI = "file://fw_sst_119a.bin"
+
+S = "${WORKDIR}"
+
+do_install () {
+ install -v -d ${D}/${base_libdir}/firmware/
+ install -m 644 fw_sst_119a.bin ${D}/${base_libdir}/firmware/
+}
+
+INSANE_SKIP_${PN} = "arch"
+
+FILES_${PN} = "${base_libdir}/firmware/"
+
diff --git a/meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk
new file mode 100644
index 0000000..7c7b636
--- /dev/null
+++ b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk
@@ -0,0 +1,72 @@
+# EEPROMER
+#
+# Licensed under the GNU General Public License.
+
+EEPROMER_DIR := eepromer
+
+EEPROMER_CFLAGS := -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
+ -Wcast-align -Wwrite-strings -Wnested-externs -Winline \
+ -W -Wundef -Wmissing-prototypes -Iinclude
+
+EEPROMER_TARGETS := eepromer eeprom eeprog
+
+#
+# Programs
+#
+
+$(EEPROMER_DIR)/eepromer: $(EEPROMER_DIR)/eepromer.o
+ $(CC) $(LDFLAGS) -o $@ $^
+
+$(EEPROMER_DIR)/eeprom: $(EEPROMER_DIR)/eeprom.o
+ $(CC) $(LDFLAGS) -o $@ $^
+
+$(EEPROMER_DIR)/eeprog: $(EEPROMER_DIR)/eeprog.o $(EEPROMER_DIR)/24cXX.o
+ $(CC) $(LDFLAGS) -o $@ $^
+
+#
+# Objects
+#
+
+$(EEPROMER_DIR)/eepromer.o: $(EEPROMER_DIR)/eepromer.c
+ $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@
+
+$(EEPROMER_DIR)/eeprom.o: $(EEPROMER_DIR)/eeprom.c
+ $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@
+
+$(EEPROMER_DIR)/eeprog.o: $(EEPROMER_DIR)/eeprog.c
+ $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@
+
+$(EEPROMER_DIR)/24cXX.o: $(EEPROMER_DIR)/24cXX.c
+ $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@
+
+#
+# Commands
+#
+
+all-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS))
+
+strip-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS))
+ strip $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS))
+
+clean-eepromer:
+ $(RM) $(addprefix $(EEPROMER_DIR)/,*.o $(EEPROMER_TARGETS))
+
+install-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS))
+ $(INSTALL_DIR) $(DESTDIR)$(sbindir) $(DESTDIR)$(man8dir)
+ for program in $(EEPROMER_TARGETS) ; do \
+ $(INSTALL_PROGRAM) $(EEPROMER_DIR)/$$program $(DESTDIR)$(sbindir) ; done
+
+uninstall-eepromer:
+ for program in $(EEPROMER_TARGETS) ; do \
+ $(RM) $(DESTDIR)$(sbindir)/$$program ; \
+ $(RM) $(DESTDIR)$(man8dir)/$$program.8 ; done
+
+all: all-eepromer
+
+strip: strip-eepromer
+
+clean: clean-eepromer
+
+install: install-eepromer
+
+uninstall: uninstall-eepromer
diff --git a/meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb
new file mode 100644
index 0000000..021090c
--- /dev/null
+++ b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Set of i2c tools for linux"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-${PV}.tar.bz2 \
+ file://Module.mk \
+ "
+SRC_URI[md5sum] = "511376eed04455cdb277ef19c5f73bb4"
+SRC_URI[sha256sum] = "23b28e474741834e3f1b35b0686528769a13adc92d2ff5603cbda1d6bd5e5629"
+
+inherit autotools
+
+do_compile_prepend() {
+ cp ${WORKDIR}/Module.mk ${S}/eepromer/
+ sed -i 's#/usr/local#/usr#' Makefile
+ echo "include eepromer/Module.mk" >> Makefile
+}
+
+do_install_append() {
+ install -d ${D}${includedir}/linux
+ install -m 0644 include/linux/i2c-dev.h ${D}${includedir}/linux/i2c-dev-user.h
+ rm -f ${D}${includedir}/linux/i2c-dev.h
+}
diff --git a/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c
new file mode 100644
index 0000000..d598160
--- /dev/null
+++ b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c
@@ -0,0 +1,167 @@
+/*
+ * Edison PWR button handler
+ *
+ * Copyright (c) 2014, Intel Corporation.
+ * Fabien Chereau <fabien.chereau@intel.com>
+ * Loïc Akue <loicx.akue@intel.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <assert.h>
+#include <sys/poll.h>
+#include <fcntl.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+
+/* See full definitions in include/linux/input.h */
+/* Also find more doc in Documentation/input/input.txt */
+#define EV_KEY 0x01
+/* Edison Arduino board PWR button code */
+#define KEY_POWER 116
+
+/* We use 2 seconds for now */
+#define EDISON_OOBE_PRESS_TIMEOUT 2
+
+struct input_event {
+ struct timeval time;
+ unsigned short type;
+ unsigned short code;
+ unsigned int value;
+};
+
+
+int main(int argc, char **argv)
+{
+ struct timeval tv;
+ struct input_event event;
+ struct pollfd p;
+ int fd, n;
+ ssize_t len;
+
+ if (argc!=3)
+ {
+ printf("Usage:\n");
+ printf(" %s \"command_line1\" \"command_line2\"\n", argv[0]);
+ printf(" command_line1: a command line to execute when the PWR button is pressed for more than 2s\n");
+ printf(" command_line2: a second command line to execute when the PWR button is released (after being pressed for more than 2s)\n");
+ return -1;
+ }
+
+
+ /* Time of the last press event.
+ We reset this to zero when the button is released */
+ time_t time_at_last_press = 0;
+
+ int event_already_fired = 0;
+
+ fd = open("/dev/input/event1", O_RDONLY);
+ if (fd < 0) {
+ perror("Can't open /dev/input/event1 device");
+ return fd;
+ }
+
+ memset(&p, 0, sizeof(p));
+ p.fd = fd;
+ p.events = POLLIN;
+
+ while (1) {
+ /* Refresh every 20 ms if the user already started pressing the button */
+ n = poll(&p, 1, time_at_last_press==0 ? -1 : 20);
+ if (n < 0) {
+ perror("Failed to poll /dev/input/event1 device");
+ break;
+ }
+ if (n==0) {
+ /* Poll timed out */
+ gettimeofday(&tv, NULL);
+ if (tv.tv_sec - time_at_last_press >= EDISON_OOBE_PRESS_TIMEOUT && event_already_fired == 0)
+ {
+ event_already_fired = 1;
+ printf("Edison PWR button was pressed more than 2s\n");
+ fflush(stdout);
+ system(argv[1]);
+ }
+ continue;
+ }
+
+ len = read(fd, &event, sizeof(event));
+ if (len < 0) {
+ perror("Reading of /dev/input/event1 events failed");
+ break;
+ }
+
+ if (len != sizeof(event)) {
+ perror("Wrong size of input_event struct");
+ break;
+ }
+
+ /* ignore non KEY event, and non PWR button events */
+ if (event.type != EV_KEY || event.code != KEY_POWER)
+ continue;
+
+ gettimeofday(&tv, NULL);
+
+#ifndef NDEBUG
+ printf("%ld.%06u: type=%u code=%u value=%u\n",
+ (long) tv.tv_sec, (unsigned int) tv.tv_usec,
+ event.type, event.code, event.value);
+ fflush(stdout);
+#endif
+
+ switch (event.value)
+ {
+ case 1: /* Regular press */
+ assert(time_at_last_press==0);
+ assert(event_already_fired==0);
+ time_at_last_press = tv.tv_sec;
+ break;
+ case 2: /* Auto repeat press */
+ if (time_at_last_press == 0)
+ {
+ /* This could happen if the user start pressing before the kernel starts */
+ time_at_last_press = tv.tv_sec;
+ }
+ break;
+ case 0: /* Release */
+ if (event_already_fired != 0)
+ {
+ printf("Edison PWR button was pressed more than 2s and released\n");
+ fflush(stdout);
+ system(argv[2]);
+ }
+ time_at_last_press = 0;
+ event_already_fired = 0;
+ break;
+ default:
+ printf("Warning: unhandled PWR button event value: %u\n", event.value);
+ }
+ }
+
+ close(fd);
+
+ return 0;
+}
diff --git a/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service
new file mode 100644
index 0000000..a53c10b
--- /dev/null
+++ b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Edison PWR button handler
+
+[Service]
+ExecStart=/usr/bin/pwr_button_handler "/bin/systemctl start blink-led" "sh -c \"/bin/systemctl stop blink-led && /usr/bin/configure_edison --enableOneTimeSetup\""
+Restart=on-failure
+
+[Install]
+WantedBy=default.target
+
diff --git a/meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb b/meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb
new file mode 100644
index 0000000..f58aeb0
--- /dev/null
+++ b/meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "Daemon listening to Edison PWR long button press, and starting OOBE service when it happens"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files/"
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "pwr-button-handler.service"
+
+SRC_URI = "file://pwr-button-handler.c"
+SRC_URI += "file://pwr-button-handler.service"
+
+S = "${WORKDIR}"
+
+do_compile() {
+ ${CC} $CFLAGS -DNDEBUG -o pwr_button_handler pwr-button-handler.c
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 pwr_button_handler ${D}${bindir}
+
+ # Copy service file
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/pwr-button-handler.service ${D}/${systemd_unitdir}/system
+
+ # And enable it at startup
+ install -d ${D}${sysconfdir}/systemd/system/default.target.wants
+ ln -sf ${systemd_unitdir}/system/pwr-button-handler.service \
+ ${D}${sysconfdir}/systemd/system/default.target.wants/pwr-button-handler.service
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/pwr-button-handler.service"
+FILES_${PN} += "${sysconfdir}/systemd/system/default.target.wants/pwr-button-handler.service"
+FILES_${PN} += "${bindir}/pwr_button_handler"
diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch
new file mode 100644
index 0000000..9d3d60d
--- /dev/null
+++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch
@@ -0,0 +1,22 @@
+From: Sergey Lapin <slapin@slind.org>
+Date: Wed, 28 Jan 2009 16:34:15 +0300
+Subject: [PATCH] minimal IEEE802.15.4 allowed
+
+---
+ tcpdump.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/tcpdump.c b/tcpdump.c
+index 06683af..fbc944c 100644
+--- a/tcpdump.c
++++ b/tcpdump.c
+@@ -282,6 +282,9 @@ static struct printer printers[] = {
+ #ifdef DLT_MFR
+ { mfr_if_print, DLT_MFR },
+ #endif
++#ifdef DLT_IEEE802_15_4
++ { raw_if_print, DLT_IEEE802_15_4 },
++#endif
+ #if defined(DLT_BLUETOOTH_HCI_H4_WITH_PHDR) && defined(HAVE_PCAP_BLUETOOTH_H)
+ { bt_if_print, DLT_BLUETOOTH_HCI_H4_WITH_PHDR},
+ #endif
diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch
new file mode 100644
index 0000000..3955ddb
--- /dev/null
+++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch
@@ -0,0 +1,29 @@
+---
+ aclocal.m4 | 1 -
+ configure.in | 1 +
+ 2 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/aclocal.m4 b/aclocal.m4
+index 40b5866..0c662b0 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -40,7 +40,6 @@ dnl
+ AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC,
+ [AC_PREREQ(2.50)
+ AC_BEFORE([$0], [AC_LBL_C_INIT])
+- AC_BEFORE([$0], [AC_PROG_CC])
+ AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
+ AC_BEFORE([$0], [AC_LBL_DEVEL])
+ AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
+diff --git a/configure.in b/configure.in
+index 11257c9..7f9591c 100644
+--- a/configure.in
++++ b/configure.in
+@@ -19,6 +19,7 @@ AC_REVISION($Revision: 1.204 $)
+ AC_PREREQ(2.50)
+ AC_INIT(tcpdump.c)
+
++AC_PROG_CC
+ AC_CANONICAL_HOST
+
+ AC_LBL_C_INIT_BEFORE_CC(V_CCOPT, V_INCLS)
diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch
new file mode 100644
index 0000000..c8a0373
--- /dev/null
+++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch
@@ -0,0 +1,41 @@
+---
+ configure.in | 12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index eb3e5e8..11257c9 100644
+--- a/configure.in
++++ b/configure.in
+@@ -181,8 +181,9 @@ yes) AC_MSG_RESULT(yes)
+ ipv6=no
+ ;;
+ esac ],
+-
+- AC_TRY_RUN([ /* AF_INET6 available check */
++[
++ if test x"$cross_compiling" != "xyes"; then
++ AC_TRY_RUN([ /* AF_INET6 avalable check */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ main()
+@@ -201,7 +202,10 @@ main()
+ ipv6=no],
+ [ AC_MSG_RESULT(no)
+ ipv6=no]
+-))
++ )
++else
++ AC_MSG_FAILURE([Unable to check for ipv6 when crosscompiling, please specify.])
++fi])
+
+ ipv6type=unknown
+ ipv6lib=none
+@@ -316,7 +320,7 @@ if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
+ fi
+
+
+-if test "$ipv6" = "yes"; then
++if test x"$cross_compiling" != "xyes" -a "$ipv6" = "yes"; then
+ #
+ # XXX - on Tru64 UNIX 5.1, there is no "getaddrinfo()"
+ # function in libc; there are "ngetaddrinfo()" and
diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch
new file mode 100644
index 0000000..7929da5
--- /dev/null
+++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch
@@ -0,0 +1,42 @@
+---
+ configure | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure b/configure
+index cb51d19..73d51af 100755
+--- a/configure
++++ b/configure
+@@ -2691,13 +2691,13 @@ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
++ CFLAGS="-g"
+ else
+ CFLAGS="-g"
+ fi
+ else
+ if test "$GCC" = yes; then
+- CFLAGS="-O2"
++ CFLAGS=""
+ else
+ CFLAGS=
+ fi
+@@ -2830,7 +2830,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test "$GCC" = yes ; then
+ if test "$SHLICC2" = yes ; then
+ ac_cv_lbl_gcc_vers=2
+- V_CCOPT="-O2"
++ V_CCOPT=""
+ else
+ { echo "$as_me:$LINENO: checking gcc version" >&5
+ echo $ECHO_N "checking gcc version... $ECHO_C" >&6; }
+@@ -2847,7 +2847,7 @@ fi
+ { echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_vers" >&5
+ echo "${ECHO_T}$ac_cv_lbl_gcc_vers" >&6; }
+ if test $ac_cv_lbl_gcc_vers -gt 1 ; then
+- V_CCOPT="-O2"
++ V_CCOPT=""
+ fi
+ fi
+ else
diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb b/meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb
new file mode 100644
index 0000000..6b81ed0
--- /dev/null
+++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "A sophisticated network protocol analyzer"
+HOMEPAGE = "http://www.tcpdump.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1d4b0366557951c84a94fabe3529f867"
+SECTION = "console/network"
+DEPENDS = "libpcap"
+PR = "r1"
+
+SRC_URI = " \
+ http://www.tcpdump.org/release/tcpdump-${PV}.tar.gz \
+ file://tcpdump_configure_no_-O2.patch \
+ file://0001-minimal-IEEE802.15.4-allowed.patch \
+ file://ipv6-cross.patch \
+ file://configure.patch \
+"
+
+inherit autotools
+# ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+EXTRA_OECONF = "--without-crypto \
+ ${@base_contains('DISTRO_FEATURES', 'ipv6', '--enable-ipv6', '--disable-ipv6', d)}"
+
+do_configure() {
+ # AC_CHECK_LIB(dlpi.. was looking to host /lib
+ sed -i 's:-L/lib:-L${STAGING_LIBDIR}:g' ./configure.in
+
+ gnu-configize
+ autoconf
+ oe_runconf
+ sed -i 's:/usr/lib:${STAGING_LIBDIR}:' ./Makefile
+ sed -i 's:/usr/include:${STAGING_INCDIR}:' ./Makefile
+}
+
+do_install_append() {
+ # tcpdump 4.1.1 installs a copy to /usr/sbin/tcpdump.4.1.1
+ rm -f ${D}${sbindir}/tcpdump.${PV}
+}
+
+SRC_URI[md5sum] = "d0dd58bbd6cd36795e05c6f1f74420b0"
+SRC_URI[sha256sum] = "e6cd4bbd61ec7adbb61ba8352c4b4734f67b8caaa845d88cb826bc0b9f1e7f0a"
+
diff --git a/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb
new file mode 100644
index 0000000..f0369bc
--- /dev/null
+++ b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "Watchdog sample daemon"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/watchdog-sample/"
+
+SRC_URI += "file://watchdog-sample.service"
+SRC_URI += "file://watchdog-sample.c"
+
+SYSTEMD_SERVICE_${PN} = "watchdog-sample.service"
+
+RDEPENDS_${PN} = "systemd"
+DEPENDS = "systemd"
+
+S = "${WORKDIR}"
+
+do_compile() {
+ $CC $CFLAGS ${S}/watchdog-sample.c `pkg-config --cflags --libs --print-errors libsystemd` -o watchdog-sample
+}
+
+do_install() {
+ # install service file
+ install -d ${D}${systemd_unitdir}/system
+ install -c -m 0644 ${WORKDIR}/watchdog-sample.service ${D}${systemd_unitdir}/system
+
+ # enable the service
+ install -d ${D}${sysconfdir}/systemd/system/basic.target.wants
+ ln -sf ${systemd_unitdir}/system/watchdog-sample.service \
+ ${D}${sysconfdir}/systemd/system/basic.target.wants/watchdog-sample.service
+
+ # install watchdog binary
+ install -d ${D}${bindir}
+ install -c -m 0755 ${B}/watchdog-sample ${D}${bindir}
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/watchdog-sample.service"
+FILES_${PN} += "${sysconfdir}/systemd/system/basic.target.wants/watchdog-sample.service"
+FILES_${PN} += "${bindir}/watchdog-sample"
+
+# As this package is tied to systemd, only build it when we're also building systemd.
+python () {
+ if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+ raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+}
+
diff --git a/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c
new file mode 100644
index 0000000..7bba6ff
--- /dev/null
+++ b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c
@@ -0,0 +1,92 @@
+/*
+ * Watchdog daemon sample code
+ *
+ * Copyright (c) 2014, Intel Corporation.
+ * Simon Desfarges <simonx.desfarges@intel.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/*
+ * This file is a simple example on the use of the systemd SW watchdog.
+ * At startup, the program will create a file in /tmp/watchdog-sample.tmp;
+ * if the file is removed while the program is running, the program will not
+ * ping systemd watchdog, resulting in a restart of the program (depending on
+ * the service configuration).
+ * This file allow to simulate a hang in the watchdog-critical program.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <systemd/sd-daemon.h>
+
+int main(int argc, char * argv[]) {
+ uint32_t wd_timeout; // in seconds
+ uint32_t sleep_time;
+ int err;
+ char path[] = "/tmp/watchdog-sample.tmp";
+ int fd;
+ if(argc == 2) {
+ wd_timeout = atoi(argv[1]);
+ fprintf(stderr, SD_WARNING "Will ping every %ds \n", wd_timeout/2);
+ } else {
+ errno=EINVAL;
+ sd_notifyf(0, SD_EMERG "STATUS=Failed to start up: %s\n"
+ "ERRNO=%i",
+ strerror(errno), errno);
+ exit(-1);
+ }
+
+ if(wd_timeout == 0) {
+ sd_notify(0, "Systemd SW watchdog disabled, nothing to do\n");
+ exit(0);
+ }
+
+ fd = open(path, O_RDWR | O_CREAT | O_SYNC, 777);
+ if(fd == -1) {
+ sd_notifyf(0, SD_EMERG "STATUS=Failed to create file: %s\n"
+ "ERRNO=%i",
+ strerror(errno), errno);
+ exit(-1);
+ }
+ write(fd,"A", 1);
+ fsync(fd);
+ close(fd);
+
+ /* Here, systemd WD is enabled and waiting for ping */
+ /* wd_timeout variable contains the timeout. We need to ping every wd_timeout/2 */
+ sleep_time = wd_timeout/2;
+ sd_notify(0, "READY=1\n");
+
+ while(1) {
+ sd_notify(0, "WATCHDOG=1\n");
+ sleep(sleep_time);
+
+ if(access(path, F_OK) == -1) {
+ sd_notify(0, SD_EMERG "TEMP file disappeared, falling in hang mode\n");
+ while(1);
+ }
+ }
+}
+
diff --git a/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service
new file mode 100644
index 0000000..dacb5e0
--- /dev/null
+++ b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Watchdog sample daemon
+
+[Service]
+Environment="Timeout=30"
+ExecStart=/usr/bin/watchdog-sample ${Timeout}
+WatchdogSec=30s
+Restart=on-failure
+StartLimitInterval=4min
+StartLimitBurst=4
+StartLimitAction=reboot-force
+
+[Install]
+WantedBy=basic.target
+