Created
June 11, 2015 01:17
-
-
Save dholt/86afdb2492ff188e17f8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set -e | |
# fw_type will always be developer for Mario. | |
# Alex and ZGB need the developer BIOS installed though. | |
fw_type="`crossystem mainfw_type`" | |
if [ ! "$fw_type" = "developer" ] | |
then | |
echo -e "\nYou're Chromebook is not running a developer BIOS!" | |
echo -e "You need to run:" | |
echo -e "" | |
echo -e "sudo chromeos-firmwareupdate --mode=todev" | |
echo -e "" | |
echo -e "and then re-run this script." | |
exit | |
fi | |
powerd_status="`initctl status powerd`" | |
if [ ! "$powerd_status" = "powerd stop/waiting" ] | |
then | |
echo -e "Stopping powerd to keep display from timing out..." | |
initctl stop powerd | |
fi | |
setterm -blank 0 | |
if [ "$3" != "" ]; then | |
target_disk=$3 | |
echo "Got ${target_disk} as target drive" | |
echo "" | |
echo "WARNING! All data on this device will be wiped out! Continue at your own risk!" | |
echo "" | |
read -p "Press [Enter] to install ChrUbuntu on ${target_disk} or CTRL+C to quit" | |
ext_size="`blockdev --getsz ${target_disk}`" | |
aroot_size=$((ext_size - 65600 - 33)) | |
parted --script ${target_disk} "mktable gpt" | |
cgpt create ${target_disk} | |
cgpt add -i 6 -b 64 -s 32768 -S 1 -P 5 -l KERN-A -t "kernel" ${target_disk} | |
cgpt add -i 7 -b 65600 -s $aroot_size -l ROOT-A -t "rootfs" ${target_disk} | |
sync | |
blockdev --rereadpt ${target_disk} | |
partprobe ${target_disk} | |
crossystem dev_boot_usb=1 | |
else | |
target_disk="`rootdev -d -s`" | |
# Do partitioning (if we haven't already) | |
ckern_size="`cgpt show -i 6 -n -s -q ${target_disk}`" | |
croot_size="`cgpt show -i 7 -n -s -q ${target_disk}`" | |
state_size="`cgpt show -i 1 -n -s -q ${target_disk}`" | |
max_ubuntu_size=$(($state_size/1024/1024/2)) | |
rec_ubuntu_size=$(($max_ubuntu_size - 1)) | |
# If KERN-C and ROOT-C are one, we partition, otherwise assume they're what they need to be... | |
if [ "$ckern_size" = "1" -o "$croot_size" = "1" ] | |
then | |
while : | |
do | |
read -p "Enter the size in gigabytes you want to reserve for Ubuntu. Acceptable range is 5 to $max_ubuntu_size but $rec_ubuntu_size is the recommended maximum: " ubuntu_size | |
if [ ! $ubuntu_size -ne 0 2>/dev/null ] | |
then | |
echo -e "\n\nNumbers only please...\n\n" | |
continue | |
fi | |
if [ $ubuntu_size -lt 5 -o $ubuntu_size -gt $max_ubuntu_size ] | |
then | |
echo -e "\n\nThat number is out of range. Enter a number 5 through $max_ubuntu_size\n\n" | |
continue | |
fi | |
break | |
done | |
# We've got our size in GB for ROOT-C so do the math... | |
#calculate sector size for rootc | |
rootc_size=$(($ubuntu_size*1024*1024*2)) | |
#kernc is always 16mb | |
kernc_size=32768 | |
#new stateful size with rootc and kernc subtracted from original | |
stateful_size=$(($state_size - $rootc_size - $kernc_size)) | |
#start stateful at the same spot it currently starts at | |
stateful_start="`cgpt show -i 1 -n -b -q ${target_disk}`" | |
#start kernc at stateful start plus stateful size | |
kernc_start=$(($stateful_start + $stateful_size)) | |
#start rootc at kernc start plus kernc size | |
rootc_start=$(($kernc_start + $kernc_size)) | |
#Do the real work | |
echo -e "\n\nModifying partition table to make room for Ubuntu." | |
echo -e "Your Chromebook will reboot, wipe your data and then" | |
echo -e "you should re-run this script..." | |
umount -f /mnt/stateful_partition | |
# stateful first | |
cgpt add -i 1 -b $stateful_start -s $stateful_size -l STATE ${target_disk} | |
# now kernc | |
cgpt add -i 6 -b $kernc_start -s $kernc_size -l KERN-C ${target_disk} | |
# finally rootc | |
cgpt add -i 7 -b $rootc_start -s $rootc_size -l ROOT-C ${target_disk} | |
reboot | |
exit | |
fi | |
fi | |
# hwid lets us know if this is a Mario (Cr-48), Alex (Samsung Series 5), ZGB (Acer), etc | |
hwid="`crossystem hwid`" | |
chromebook_arch="`uname -m`" | |
ubuntu_metapackage=${1:-default} | |
latest_ubuntu=`wget --quiet -O - http://changelogs.ubuntu.com/meta-release | grep "^Version: " | tail -1 | sed -r 's/^Version: ([^ ]+)( LTS)?$/\1/'` | |
ubuntu_version=${2:-$latest_ubuntu} | |
if [ "$ubuntu_version" = "lts" ] | |
then | |
ubuntu_version=`wget --quiet -O - http://changelogs.ubuntu.com/meta-release | grep "^Version:" | grep "LTS" | tail -1 | sed -r 's/^Version: ([^ ]+)( LTS)?$/\1/'` | |
elif [ "$ubuntu_version" = "latest" ] | |
then | |
ubuntu_version=$latest_ubuntu | |
fi | |
if [ "$chromebook_arch" = "x86_64" ] | |
then | |
ubuntu_arch="amd64" | |
if [ "$ubuntu_metapackage" = "default" ] | |
then | |
ubuntu_metapackage="ubuntu-desktop" | |
fi | |
elif [ "$chromebook_arch" = "i686" ] | |
then | |
ubuntu_arch="i386" | |
if [ "$ubuntu_metapackage" = "default" ] | |
then | |
ubuntu_metapackage="ubuntu-desktop" | |
fi | |
elif [ "$chromebook_arch" = "armv7l" ] | |
then | |
ubuntu_arch="armhf" | |
if [ "$ubuntu_metapackage" = "default" ] | |
then | |
ubuntu_metapackage="xubuntu-desktop" | |
fi | |
else | |
echo -e "Error: This script doesn't know how to install ChrUbuntu on $chromebook_arch" | |
exit | |
fi | |
echo -e "\nChrome device model is: $hwid\n" | |
echo -e "Installing Ubuntu ${ubuntu_version} with metapackage ${ubuntu_metapackage}\n" | |
echo -e "Kernel Arch is: $chromebook_arch Installing Ubuntu Arch: $ubuntu_arch\n" | |
read -p "Press [Enter] to continue..." | |
if [ ! -d /mnt/stateful_partition/ubuntu ] | |
then | |
mkdir /mnt/stateful_partition/ubuntu | |
fi | |
cd /mnt/stateful_partition/ubuntu | |
if [[ "${target_disk}" =~ "mmcblk" ]] | |
then | |
target_rootfs="${target_disk}p7" | |
target_kern="${target_disk}p6" | |
else | |
target_rootfs="${target_disk}7" | |
target_kern="${target_disk}6" | |
fi | |
echo "Target Kernel Partition: $target_kern Target Root FS: ${target_rootfs}" | |
if mount|grep ${target_rootfs} | |
then | |
echo "Refusing to continue since ${target_rootfs} is formatted and mounted. Try rebooting" | |
exit | |
fi | |
mkfs.ext4 ${target_rootfs} | |
if [ ! -d /tmp/urfs ] | |
then | |
mkdir /tmp/urfs | |
fi | |
mount -t ext4 ${target_rootfs} /tmp/urfs | |
tar_file="http://cdimage.ubuntu.com/ubuntu-core/releases/$ubuntu_version/release/ubuntu-core-$ubuntu_version-core-$ubuntu_arch.tar.gz" | |
if [ $ubuntu_version = "dev" ] | |
then | |
ubuntu_animal=`wget --quiet -O - http://changelogs.ubuntu.com/meta-release-development | grep "^Dist: " | tail -1 | sed -r 's/^Dist: (.*)$/\1/'` | |
tar_file="http://cdimage.ubuntu.com/ubuntu-core/daily/current/$ubuntu_animal-core-$ubuntu_arch.tar.gz" | |
fi | |
wget -O - $tar_file | tar xzvvp -C /tmp/urfs/ | |
mount -o bind /proc /tmp/urfs/proc | |
mount -o bind /dev /tmp/urfs/dev | |
mount -o bind /dev/pts /tmp/urfs/dev/pts | |
mount -o bind /sys /tmp/urfs/sys | |
if [ -f /usr/bin/old_bins/cgpt ] | |
then | |
cp /usr/bin/old_bins/cgpt /tmp/urfs/usr/bin/ | |
else | |
cp /usr/bin/cgpt /tmp/urfs/usr/bin/ | |
fi | |
chmod a+rx /tmp/urfs/usr/bin/cgpt | |
if [ ! -d /tmp/urfs/run/resolvconf/ ] | |
then | |
mkdir /tmp/urfs/run/resolvconf/ | |
fi | |
cp /etc/resolv.conf /tmp/urfs/run/resolvconf/ | |
ln -s -f /run/resolvconf/resolv.conf /tmp/urfs/etc/resolv.conf | |
echo chrubuntu > /tmp/urfs/etc/hostname | |
#echo -e "127.0.0.1 localhost | |
echo -e "\n127.0.1.1 chrubuntu" >> /tmp/urfs/etc/hosts | |
# The following lines are desirable for IPv6 capable hosts | |
#::1 localhost ip6-localhost ip6-loopback | |
#fe00::0 ip6-localnet | |
#ff00::0 ip6-mcastprefix | |
#ff02::1 ip6-allnodes | |
#ff02::2 ip6-allrouters" > /tmp/urfs/etc/hosts | |
cr_install="wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - | |
add-apt-repository \"deb http://dl.google.com/linux/chrome/deb/ stable main\" | |
apt-get update | |
apt-get -y install google-chrome-stable" | |
if [ $ubuntu_arch = 'armhf' ] | |
then | |
cr_install='apt-get -y install chromium-browser' | |
fi | |
add_apt_repository_package='software-properties-common' | |
ubuntu_major_version=${ubuntu_version:0:2} | |
ubuntu_minor_version=${ubuntu_version:3:2} | |
if [ $ubuntu_major_version -le 12 ] && [ $ubuntu_minor_version -lt 10 ] | |
then | |
add_apt_repository_package='python-software-properties' | |
fi | |
echo -e "apt-get -y update | |
apt-get -y dist-upgrade | |
apt-get -y install ubuntu-minimal | |
apt-get -y install wget | |
apt-get -y install $add_apt_repository_package | |
add-apt-repository main | |
add-apt-repository universe | |
add-apt-repository restricted | |
add-apt-repository multiverse | |
apt-get update | |
apt-get -y install $ubuntu_metapackage | |
$cr_install | |
if [ -f /usr/lib/lightdm/lightdm-set-defaults ] | |
then | |
/usr/lib/lightdm/lightdm-set-defaults --autologin user | |
fi | |
useradd -m user -s /bin/bash | |
echo user | echo user:user | chpasswd | |
adduser user adm | |
adduser user sudo | |
update-alternatives --set x-www-browser /usr/bin/chromium-browser | |
locale-gen en_US en_US.UTF-8 | |
echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale | |
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 dpkg-reconfigure locales" > /tmp/urfs/install-ubuntu.sh | |
chmod a+x /tmp/urfs/install-ubuntu.sh | |
chroot /tmp/urfs /bin/bash -c /install-ubuntu.sh | |
rm /tmp/urfs/install-ubuntu.sh | |
KERN_VER=`uname -r` | |
mkdir -p /tmp/urfs/lib/modules/$KERN_VER/ | |
cp -ar /lib/modules/$KERN_VER/* /tmp/urfs/lib/modules/$KERN_VER/ | |
if [ ! -d /tmp/urfs/lib/firmware/ ] | |
then | |
mkdir /tmp/urfs/lib/firmware/ | |
fi | |
cp -ar /lib/firmware/* /tmp/urfs/lib/firmware/ | |
# copy adobe flash player plugin | |
cp /opt/google/chrome/pepper/libpepflashplayer.so /tmp/urfs/usr/lib/chromium-browser | |
# tell chromium-browser where to find flash plugin | |
echo -e 'CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --ppapi-flash-path=/usr/lib/chromium-browser/libpepflashplayer.so"' >> /tmp/urfs/etc/chromium-browser/default | |
# flash plugin requires a new version of libstdc++6 from test repository | |
cat > /tmp/urfs/install-flash.sh <<EOF | |
add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
apt-get update | |
apt-get install -y libstdc++6 | |
EOF | |
chmod a+x /tmp/urfs/install-flash.sh | |
chroot /tmp/urfs /bin/bash -c /install-flash.sh | |
rm /tmp/urfs/install-flash.sh | |
# BIG specific files here | |
cp /etc/X11/xorg.conf.d/tegra.conf /tmp/urfs/usr/share/X11/xorg.conf.d/ | |
l4tdir=`mktemp -d` | |
l4t=Tegra124_Linux_R19.3.0_armhf.tbz2 | |
wget -P ${l4tdir} https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/${l4t} | |
cd ${l4tdir} | |
tar xvpf ${l4t} | |
cd Linux_for_Tegra/rootfs/ | |
tar xvpf ../nv_tegra/nvidia_drivers.tbz2 | |
tar cf - usr/lib | ( cd /tmp/urfs ; tar xvf -) | |
# cuda symlinks | |
ln -s libcuda.so.1 /tmp/urfs/usr/lib/arm-linux-gnueabihf/libcuda.so | |
ln -s tegra/libcuda.so.1 /tmp/urfs/usr/lib/arm-linux-gnueabihf/libcuda.so.1 | |
ln -s tegra/libcuda.so.1.1 /tmp/urfs/usr/lib/arm-linux-gnueabihf/libcuda.so.1.1 | |
echo "/usr/lib/arm-linux-gnueabihf/tegra" > /tmp/urfs/etc/ld.so.conf.d/nvidia-tegra.conf | |
echo "/usr/lib/arm-linux-gnueabihf/tegra-egl" > /tmp/urfs/usr/lib/arm-linux-gnueabihf/tegra-egl/ld.so.conf | |
echo "/usr/lib/arm-linux-gnueabihf/tegra" > /tmp/urfs/usr/lib/arm-linux-gnueabihf/tegra/ld.so.conf | |
cat >/tmp/urfs/etc/udev/rules.d/99-tegra-lid-switch.rules <<EOF | |
ACTION=="remove", GOTO="tegra_lid_switch_end" | |
SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="platform", KERNELS=="gpio-keys.4", TAG+="power-switch" | |
LABEL="tegra_lid_switch_end" | |
EOF | |
# nvidia device node permissions | |
cat > /tmp/urfs/lib/udev/rules.d/51-nvrm.rules <<EOF | |
KERNEL=="knvmap", GROUP="video", MODE="0660" | |
KERNEL=="nvhdcp1", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-as-gpu", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-ctrl", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-ctrl-gpu", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-dbg-gpu", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-gpu", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-msenc", GROUP="video", MODE=0660" | |
KERNEL=="nvhost-prof-gpu", GROUP="video", MODE=0660" | |
KERNEL=="nvhost-tsec", GROUP="video", MODE="0660" | |
KERNEL=="nvhost-vic", GROUP="video", MODE="0660" | |
KERNEL=="nvmap", GROUP="video", MODE="0660" | |
KERNEL=="tegra_dc_0", GROUP="video", MODE="0660" | |
KERNEL=="tegra_dc_1", GROUP="video", MODE="0660" | |
KERNEL=="tegra_dc_ctrl", GROUP="video", MODE="0660" | |
EOF | |
# alsa mixer settings to enable internal speakers | |
cat > /tmp/urfs/var/lib/alsa/asound.state <<EOF | |
state.HDATegra { | |
control.1 { | |
iface CARD | |
name 'HDMI/DP,pcm=3 Jack' | |
value false | |
comment { | |
access read | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.2 { | |
iface MIXER | |
name 'IEC958 Playback Con Mask' | |
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | |
comment { | |
access read | |
type IEC958 | |
count 1 | |
} | |
} | |
control.3 { | |
iface MIXER | |
name 'IEC958 Playback Pro Mask' | |
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | |
comment { | |
access read | |
type IEC958 | |
count 1 | |
} | |
} | |
control.4 { | |
iface MIXER | |
name 'IEC958 Playback Default' | |
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | |
comment { | |
access 'read write' | |
type IEC958 | |
count 1 | |
} | |
} | |
control.5 { | |
iface MIXER | |
name 'IEC958 Playback Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.6 { | |
iface PCM | |
device 3 | |
name ELD | |
value '' | |
comment { | |
access 'read volatile' | |
type BYTES | |
count 0 | |
} | |
} | |
control.7 { | |
iface PCM | |
device 3 | |
name 'Playback Channel Map' | |
value.0 0 | |
value.1 0 | |
value.2 0 | |
value.3 0 | |
value.4 0 | |
value.5 0 | |
value.6 0 | |
value.7 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 8 | |
range '0 - 36' | |
} | |
} | |
} | |
state.Venice2 { | |
control.1 { | |
iface MIXER | |
name 'MIC Bias VCM Bandgap' | |
value 'High Performance' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'Low Power' | |
item.1 'High Performance' | |
} | |
} | |
control.2 { | |
iface MIXER | |
name 'DMIC MIC Comp Filter Config' | |
value 6 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 15' | |
} | |
} | |
control.3 { | |
iface MIXER | |
name 'MIC1 Boost Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 2' | |
dbmin 0 | |
dbmax 3000 | |
dbvalue.0 0 | |
} | |
} | |
control.4 { | |
iface MIXER | |
name 'MIC2 Boost Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 2' | |
dbmin 0 | |
dbmax 3000 | |
dbvalue.0 0 | |
} | |
} | |
control.5 { | |
iface MIXER | |
name 'MIC1 Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 20' | |
dbmin 0 | |
dbmax 2000 | |
dbvalue.0 0 | |
} | |
} | |
control.6 { | |
iface MIXER | |
name 'MIC2 Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 20' | |
dbmin 0 | |
dbmax 2000 | |
dbvalue.0 0 | |
} | |
} | |
control.7 { | |
iface MIXER | |
name 'LINEA Single Ended Volume' | |
value 1 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 1' | |
dbmin -600 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.8 { | |
iface MIXER | |
name 'LINEB Single Ended Volume' | |
value 1 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 1' | |
dbmin -600 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.9 { | |
iface MIXER | |
name 'LINEA Volume' | |
value 2 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 5' | |
dbmin -600 | |
dbmax 2000 | |
dbvalue.0 0 | |
} | |
} | |
control.10 { | |
iface MIXER | |
name 'LINEB Volume' | |
value 2 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 5' | |
dbmin -600 | |
dbmax 2000 | |
dbvalue.0 0 | |
} | |
} | |
control.11 { | |
iface MIXER | |
name 'LINEA Ext Resistor Gain Mode' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.12 { | |
iface MIXER | |
name 'LINEB Ext Resistor Gain Mode' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.13 { | |
iface MIXER | |
name 'ADCL Boost Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 7' | |
dbmin 0 | |
dbmax 4200 | |
dbvalue.0 0 | |
} | |
} | |
control.14 { | |
iface MIXER | |
name 'ADCR Boost Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 7' | |
dbmin 0 | |
dbmax 4200 | |
dbvalue.0 0 | |
} | |
} | |
control.15 { | |
iface MIXER | |
name 'ADCL Volume' | |
value 12 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 15' | |
dbmin -1200 | |
dbmax 300 | |
dbvalue.0 0 | |
} | |
} | |
control.16 { | |
iface MIXER | |
name 'ADCR Volume' | |
value 12 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 15' | |
dbmin -1200 | |
dbmax 300 | |
dbvalue.0 0 | |
} | |
} | |
control.17 { | |
iface MIXER | |
name 'ADC Oversampling Rate' | |
value '128*fs' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 '64*fs' | |
item.1 '128*fs' | |
} | |
} | |
control.18 { | |
iface MIXER | |
name 'ADC Quantizer Dither' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.19 { | |
iface MIXER | |
name 'ADC High Performance Mode' | |
value 'High Performance' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'Low Power' | |
item.1 'High Performance' | |
} | |
} | |
control.20 { | |
iface MIXER | |
name 'DAC Mono Mode' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.21 { | |
iface MIXER | |
name 'SDIN Mode' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.22 { | |
iface MIXER | |
name 'SDOUT Mode' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.23 { | |
iface MIXER | |
name 'SDOUT Hi-Z Mode' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.24 { | |
iface MIXER | |
name 'Filter Mode' | |
value Music | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Voice | |
item.1 Music | |
} | |
} | |
control.25 { | |
iface MIXER | |
name 'Record Path DC Blocking' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.26 { | |
iface MIXER | |
name 'Playback Path DC Blocking' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.27 { | |
iface MIXER | |
name 'Digital BQ Volume' | |
value 15 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 15' | |
dbmin -1500 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.28 { | |
iface MIXER | |
name 'Digital Sidetone Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 30' | |
dbmin 0 | |
dbmax 3000 | |
dbvalue.0 0 | |
} | |
} | |
control.29 { | |
iface MIXER | |
name 'Digital Coarse Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin 0 | |
dbmax 1800 | |
dbvalue.0 0 | |
} | |
} | |
control.30 { | |
iface MIXER | |
name 'Digital Volume' | |
value 15 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 15' | |
dbmin -1500 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.31 { | |
iface MIXER | |
name 'EQ Coefficients' | |
value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | |
comment { | |
access 'read write' | |
type BYTES | |
count 105 | |
} | |
} | |
control.32 { | |
iface MIXER | |
name 'Digital EQ 3 Band Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.33 { | |
iface MIXER | |
name 'Digital EQ 5 Band Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.34 { | |
iface MIXER | |
name 'Digital EQ 7 Band Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.35 { | |
iface MIXER | |
name 'Digital EQ Clipping Detection' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.36 { | |
iface MIXER | |
name 'Digital EQ Volume' | |
value 15 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 15' | |
dbmin -1500 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.37 { | |
iface MIXER | |
name 'ALC Enable' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.38 { | |
iface MIXER | |
name 'ALC Attack Time' | |
value '0.5ms' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 '0.5ms' | |
item.1 '1ms' | |
item.2 '5ms' | |
item.3 '10ms' | |
item.4 '25ms' | |
item.5 '50ms' | |
item.6 '100ms' | |
item.7 '200ms' | |
} | |
} | |
control.39 { | |
iface MIXER | |
name 'ALC Release Time' | |
value '8s' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 '8s' | |
item.1 '4s' | |
item.2 '2s' | |
item.3 '1s' | |
item.4 '0.5s' | |
item.5 '0.25s' | |
item.6 '0.125s' | |
item.7 '0.0625s' | |
} | |
} | |
control.40 { | |
iface MIXER | |
name 'ALC Make Up Volume' | |
value 0 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 12' | |
dbmin 0 | |
dbmax 1200 | |
dbvalue.0 0 | |
} | |
} | |
control.41 { | |
iface MIXER | |
name 'ALC Compression Ratio' | |
value '1:1' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 '1:1' | |
item.1 '1:1.5' | |
item.2 '1:2' | |
item.3 '1:4' | |
item.4 '1:INF' | |
} | |
} | |
control.42 { | |
iface MIXER | |
name 'ALC Expansion Ratio' | |
value '1:1' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 '1:1' | |
item.1 '2:1' | |
item.2 '3:1' | |
} | |
} | |
control.43 { | |
iface MIXER | |
name 'ALC Compression Threshold Volume' | |
value 31 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 31' | |
dbmin -3100 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.44 { | |
iface MIXER | |
name 'ALC Expansion Threshold Volume' | |
value 31 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 31' | |
dbmin -6600 | |
dbmax -3500 | |
dbvalue.0 -3500 | |
} | |
} | |
control.45 { | |
iface MIXER | |
name 'DAC HP Playback Performance Mode' | |
value 'High Performance' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'High Performance' | |
item.1 'Low Power' | |
} | |
} | |
control.46 { | |
iface MIXER | |
name 'DAC High Performance Mode' | |
value 'High Performance' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'Low Power' | |
item.1 'High Performance' | |
} | |
} | |
control.47 { | |
iface MIXER | |
name 'Headphone Left Mixer Volume' | |
value 3 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin -1200 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.48 { | |
iface MIXER | |
name 'Headphone Right Mixer Volume' | |
value 3 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin -1200 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.49 { | |
iface MIXER | |
name 'Speaker Left Mixer Volume' | |
value 3 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin -1200 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.50 { | |
iface MIXER | |
name 'Speaker Right Mixer Volume' | |
value 3 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin -1200 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.51 { | |
iface MIXER | |
name 'Receiver Left Mixer Volume' | |
value 3 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin -1200 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.52 { | |
iface MIXER | |
name 'Receiver Right Mixer Volume' | |
value 3 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 1 | |
range '0 - 3' | |
dbmin -1200 | |
dbmax 0 | |
dbvalue.0 0 | |
} | |
} | |
control.53 { | |
iface MIXER | |
name 'Headphone Volume' | |
value.0 26 | |
value.1 26 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 2 | |
range '0 - 31' | |
dbmin -6700 | |
dbmax 300 | |
dbvalue.0 0 | |
dbvalue.1 0 | |
} | |
} | |
control.54 { | |
iface MIXER | |
name 'Speaker Volume' | |
value.0 20 | |
value.1 20 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 2 | |
range '0 - 39' | |
dbmin -4800 | |
dbmax 1400 | |
dbvalue.0 0 | |
dbvalue.1 0 | |
} | |
} | |
control.55 { | |
iface MIXER | |
name 'Receiver Volume' | |
value.0 21 | |
value.1 21 | |
comment { | |
access 'read write' | |
type INTEGER | |
count 2 | |
range '0 - 31' | |
dbmin -6200 | |
dbmax 800 | |
dbvalue.0 0 | |
dbvalue.1 0 | |
} | |
} | |
control.56 { | |
iface MIXER | |
name 'Headphone Left Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.57 { | |
iface MIXER | |
name 'Headphone Right Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.58 { | |
iface MIXER | |
name 'Speaker Left Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.59 { | |
iface MIXER | |
name 'Speaker Right Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.60 { | |
iface MIXER | |
name 'Receiver Left Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.61 { | |
iface MIXER | |
name 'Receiver Right Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.62 { | |
iface MIXER | |
name 'Zero-Crossing Detection' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.63 { | |
iface MIXER | |
name 'Enhanced Vol Smoothing' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.64 { | |
iface MIXER | |
name 'Volume Adjustment Smoothing' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.65 { | |
iface MIXER | |
name 'Biquad Coefficients' | |
value '000000000000000000000000000000' | |
comment { | |
access 'read write' | |
type BYTES | |
count 15 | |
} | |
} | |
control.66 { | |
iface MIXER | |
name 'Biquad Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.67 { | |
iface MIXER | |
name 'HP Right Out Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.68 { | |
iface MIXER | |
name 'HP Left Out Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.69 { | |
iface MIXER | |
name 'MIXHPRSEL Mux' | |
value 'DAC Only' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'DAC Only' | |
item.1 'HP Mixer' | |
} | |
} | |
control.70 { | |
iface MIXER | |
name 'MIXHPLSEL Mux' | |
value 'DAC Only' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'DAC Only' | |
item.1 'HP Mixer' | |
} | |
} | |
control.71 { | |
iface MIXER | |
name 'LINMOD Mux' | |
value 'Left Only' | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 'Left Only' | |
item.1 'Left and Right' | |
} | |
} | |
control.72 { | |
iface MIXER | |
name 'Right Receiver Mixer Left DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.73 { | |
iface MIXER | |
name 'Right Receiver Mixer Right DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.74 { | |
iface MIXER | |
name 'Right Receiver Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.75 { | |
iface MIXER | |
name 'Right Receiver Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.76 { | |
iface MIXER | |
name 'Right Receiver Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.77 { | |
iface MIXER | |
name 'Right Receiver Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.78 { | |
iface MIXER | |
name 'Left Receiver Mixer Left DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.79 { | |
iface MIXER | |
name 'Left Receiver Mixer Right DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.80 { | |
iface MIXER | |
name 'Left Receiver Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.81 { | |
iface MIXER | |
name 'Left Receiver Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.82 { | |
iface MIXER | |
name 'Left Receiver Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.83 { | |
iface MIXER | |
name 'Left Receiver Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.84 { | |
iface MIXER | |
name 'Right Speaker Mixer Left DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.85 { | |
iface MIXER | |
name 'Right Speaker Mixer Right DAC Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.86 { | |
iface MIXER | |
name 'Right Speaker Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.87 { | |
iface MIXER | |
name 'Right Speaker Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.88 { | |
iface MIXER | |
name 'Right Speaker Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.89 { | |
iface MIXER | |
name 'Right Speaker Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.90 { | |
iface MIXER | |
name 'Left Speaker Mixer Left DAC Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.91 { | |
iface MIXER | |
name 'Left Speaker Mixer Right DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.92 { | |
iface MIXER | |
name 'Left Speaker Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.93 { | |
iface MIXER | |
name 'Left Speaker Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.94 { | |
iface MIXER | |
name 'Left Speaker Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.95 { | |
iface MIXER | |
name 'Left Speaker Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.96 { | |
iface MIXER | |
name 'Right Headphone Mixer Left DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.97 { | |
iface MIXER | |
name 'Right Headphone Mixer Right DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.98 { | |
iface MIXER | |
name 'Right Headphone Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.99 { | |
iface MIXER | |
name 'Right Headphone Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.100 { | |
iface MIXER | |
name 'Right Headphone Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.101 { | |
iface MIXER | |
name 'Right Headphone Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.102 { | |
iface MIXER | |
name 'Left Headphone Mixer Left DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.103 { | |
iface MIXER | |
name 'Left Headphone Mixer Right DAC Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.104 { | |
iface MIXER | |
name 'Left Headphone Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.105 { | |
iface MIXER | |
name 'Left Headphone Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.106 { | |
iface MIXER | |
name 'Left Headphone Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.107 { | |
iface MIXER | |
name 'Left Headphone Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.108 { | |
iface MIXER | |
name 'STENR Mux' | |
value Normal | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Normal | |
item.1 'Sidetone Right' | |
} | |
} | |
control.109 { | |
iface MIXER | |
name 'STENL Mux' | |
value Normal | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Normal | |
item.1 'Sidetone Left' | |
} | |
} | |
control.110 { | |
iface MIXER | |
name 'LTENR Mux' | |
value Normal | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Normal | |
item.1 Loopthrough | |
} | |
} | |
control.111 { | |
iface MIXER | |
name 'LTENL Mux' | |
value Normal | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Normal | |
item.1 Loopthrough | |
} | |
} | |
control.112 { | |
iface MIXER | |
name 'LBENR Mux' | |
value Normal | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Normal | |
item.1 Loopback | |
} | |
} | |
control.113 { | |
iface MIXER | |
name 'LBENL Mux' | |
value Normal | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 Normal | |
item.1 Loopback | |
} | |
} | |
control.114 { | |
iface MIXER | |
name 'Right ADC Mixer IN12 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.115 { | |
iface MIXER | |
name 'Right ADC Mixer IN34 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.116 { | |
iface MIXER | |
name 'Right ADC Mixer IN56 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.117 { | |
iface MIXER | |
name 'Right ADC Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.118 { | |
iface MIXER | |
name 'Right ADC Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.119 { | |
iface MIXER | |
name 'Right ADC Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.120 { | |
iface MIXER | |
name 'Right ADC Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.121 { | |
iface MIXER | |
name 'Left ADC Mixer IN12 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.122 { | |
iface MIXER | |
name 'Left ADC Mixer IN34 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.123 { | |
iface MIXER | |
name 'Left ADC Mixer IN56 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.124 { | |
iface MIXER | |
name 'Left ADC Mixer LINEA Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.125 { | |
iface MIXER | |
name 'Left ADC Mixer LINEB Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.126 { | |
iface MIXER | |
name 'Left ADC Mixer MIC1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.127 { | |
iface MIXER | |
name 'Left ADC Mixer MIC2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.128 { | |
iface MIXER | |
name 'LINEB Mixer IN2 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.129 { | |
iface MIXER | |
name 'LINEB Mixer IN4 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.130 { | |
iface MIXER | |
name 'LINEB Mixer IN6 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.131 { | |
iface MIXER | |
name 'LINEB Mixer IN56 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.132 { | |
iface MIXER | |
name 'LINEA Mixer IN1 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.133 { | |
iface MIXER | |
name 'LINEA Mixer IN3 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.134 { | |
iface MIXER | |
name 'LINEA Mixer IN5 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.135 { | |
iface MIXER | |
name 'LINEA Mixer IN34 Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.136 { | |
iface MIXER | |
name 'DMIC Mux' | |
value ADC | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 ADC | |
item.1 DMIC | |
} | |
} | |
control.137 { | |
iface MIXER | |
name 'MIC2 Mux' | |
value IN34 | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 IN34 | |
item.1 IN56 | |
} | |
} | |
control.138 { | |
iface MIXER | |
name 'MIC1 Mux' | |
value IN12 | |
comment { | |
access 'read write' | |
type ENUMERATED | |
count 1 | |
item.0 IN12 | |
item.1 IN56 | |
} | |
} | |
control.139 { | |
iface MIXER | |
name 'Speakers Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.140 { | |
iface MIXER | |
name 'Headphone Jack Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.141 { | |
iface MIXER | |
name 'Mic Jack Switch' | |
value false | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
control.142 { | |
iface MIXER | |
name 'Int Mic Switch' | |
value true | |
comment { | |
access 'read write' | |
type BOOLEAN | |
count 1 | |
} | |
} | |
} | |
EOF | |
cat > /tmp/urfs/install-tegra.sh <<EOF | |
update-alternatives --install /etc/ld.so.conf.d/arm-linux-gnueabihf_EGL.conf arm-linux-gnueabihf_egl_conf /usr/lib/arm-linux-gnueabihf/tegra-egl/ld.so.conf 1000 | |
update-alternatives --install /etc/ld.so.conf.d/arm-linux-gnueabihf_GL.conf arm-linux-gnueabihf_gl_conf /usr/lib/arm-linux-gnueabihf/tegra/ld.so.conf 1000 | |
ldconfig | |
adduser user video | |
EOF | |
#su user -c "xdg-settings set default-web-browser chromium.desktop" | |
chmod a+x /tmp/urfs/install-tegra.sh | |
chroot /tmp/urfs /bin/bash -c /install-tegra.sh | |
rm /tmp/urfs/install-tegra.sh | |
echo "console=tty1 debug verbose root=${target_rootfs} rootwait rw lsm.module_locking=0" > kernel-config | |
vbutil_arch="x86" | |
if [ $ubuntu_arch = "armhf" ] | |
then | |
vbutil_arch="arm" | |
fi | |
current_rootfs="`rootdev -s`" | |
current_kernfs_num=$((${current_rootfs: -1:1}-1)) | |
current_kernfs=${current_rootfs: 0:-1}$current_kernfs_num | |
vbutil_kernel --repack ${target_kern} \ | |
--oldblob $current_kernfs \ | |
--keyblock /usr/share/vboot/devkeys/kernel.keyblock \ | |
--version 1 \ | |
--signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \ | |
--config kernel-config \ | |
--arch $vbutil_arch | |
#Set Ubuntu kernel partition as top priority for next boot (and next boot only) | |
cgpt add -i 6 -P 5 -T 1 ${target_disk} | |
echo -e " | |
Installation seems to be complete. If ChrUbuntu fails when you reboot, | |
power off your Chrome OS device and then turn it back on. You'll be back | |
in Chrome OS. If you're happy with ChrUbuntu when you reboot be sure to run: | |
sudo cgpt add -i 6 -P 5 -S 1 ${target_disk} | |
To make it the default boot option. The ChrUbuntu login is: | |
Username: user | |
Password: user | |
We're now ready to start ChrUbuntu! | |
" | |
read -p "Press [Enter] to reboot..." | |
reboot |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment