├── sparse ├── etc │ ├── default │ │ └── gpsd │ ├── sysconfig │ │ └── pulseaudio │ ├── modprobe.d │ │ ├── brcmfmac.conf │ │ └── wlan_blacklist.conf │ ├── modules-load.d │ │ ├── fuse.conf │ │ └── iptables.conf │ ├── udev │ │ └── rules.d │ │ │ ├── 99-media.rules │ │ │ └── 99-modem.rules │ ├── eglfs-config.json │ ├── systemd │ │ ├── system │ │ │ ├── basic.target.wants │ │ │ │ └── enable-modem.service │ │ │ ├── poweroff.target.wants │ │ │ │ └── disable-modem.service │ │ │ ├── multi-user.target.wants │ │ │ │ └── disable-autobrightness.service │ │ │ └── mce.service.d │ │ │ │ └── backlight.conf │ │ └── system-generators │ │ │ └── boot-mount-generator.sh │ ├── pulse │ │ ├── daemon.conf.d │ │ │ └── 40-pinephone.conf │ │ ├── xpolicy.conf.d │ │ │ ├── bluez5_earpiece.conf │ │ │ ├── earpiece.conf │ │ │ └── bluez5.conf │ │ ├── arm_native_default.pa │ │ └── xpolicy.conf │ ├── usb-moded │ │ ├── 60-pinephone.ini │ │ ├── usb-moded-configfs.ini │ │ └── dyn-modes │ │ │ └── 99-developer_mode-native.ini │ ├── sailfish-device-encryption-community │ │ └── devices.ini │ ├── zypp │ │ └── systemCheck.d │ │ │ └── ha.check │ ├── sensorfw │ │ ├── primaryuse.conf │ │ └── sensord.conf.d │ │ │ └── 90-dontbeevil.conf │ ├── mce │ │ └── 99-pinephone.ini │ ├── gpsd │ │ └── device-hook │ ├── connman │ │ └── main-native.conf │ └── dconf │ │ └── vendor.d │ │ └── silica-configs.txt ├── var │ └── lib │ │ └── environment │ │ ├── ofono │ │ ├── pinephone.conf │ │ └── noplugin.conf │ │ ├── connman │ │ └── override-main-config.conf │ │ ├── nemo │ │ └── 60-dontbeevil-vibra.conf │ │ └── compositor │ │ └── droid-hal-device.conf ├── usr │ ├── lib │ │ ├── systemd │ │ │ └── system │ │ │ │ ├── basic.target.wants │ │ │ │ └── setup-configfs.service │ │ │ │ ├── multi-user.target.wants │ │ │ │ └── cameras_setup.service │ │ │ │ ├── bluetooth.target.wants │ │ │ │ └── setup-bt-address.service │ │ │ │ ├── cameras_setup.service │ │ │ │ ├── disable-autobrightness.service │ │ │ │ ├── setup-configfs.service │ │ │ │ └── setup-bt-address.service │ │ └── qt5 │ │ │ └── plugins │ │ │ └── feedback │ │ │ └── qtfeedback-dontbeevil.ini │ ├── bin │ │ └── droid │ │ │ ├── disable-autobrightness.sh │ │ │ ├── cameras_setup.sh │ │ │ ├── droid-get-bt-address.sh │ │ │ ├── unmute-sound-card.sh │ │ │ └── setup-configfs.sh │ └── share │ │ ├── ssu │ │ └── features.d │ │ │ └── adaptation-pinephone.ini │ │ ├── csd │ │ └── settings.d │ │ │ └── hw-settings.ini │ │ └── ngfd │ │ └── plugins.d │ │ └── ngf-vibra-dontbeevil.ini └── boot │ ├── boot.pinephone10.scr │ ├── boot.pinephone11.scr │ ├── boot.pinephone10.cmd │ └── boot.pinephone11.cmd ├── .gitmodules ├── README.md ├── delete_file.list ├── rpm └── droid-config-pinephone.spec └── patterns ├── patterns-sailfish-device-configuration-pinephone.inc └── patterns-sailfish-device-adaptation-pinephone.inc /sparse/etc/default/gpsd: -------------------------------------------------------------------------------- 1 | DEVICES=/dev/EG25.NMEA 2 | -------------------------------------------------------------------------------- /sparse/var/lib/environment/ofono/pinephone.conf: -------------------------------------------------------------------------------- 1 | OFONO_QMI_EXTVOICE=y 2 | -------------------------------------------------------------------------------- /sparse/etc/sysconfig/pulseaudio: -------------------------------------------------------------------------------- 1 | CONFIG="-n --file=/etc/pulse/arm_native_default.pa" 2 | -------------------------------------------------------------------------------- /sparse/etc/modprobe.d/brcmfmac.conf: -------------------------------------------------------------------------------- 1 | options brcmfmac roamoff=1 feature_disable=0x82000 2 | -------------------------------------------------------------------------------- /sparse/etc/modules-load.d/fuse.conf: -------------------------------------------------------------------------------- 1 | # Load fuse at boot. It needed for statefs 2 | fuse 3 | -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/basic.target.wants/setup-configfs.service: -------------------------------------------------------------------------------- 1 | ../setup-configfs.service -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/multi-user.target.wants/cameras_setup.service: -------------------------------------------------------------------------------- 1 | ../cameras_setup.service -------------------------------------------------------------------------------- /sparse/etc/udev/rules.d/99-media.rules: -------------------------------------------------------------------------------- 1 | KERNEL=="media*", MODE="0666" 2 | KERNEL=="video*", MODE="0666" 3 | -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/bluetooth.target.wants/setup-bt-address.service: -------------------------------------------------------------------------------- 1 | ../setup-bt-address.service -------------------------------------------------------------------------------- /sparse/etc/eglfs-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "device" : "/dev/dri/card1", 3 | "hwcursor" : false 4 | } 5 | -------------------------------------------------------------------------------- /sparse/etc/systemd/system/basic.target.wants/enable-modem.service: -------------------------------------------------------------------------------- 1 | ../../../../lib/systemd/system/enable-modem.service -------------------------------------------------------------------------------- /sparse/var/lib/environment/connman/override-main-config.conf: -------------------------------------------------------------------------------- 1 | CONNMAN_ARGS="--config=/etc/connman/main-native.conf" 2 | -------------------------------------------------------------------------------- /sparse/etc/modules-load.d/iptables.conf: -------------------------------------------------------------------------------- 1 | #Load iptables for connman firewall rules 2 | ip_tables 3 | ip6_tables 4 | 5 | -------------------------------------------------------------------------------- /sparse/etc/systemd/system/poweroff.target.wants/disable-modem.service: -------------------------------------------------------------------------------- 1 | ../../../../lib/systemd/system/disable-modem.service -------------------------------------------------------------------------------- /sparse/etc/systemd/system/multi-user.target.wants/disable-autobrightness.service: -------------------------------------------------------------------------------- 1 | lib/systemd/system/disable-autobrightness.service -------------------------------------------------------------------------------- /sparse/boot/boot.pinephone10.scr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfish-on-dontbeevil/droid-config-pinephone/HEAD/sparse/boot/boot.pinephone10.scr -------------------------------------------------------------------------------- /sparse/boot/boot.pinephone11.scr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfish-on-dontbeevil/droid-config-pinephone/HEAD/sparse/boot/boot.pinephone11.scr -------------------------------------------------------------------------------- /sparse/etc/pulse/daemon.conf.d/40-pinephone.conf: -------------------------------------------------------------------------------- 1 | default-sample-rate = 48000 2 | alternate-sample-rate = 8000 3 | realtime-scheduling = no 4 | 5 | -------------------------------------------------------------------------------- /sparse/etc/usb-moded/60-pinephone.ini: -------------------------------------------------------------------------------- 1 | [udev] 2 | path=/devices/platform/soc/1f03400.rsb/sunxi-rsb-3a3/axp20x-usb-power-supply/power_supply/axp20x-usb 3 | -------------------------------------------------------------------------------- /sparse/usr/bin/droid/disable-autobrightness.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Disabling autobrightness" 4 | mcetool --set-als-autobrightness=disabled 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "droid-hal-configs"] 2 | path = droid-configs-device 3 | url = https://github.com/piggz/droid-hal-configs 4 | branch = native 5 | -------------------------------------------------------------------------------- /sparse/etc/usb-moded/usb-moded-configfs.ini: -------------------------------------------------------------------------------- 1 | [configfs] 2 | gadget_base_directory = /sys/kernel/config/usb_gadget/g1 3 | function_rndis = ecm.usb0 4 | 5 | -------------------------------------------------------------------------------- /sparse/etc/sailfish-device-encryption-community/devices.ini: -------------------------------------------------------------------------------- 1 | [home_device] 2 | name=Home 3 | device=/dev/mmcblk2p3 4 | mapper=home_encrypted 5 | mount=/home 6 | type=device 7 | -------------------------------------------------------------------------------- /sparse/etc/modprobe.d/wlan_blacklist.conf: -------------------------------------------------------------------------------- 1 | #Choose desired wlan driver here 2 | #This is the old staging driver 3 | blacklist 8723cs 4 | 5 | #This is the new upstream driver 6 | #blacklist rtw88_8723cs 7 | -------------------------------------------------------------------------------- /sparse/etc/systemd/system/mce.service.d/backlight.conf: -------------------------------------------------------------------------------- 1 | [Unit] 2 | After=sys-devices-platform-backlight-backlight-backlight.device 3 | Requires=sys-devices-platform-backlight-backlight-backlight.device 4 | -------------------------------------------------------------------------------- /sparse/usr/bin/droid/cameras_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | media-ctl -d /dev/media0 --set-v4l2 '"ov5640 3-004c":0[fmt:YUYV8_2X8/1280x720]' 3 | media-ctl -d /dev/media0 --set-v4l2 '"gc2145 3-003c":0[fmt:YUYV8_2X8/1280x720]' 4 | -------------------------------------------------------------------------------- /sparse/var/lib/environment/nemo/60-dontbeevil-vibra.conf: -------------------------------------------------------------------------------- 1 | FF_MEMLESS_SETTINGS=/usr/lib/qt5/plugins/feedback/qtfeedback-dontbeevil.ini 2 | NGF_FFMEMLESS_SETTINGS=/usr/share/ngfd/plugins.d/ngf-vibra-dontbeevil.ini 3 | 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # droid-config-dontbeevil 2 | Configuration files for the PinePhone 3 | 4 | ## Mer OBS 5 | This package is build on Mer OBS: https://build.merproject.org/package/show/nemo:devel:hw:pine:dontbeevil/droid-config-dontbeevil 6 | -------------------------------------------------------------------------------- /sparse/etc/zypp/systemCheck.d/ha.check: -------------------------------------------------------------------------------- 1 | requires:droid-config-@DEVICE@ 2 | #requires:droid-hal 3 | #requires:droid-hal-img-boot 4 | #requires:droid-hal-version-@DEVICE@ 5 | #requires:libhybris-libEGL 6 | #requires:libhybris-libGLESv2 7 | #requires:libhybris-libwayland-egl 8 | -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/cameras_setup.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Setup cameras resolutions and colorspaces 3 | 4 | [Service] 5 | Type=simple 6 | ExecStart=/usr/bin/droid/cameras_setup.sh 7 | RemainAfterExit=yes 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/disable-autobrightness.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Disable autobrightness 3 | 4 | [Service] 5 | Type=simple 6 | ExecStart=/usr/bin/droid/disable-autobrightness.sh 7 | RemainAfterExit=yes 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /sparse/etc/sensorfw/primaryuse.conf: -------------------------------------------------------------------------------- 1 | [plugins] 2 | accelerometeradaptor = iiosensorsadaptor 3 | orientationadaptor = iiosensorsadaptor 4 | alsadaptor = iiosensorsadaptor 5 | magnetometeradaptor = iiosensorsadaptor 6 | gyroscopeadaptor = iiosensorsadaptor 7 | proximityadaptor = iiosensorsadaptor 8 | -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/setup-configfs.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Setup configfs 3 | After=local-fs.target 4 | Before=usb-moded.service 5 | 6 | [Service] 7 | Type=simple 8 | ExecStart=/usr/bin/droid/setup-configfs.sh 9 | RemainAfterExit=yes 10 | 11 | [Install] 12 | WantedBy=basic.target 13 | -------------------------------------------------------------------------------- /sparse/etc/usb-moded/dyn-modes/99-developer_mode-native.ini: -------------------------------------------------------------------------------- 1 | [mode] 2 | name = developer_mode 3 | module = none 4 | network = 1 5 | network_interface = usb0 6 | appsync = 1 7 | 8 | [options] 9 | sysfs_path = /sys/kernel/config/usb_gadget/g1/functions/ 10 | sysfs_value = ecm.usb0 11 | sysfs_reset_value = none 12 | -------------------------------------------------------------------------------- /sparse/usr/lib/systemd/system/setup-bt-address.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Setup BT address file 3 | After=bluetooth.service 4 | 5 | [Service] 6 | Type=simple 7 | ExecStartPre=/bin/sleep 5 8 | ExecStart=/usr/bin/droid/droid-get-bt-address.sh 9 | RemainAfterExit=yes 10 | 11 | [Install] 12 | WantedBy=bluetooth.target 13 | -------------------------------------------------------------------------------- /sparse/var/lib/environment/compositor/droid-hal-device.conf: -------------------------------------------------------------------------------- 1 | # Config for dontbeevil 2 | EGL_PLATFORM=drm 3 | QT_QPA_EGLFS_KMS_CONFIG=/etc/eglfs-config.json 4 | QT_QPA_EGLFS_INTEGRATION=eglfs_kms 5 | QT_QPA_PLATFORM=eglfs 6 | QT_QPA_EGLFS_PHYSICAL_WIDTH=65 7 | QT_QPA_EGLFS_PHYSICAL_HEIGHT=130 8 | LIPSTICK_OPTIONS="-plugin evdevtablet:/dev/input/event2" 9 | 10 | -------------------------------------------------------------------------------- /sparse/etc/mce/99-pinephone.ini: -------------------------------------------------------------------------------- 1 | [LEDConfigHybris] 2 | 3 | # Choose Vanilla backend 4 | BackEnd=vanilla 5 | 6 | # Configure base directories for red/green/blue channels 7 | RedDirectory=/sys/class/leds/red:indicator 8 | GreenDirectory=/sys/class/leds/green:indicator 9 | BlueDirectory=/sys/class/leds/blue:indicator 10 | 11 | # No PWM breathing 12 | QuirkBreathing=true 13 | QuirkBreathType=2 14 | 15 | [BatteryUDevSettings] 16 | RefreshOnNotify = true 17 | -------------------------------------------------------------------------------- /sparse/usr/bin/droid/droid-get-bt-address.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | echo "droid-get-bt-address: Setting up bluetooth address" 3 | 4 | addresspath="/var/lib/bluetooth/" 5 | addressfile="$addresspath/board-address" 6 | 7 | mac=$(hciconfig | grep Address | grep -o "[[:xdigit:]:]\{11,17\}") 8 | if [ ! -f "$addressfile" ] && [ ! -z "$mac" ]; then 9 | echo "File not found, saving address" 10 | mkdir -p "$addresspath" 11 | chmod 0755 "$addresspath" 12 | echo $mac > "$addressfile" 13 | fi 14 | -------------------------------------------------------------------------------- /sparse/usr/lib/qt5/plugins/feedback/qtfeedback-dontbeevil.ini: -------------------------------------------------------------------------------- 1 | ACTUATOR_SPIN_UP=2 2 | ACTUATOR_SPIN_DOWN=4 3 | ACTUATOR_RUMBLE_MIN=8191 4 | ACTUATOR_RUMBLE_MAX=32767 5 | ACTUATOR_MAGNITUDE_MAX=16000 6 | ACTUATOR_MAGNITUDE_MEAN=12000 7 | LONG_PRESS_DURATION=220 8 | LONG_PRESS_DELAY=4 9 | LONG_PRESS_MAX=16384 10 | LONG_PRESS_MIN=8191 11 | BUTTON_PRESS_DURATION=60 12 | BUTTON_PRESS_DELAY=4 13 | BUTTON_PRESS_MAX=24576 14 | BUTTON_PRESS_MIN=20478 15 | KEYPAD_PRESS_DURATION=85 16 | KEYPAD_PRESS_DELAY=4 17 | KEYPAD_PRESS_MAX=32767 18 | KEYPAD_PRESS_MIN=32767 19 | 20 | -------------------------------------------------------------------------------- /sparse/usr/share/ssu/features.d/adaptation-pinephone.ini: -------------------------------------------------------------------------------- 1 | [adaptation-pinephone] 2 | repos = adaptation-pinephone 3 | pattern = Feature community adaptation 4 | description = Enable ssu for pinephone 5 | 6 | [repositories] 7 | adaptation-dontbeevil = http://repo.sailfishos.org/obs/nemo:/devel:/hw:/pine:/dontbeevil/sailfish_latest_%(arch)/ 8 | adaptation-pinephone = http://repo.sailfishos.org/obs/nemo:/devel:/hw:/pine:/dontbeevil:/pinephone/sailfish_latest_%(arch)/ 9 | hw-native-common = http://repo.sailfishos.org/obs/nemo:/devel:/hw:/native-common/sailfish_latest_%(arch)/ 10 | -------------------------------------------------------------------------------- /sparse/usr/bin/droid/unmute-sound-card.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Configure A64 sound card in ALSA 3 | CARD=1 # A64 sound card 4 | amixer -c $CARD set 'AIF1 Slot 0 Digital DAC' unmute 5 | amixer -c $CARD set 'Line Out' unmute 6 | amixer -c $CARD set 'Line Out' 100% 7 | 8 | # Set A64 sound card as default sink for Pulseaudio 9 | # Wait until the device appears 10 | SOURCE="alsa_output.platform-sound.stereo-fallback" 11 | while ! pactl list sources | grep "$SOURCE" 12 | do 13 | echo "Waiting for: $SOURCE" 14 | sleep 1 15 | done 16 | pacmd set-default-sink $SOURCE 17 | 18 | echo "Done" 19 | -------------------------------------------------------------------------------- /sparse/etc/pulse/xpolicy.conf.d/bluez5_earpiece.conf: -------------------------------------------------------------------------------- 1 | [card] 2 | type = earpiece 3 | name0 = equals:$card 4 | profile0 = $card_profile_default 5 | name1 = startswith:"bluez_card" 6 | profile1 = off 7 | flags1 = disable_notify 8 | 9 | [card] 10 | type = earpieceforcall 11 | name0 = equals:$card 12 | profile0 = $card_profile_voicecall 13 | name1 = startswith:"bluez_card" 14 | profile1 = off 15 | flags1 = disable_notify 16 | 17 | [card] 18 | type = earpieceforalien 19 | name0 = equals:$card 20 | profile0 = $card_profile_default 21 | name1 = startswith:"bluez_card" 22 | profile1 = off 23 | flags1 = disable_notify 24 | -------------------------------------------------------------------------------- /sparse/etc/sensorfw/sensord.conf.d/90-dontbeevil.conf: -------------------------------------------------------------------------------- 1 | [accelerometer] 2 | input_match=mpu6050 3 | intervals = "200=>2000" 4 | default_interval=500 5 | transformation_matrix = "0,1,0,-1,0,0,0,0,-1" 6 | 7 | [als] 8 | input_match=stk3310 9 | intervals = "200=>2000" 10 | default_interval=500 11 | 12 | [gyroscope] 13 | input_match=mpu6050 14 | intervals = "200=>2000" 15 | default_interval=500 16 | transformation_matrix = "0,1,0,-1,0,0,0,0,-1" 17 | 18 | [magnetometer] 19 | input_match=lis3mdl 20 | intervals = "200=>2000" 21 | default_interval=500 22 | 23 | [lis3mdl] 24 | scale = 1.0 25 | 26 | [proximity] 27 | input_match=stk3310 28 | intervals = "200=>2000" 29 | default_interval=500 30 | threshold=19 31 | -------------------------------------------------------------------------------- /sparse/etc/gpsd/device-hook: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Device hook script to enable and disable the EG25 modem GPS 4 | # Based on: https://zedm.net/archives/tag/device-hook 5 | # This script needs to be owned by root and be accessible from the dialout group with permissions 750. 6 | # 7 | if [ "$1" == "/dev/EG25.NMEA" ] && [ "$2" == "ACTIVATE" ]; 8 | then 9 | echo "Activating EG25 GPS receiver" 10 | echo "AT+QGPS=1" > "/dev/EG25.AT" 11 | sleep 5 12 | elif [ "$1" == "/dev/EG25.NMEA" ] && [ "$2" == "DEACTIVATE" ]; 13 | then 14 | echo "Deactivating EG25 GPS receiver" 15 | echo "AT+QGPSEND" > "/dev/EG25.AT" 16 | else 17 | echo "Unhandeled arguments: $1 $2" 18 | exit 1 19 | fi 20 | 21 | -------------------------------------------------------------------------------- /sparse/etc/pulse/xpolicy.conf.d/earpiece.conf: -------------------------------------------------------------------------------- 1 | [device] 2 | type = earpieceandtvout 3 | sink = alsa.card_name@equals:$card_name 4 | ports = alsa.card_name@equals:$card_name->$sink_earpiece 5 | 6 | [device] 7 | type = earpieceforcall 8 | sink = alsa.card_name@equals:$card_name 9 | ports = alsa.card_name@equals:$card_name->$sink_earpiece 10 | flags = delayed_port_change 11 | delay = 200 12 | 13 | [device] 14 | type = earpiece 15 | sink = alsa.card_name@equals:$card_name 16 | ports = alsa.card_name@equals:$card_name->$sink_earpiece 17 | 18 | [device] 19 | type = earpieceforalien 20 | sink = alsa.card_name@equals:$card_name 21 | ports = alsa.card_name@equals:$card_name->$sink_earpiece 22 | flags = refresh_always 23 | -------------------------------------------------------------------------------- /sparse/etc/connman/main-native.conf: -------------------------------------------------------------------------------- 1 | [General] 2 | 3 | FallbackTimeservers = 0.sailfishos.pool.ntp.org,1.sailfishos.pool.ntp.org,2.sailfishos.pool.ntp.org,3.sailfishos.pool.ntp.org 4 | NetworkInterfaceBlacklist = p2p,rmnet,rev_rmnet,wlan1 5 | SingleConnectedTechnology = false 6 | Ipv4StatusUrl = http://ipv4.jolla.com/return_204 7 | Ipv6StatusUrl = http://ipv6.jolla.com/return_204 8 | PreferredTechnologies = bluetooth,wifi,cellular 9 | PersistentTetheringMode = false 10 | AllowHostnameUpdates = false 11 | TetheringSubnetBlock = 172.28.172.0 12 | DontBringDownAtStartup = rndis 13 | InputRequestTimeout = 300 14 | # ConnMan will create dir "connman", no need to define here. 15 | StorageRoot = /home/.system/var/lib 16 | StateDir = /run 17 | 18 | -------------------------------------------------------------------------------- /sparse/var/lib/environment/ofono/noplugin.conf: -------------------------------------------------------------------------------- 1 | # The EC25 QMI modem requires the following plugins in ofono: 2 | # - udev and udevng for detecting the modem 3 | # - qmimodem and gobi for sending commands to the modem 4 | OFONO_ARGS="--noplugin=\ 5 | ,he910\ 6 | ,dun_gw_bluez5\ 7 | ,hfp_bluez5\ 8 | ,hfp_ag_bluez5\ 9 | ,cdma_provision\ 10 | ,bluez5\ 11 | ,isimodem\ 12 | ,n900\ 13 | ,u8500\ 14 | ,cdmamodem\ 15 | ,isiusb\ 16 | ,nwmodem\ 17 | ,ztemodem\ 18 | ,iceramodem\ 19 | ,huaweimodem\ 20 | ,calypsomodem\ 21 | ,swmodem\ 22 | ,mbmmodem\ 23 | ,hsomodem\ 24 | ,ifxmodem\ 25 | ,stemodem\ 26 | ,dunmodem\ 27 | ,hfpmodem\ 28 | ,speedupmodem\ 29 | ,phonesim\ 30 | ,rilmodem\ 31 | ,ril\ 32 | ,telitmodem \ 33 | --plugin=udev,udevng,qmimodem,gobi,sailfish_manager" 34 | 35 | -------------------------------------------------------------------------------- /sparse/boot/boot.pinephone10.cmd: -------------------------------------------------------------------------------- 1 | echo "========== Setting up bootargs ===========" 2 | gpio set 98 # Enable vibrator 3 | gpio set 114 # Turn LED green on 4 | part uuid ${devtype} ${devnum}:2 uuid 5 | setenv bootargs console=tty0 console=ttyS0,115200 root=PARTUUID=${uuid} no_console_suspend rootwait quiet earlycon=uart,mmio32,0x01c28000 panic=10 consoleblank=0 loglevel=0 6 | 7 | echo "========= Loading DTB and kernel =========" 8 | gpio set 115 # Turn LED red on 9 | load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /sun50i-a64-pinephone-1.0.dtb 10 | load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /Image 11 | 12 | echo "============= Booting kernel =============" 13 | gpio set 116 # Turn LED blue on 14 | gpio clear 98 # Disable vibrator 15 | booti ${kernel_addr_r} - ${fdt_addr_r} 16 | 17 | -------------------------------------------------------------------------------- /sparse/etc/dconf/vendor.d/silica-configs.txt: -------------------------------------------------------------------------------- 1 | [desktop/sailfish/silica] 2 | theme_pixel_ratio=1.0 3 | theme_icon_subdir='z1.0-medium' 4 | font_size_tiny=16 5 | font_size_extra_small=18 6 | font_size_small=22 7 | font_size_medium=28 8 | font_size_large=35 9 | font_size_extra_large=42 10 | font_size_huge=48 11 | item_size_extra_small=36 12 | item_size_small=48 13 | item_size_medium=64 14 | item_size_large=88 15 | item_size_extra_large=120 16 | item_size_huge=140 17 | icon_size_extra_small=16 18 | icon_size_small=24 19 | icon_size_small_plus=36 20 | icon_size_medium=48 21 | icon_size_large=60 22 | icon_size_extra_large=72 23 | icon_size_launcher=72 24 | button_width_extra_small=276 25 | button_width_small=432 26 | button_width_medium=510 27 | button_width_large=668 28 | padding_small=10 29 | horizontal_page_margin=80 30 | default_allowed_orientations=15 31 | webview_customlayoutwidth_scalingfactor=1.0 32 | -------------------------------------------------------------------------------- /sparse/boot/boot.pinephone11.cmd: -------------------------------------------------------------------------------- 1 | echo "========== Setting up bootargs ===========" 2 | gpio set 98 # Enable vibrator 3 | gpio set 114 # Turn LED green on 4 | part uuid ${devtype} ${devnum}:2 uuid 5 | setenv bootargs console=tty0 console=ttyS0,115200 root=PARTUUID=${uuid} no_console_suspend rootwait quiet earlycon=uart,mmio32,0x01c28000 panic=10 consoleblank=0 loglevel=0 6 | 7 | echo "========= Loading DTB and kernel =========" 8 | gpio set 115 # Turn LED red on 9 | 10 | if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /${fdtfile}; then 11 | echo "Loaded hinted fdtfile (${fdtfile})" 12 | else 13 | echo "Hinted fdtfile not found, fallbacking to /sun50i-a64-pinephone-1.1.dtb" 14 | load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /sun50i-a64-pinephone-1.1.dtb 15 | fi 16 | 17 | load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /Image 18 | 19 | echo "============= Booting kernel =============" 20 | gpio set 116 # Turn LED blue on 21 | gpio clear 98 # Disable vibrator 22 | booti ${kernel_addr_r} - ${fdt_addr_r} 23 | 24 | -------------------------------------------------------------------------------- /delete_file.list: -------------------------------------------------------------------------------- 1 | /usr/bin/droid/droid-hal-shutdown.sh 2 | /usr/bin/droid/droid-hal-startup.sh 3 | /usr/bin/droid/droid-init-done.sh 4 | /usr/bin/droid/droid-load-firmware.sh 5 | /usr/lib/systemd/system/actdead.target.wants/droid-hal-init.service 6 | /usr/lib/systemd/system/droid-hal-init.service 7 | /usr/lib/systemd/system/droid-late-start.service 8 | /usr/lib/systemd/system/graphical.target.wants/droid-hal-init.service 9 | /usr/lib/systemd/system/graphical.target.wants/droid-late-start.service 10 | /etc/media_codecs.xml 11 | /etc/media_codecs_ffmpeg.xml 12 | /etc/media_codecs_google_audio.xml 13 | /etc/media_codecs_google_telephony.xml 14 | /etc/media_codecs_google_video.xml 15 | /etc/media_codecs_performance.xml 16 | /etc/media_profiles.xml 17 | /etc/mixer_paths.xml 18 | /etc/xtra_root_cert.pem 19 | /etc/xtwifi.conf 20 | /etc/sap.conf 21 | /etc/sec_config 22 | /etc/izat.conf 23 | /etc/lowi.conf 24 | /etc/acdbdata 25 | /etc/gps.conf 26 | /etc/audio_platform_info.xml 27 | /usr/lib/systemd/user/lipstick.service.d/50-compositor.conf 28 | /usr/lib/systemd/user/jolla-startupwizard-pre-user-session.service.d/50-compositor.conf 29 | /etc/ofono/binder.conf 30 | /usr/share/ssu/features.d/adaptation-community.ini 31 | 32 | -------------------------------------------------------------------------------- /sparse/etc/systemd/system-generators/boot-mount-generator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Generator script for boot.mount 3 | # Makes sure that the right /boot partition is mounted depending on the boot media 4 | 5 | SERVICE_NAME=boot.mount 6 | GENERATOR_DIR=$1 # Normal generator 7 | UNIT_FILE=$GENERATOR_DIR/$SERVICE_NAME 8 | WHAT=`mount | grep " / " | awk '{print $1}' | sed 's/p2/p1/g'` 9 | 10 | # Create new unit and overwrite if needed 11 | function new_unit () { 12 | rm -f $UNIT_FILE 13 | touch $UNIT_FILE 14 | } 15 | 16 | # Append line to unit 17 | function append_unit () { 18 | echo $1 | dd of=$UNIT_FILE oflag=append conv=notrunc 19 | } 20 | 21 | # Create unit 22 | new_unit 23 | append_unit "[Unit]" 24 | append_unit "Description=Mount boot partition" 25 | append_unit "Before=local-fs.target" 26 | append_unit "" 27 | append_unit "[Mount]" 28 | append_unit "What=$WHAT" 29 | append_unit "Where=/boot" 30 | append_unit "Type=ext4" 31 | append_unit "Options=noatime" 32 | append_unit "" 33 | append_unit "[Install]" 34 | append_unit "WantedBy=local-fs.target" 35 | 36 | # Enable unit 37 | mkdir -p "$GENERATOR_DIR/local-fs.target.wants" 2>/dev/null 38 | ln -sf "$UNIT_FILE" "$GENERATOR_DIR/local-fs.target.wants/$serviceName" 39 | -------------------------------------------------------------------------------- /rpm/droid-config-pinephone.spec: -------------------------------------------------------------------------------- 1 | # These and other macros are documented in ../droid-configs-device/droid-configs.inc 2 | # Feel free to cleanup this file by removing comments, once you have memorised them ;) 3 | #Requires(pre):sailfish-setup 4 | 5 | %define device pinephone 6 | %define vendor pine 7 | 8 | %define vendor_pretty Pine64 9 | %define device_pretty PinePhone 10 | 11 | # Community HW adaptations need this 12 | %define community_adaptation 1 13 | 14 | # Sailfish OS is considered to-scale, if in app grid you get 4-in-a-row icons 15 | # and 2x2 or 3x3 covers when up-to-4 or 5-or-more apps are open respectively. 16 | # For 4-5.5" device screen sizes of 16:9 ratio, use this formula (hold portrait): 17 | # pixel_ratio = 4.5/DiagonalDisplaySizeInches * HorizontalDisplayResolution/540 18 | # Other screen sizes and ratios will require more trial-and-error. 19 | %define pixel_ratio 1.0 20 | 21 | %define native_build 1 22 | 23 | %include droid-configs-device/droid-configs.inc 24 | %include patterns/patterns-sailfish-device-adaptation-pinephone.inc 25 | %include patterns/patterns-sailfish-device-configuration-pinephone.inc 26 | 27 | # IMPORTANT if you want to comment out any macros in your .spec, delete the % 28 | # sign, otherwise they will remain defined! E.g.: 29 | #define some_macro "I'll not be defined because I don't have % in front" 30 | -------------------------------------------------------------------------------- /sparse/usr/bin/droid/setup-configfs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #Set up configfs as we are not using droid-boot init-script 4 | 5 | USB_FUNCTIONS=ecm 6 | GADGET_DIR=/sys/kernel/config/usb_gadget 7 | 8 | # Sugar for accessing usb config 9 | write() { 10 | echo -n "$2" > "$1" 11 | } 12 | 13 | mkdir $GADGET_DIR/g1 14 | write $GADGET_DIR/g1/idVendor "0x18D1" 15 | write $GADGET_DIR/g1/idProduct "0xD001" 16 | mkdir $GADGET_DIR/g1/strings/0x409 17 | write $GADGET_DIR/g1/strings/0x409/serialnumber "$1" 18 | write $GADGET_DIR/g1/strings/0x409/manufacturer "Mer Boat Loader" 19 | write $GADGET_DIR/g1/strings/0x409/product "Pine64 Pinephone" 20 | 21 | if echo $USB_FUNCTIONS | grep -q "ecm"; then 22 | mkdir $GADGET_DIR/g1/functions/ecm.usb0 23 | fi 24 | echo $USB_FUNCTIONS | grep -q "mass_storage" && mkdir $GADGET_DIR/g1/functions/storage.0 25 | 26 | mkdir $GADGET_DIR/g1/configs/b.1 27 | mkdir $GADGET_DIR/g1/configs/b.1/strings/0x409 28 | write $GADGET_DIR/g1/configs/b.1/strings/0x409/configuration "$USB_FUNCTIONS" 29 | 30 | if echo $USB_FUNCTIONS | grep -q "ecm"; then 31 | ln -s $GADGET_DIR/g1/functions/ecm.usb0 $GADGET_DIR/g1/configs/b.1 32 | fi 33 | echo $USB_FUNCTIONS | grep -q "mass_storage" && ln -s $GADGET_DIR/g1/functions/storage.0 $GADGET_DIR/g1/configs/b.1 34 | 35 | echo "$(ls /sys/class/udc)" > $GADGET_DIR/g1/UDC 36 | 37 | -------------------------------------------------------------------------------- /sparse/etc/udev/rules.d/99-modem.rules: -------------------------------------------------------------------------------- 1 | SUBSYSTEMS=="usb", ENV{.LOCAL_ifNum}="$attr{bInterfaceNumber}" 2 | 3 | SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.LOCAL_ifNum}=="01", SYMLINK+="EG25.NMEA", MODE="0660" 4 | SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.LOCAL_ifNum}=="02", SYMLINK+="EG25.AT", MODE="0660" 5 | SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.LOCAL_ifNum}=="03", SYMLINK+="EG25.MODEM", MODE="0660" 6 | 7 | ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ENV{DEVTYPE}=="usb_device", GOTO="eg25_start" 8 | GOTO="eg25_end" 9 | 10 | # Default attributes values 11 | LABEL="eg25_start" 12 | ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/control}="auto" 13 | ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/autosuspend_delay_ms}="3000" 14 | ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/wakeup}="enabled" 15 | ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/persist}="0" 16 | 17 | # power/control needs to be "on" for the community-maintained firmware 18 | ATTRS{serial}=="community_fw", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/control}="on" 19 | 20 | # Special trick for the PinePhone Pro: set power/persist to 1 *only* with the community FW 21 | # We can identify the PPP by looking for the string "pinephone-pro" in the device tree "compatible" property 22 | ATTRS{serial}=="community_fw", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", PROGRAM=="/bin/grep pine64,pinephone-pro /proc/device-tree/compatible", ATTR{power/persist}="1" 23 | 24 | LABEL="eg25_end" 25 | -------------------------------------------------------------------------------- /sparse/usr/share/csd/settings.d/hw-settings.ini: -------------------------------------------------------------------------------- 1 | [features] 2 | AudioMic1=1 3 | AudioMic2=0 4 | BackCamera=1 5 | BackCameraFlash=1 6 | Backlight=1 7 | Battery=1 8 | Bluetooth=1 9 | CellularData=1 10 | CellularVoice=1 11 | ECompass=1 12 | FmRadio=0 13 | FrontCamera=1 14 | FrontCameraFlash=0 15 | GPS=1 16 | CellInfo=1 17 | GSensor=1 18 | Gyro=1 19 | Hall=0 20 | Fingerprint=0 21 | Headset=1 22 | Key=1 23 | LCD=1 24 | LED=1 25 | LightSensor=1 26 | Loudspeaker=1 27 | TOH=0 28 | ProxSensor=1 29 | Receiver=0 30 | SDCard=0 31 | SIM=1 32 | StereoLoudspeaker=1 33 | Touch=1 34 | TouchAuto=0 35 | UsbCharging=1 36 | UsbOtg=1 37 | Vibrator=1 38 | Wifi=1 39 | 40 | [BackCamera] 41 | #Flash=1 42 | # Focus modes: 43 | # 1 == Manual 44 | # 2 == Hyperfocal 45 | # 4 == Infinity 46 | # 8 == Auto 47 | # 16 == Continious 48 | # 32 == Manual 49 | FocusMode=8 50 | 51 | #[FrontCamera] 52 | #FocusMode=2 53 | 54 | # Each RunInTest can be configured to have a pass rate requirement. 55 | # By default we're expecting 100% pass rate. 56 | [FrontBackCamera] 57 | RunInTestPassRateRequirement=0.95 58 | 59 | [LED] 60 | # Supported types are: Binary, White, AmberGreen, RedGreen, and RGB 61 | LedType=RGB 62 | 63 | #[FmRadio] 64 | #DefaultFrequency=90.0 65 | #InputDevice=input-fm_tuner 66 | 67 | # Defaults should be fine for most of the devices, 68 | # but in case one wants to loosen or stricten the defaults 69 | # it can be done here. 70 | #[GSensor] 71 | #MinY=-1.0 72 | #MaxY=1.0 73 | #MinX=-1.0 74 | #MaxX=1.0 75 | #MinZ=8.8 76 | #MaxZ=10.8 77 | 78 | # As for GSensor, default should be fine, but if need adjustment 79 | # Min and Max values set min and max for all axis X, Y and Z 80 | #[Gyro] 81 | #Min=-1.3 82 | #Max=1.3 83 | 84 | [Battery] 85 | VoltageTest=False 86 | 87 | [Audio] 88 | RecordTopDevice=input-builtin_mic 89 | RecordBottomDevice=input-builtin_mic 90 | RecordTopDeviceChannel=left 91 | RecordBottomDeviceChannel=right 92 | 93 | -------------------------------------------------------------------------------- /patterns/patterns-sailfish-device-configuration-pinephone.inc: -------------------------------------------------------------------------------- 1 | %package -n patterns-sailfish-device-configuration-pinephone 2 | Summary: Sailfish Configuration Pinephone 3 | 4 | Requires: patterns-sailfish-device-configuration-common-pinephone 5 | Requires: patterns-sailfish-device-adaptation-pinephone 6 | 7 | Requires: patterns-sailfish-cellular-apps 8 | Requires: patterns-sailfish-applications 9 | Requires: patterns-sailfish-ui 10 | 11 | # Early stages of porting benefit from these: 12 | #Requires: sailfish-porter-tools 13 | Requires: jolla-developer-mode 14 | Requires: sailfishsilica-qt5-demos 15 | Requires: busybox-static 16 | Requires: net-tools 17 | Requires: openssh-clients 18 | Requires: openssh-server 19 | Requires: vim-enhanced 20 | Requires: zypper 21 | Requires: strace 22 | 23 | # jolla-rnd-device will enable usb-moded even when UI is not yet 24 | # brought up (useful during development, available since update10) 25 | Requires: jolla-rnd-device 26 | #End sailfish-porter-tools 27 | 28 | # Jolla Store Items 29 | Requires: patterns-sailfish-consumer-generic 30 | Requires: patterns-sailfish-store-applications 31 | 32 | Requires: sailfish-content-graphics-z1.0 33 | Requires: jolla-settings-accounts-extensions-3rd-party-all 34 | 35 | # For Mozilla location services (online) 36 | Requires: geoclue-provider-mlsdb 37 | 38 | # Sailfish OS CSD tool for hardware testing 39 | Requires: csd 40 | 41 | # KMod required for kmod-static-nodes.service 42 | Requires: kmod 43 | 44 | #Debug tools 45 | Recommends: vi 46 | Recommends: strace 47 | Recommends: gdb 48 | Recommends: mce-tools 49 | 50 | #Sailfish porter tools 51 | Recommends: jolla-developer-mode 52 | Recommends: sailfishsilica-qt5-demos 53 | Recommends: busybox-static 54 | Recommends: net-tools 55 | Recommends: openssh-clients 56 | Recommends: openssh-server 57 | Recommends: vim-enhanced 58 | Recommends: zypper 59 | Recommends: strace 60 | Recommends: jolla-rnd-device 61 | 62 | #Chum 63 | Recommends: sailfishos-chum-gui 64 | 65 | %description -n patterns-sailfish-device-configuration-pinephone 66 | Pattern with packages for pinephone configurations 67 | 68 | %files -n patterns-sailfish-device-configuration-pinephone 69 | -------------------------------------------------------------------------------- /patterns/patterns-sailfish-device-adaptation-pinephone.inc: -------------------------------------------------------------------------------- 1 | %package -n patterns-sailfish-device-adaptation-pinephone 2 | Summary: Sailfish HW Adaptation Pinephone 3 | 4 | Requires: qt5-plugin-generic-evdev 5 | 6 | # Graphics (mesa) 7 | Requires: mesa-dri-drivers 8 | Requires: mesa-libEGL 9 | Requires: mesa-libGLESv2 10 | Requires: mesa-libgbm 11 | Requires: mesa-libglapi 12 | Requires: wayland-egl 13 | Requires: qt5-plugin-platform-eglfs 14 | 15 | # Splash screen 16 | Requires: plymouth-lite 17 | Requires: plymouth-lite-theme-default 18 | 19 | # Bluetooth tools 20 | Requires: bluez5-tools 21 | #Requires: bluetooth-rfkill-event-hciattach 22 | 23 | # Vibra 24 | Requires: qt5-feedback-haptics-ffmemless 25 | Requires: libngf-qt5-qtfeedback 26 | 27 | # Sensors 28 | #Requires: hybris-libsensorfw-qt5 29 | 30 | # Pulseaudio 31 | Requires: pulseaudio-module-keepalive 32 | 33 | # Connman 34 | Requires: sailfish-connman-plugin-tethering-keepalive 35 | 36 | # for audio recording to work: 37 | Requires: qt5-qtmultimedia-plugin-mediaservice-gstmediacapture 38 | 39 | # These need to be per-device due to differing backends (fbdev, eglfs, hwc, ..?) 40 | Requires: qt5-qtwayland-wayland_egl 41 | Requires: qtscenegraph-adaptation 42 | 43 | # Add GStreamer v1.0 as standard 44 | Requires: gstreamer1.0 45 | Requires: gstreamer1.0-plugins-good 46 | Requires: gstreamer1.0-plugins-base 47 | Requires: gstreamer1.0-plugins-bad 48 | Requires: nemo-gstreamer1.0-interfaces 49 | #Requires: gstreamer1.0-droid 50 | 51 | # This is needed for notification LEDs 52 | Requires: mce-plugin-libhybris 53 | 54 | ## USB mode controller 55 | ## Enables mode selector upon plugging USB cable: 56 | Requires: usb-moded 57 | #Requires: usb-moded-defaults-android 58 | #Requires: usb-moded-developer-mode-android 59 | 60 | Requires: rfkill 61 | 62 | # enable device lock and allow to select untrusted software 63 | Requires: jolla-devicelock-plugin-encsfa 64 | 65 | # For GPS 66 | Requires: gpsd 67 | Requires: geoclue 68 | Requires: geoclue-provider-gpsd3 69 | 70 | # For mounting SD card automatically 71 | Requires: sd-utils 72 | 73 | # sound 74 | Requires: alsa-utils 75 | Requires: alsa-ucm-conf 76 | 77 | # Cameras 78 | Requires: v4l-utils 79 | 80 | # Bluetooth binaries 81 | Requires: realtek-bt-firmware 82 | 83 | Requires: kernel-adaptation-pine64 84 | Requires: droid-config-pinephone-sailfish 85 | Requires: droid-config-pinephone-pulseaudio-settings 86 | Requires: droid-config-pinephone-policy-settings 87 | Requires: droid-config-pinephone-preinit-plugin 88 | Requires: droid-config-pinephone-bluez5 89 | Requires: droid-hal-version-pinephone 90 | #Requires: droid-config-donebeevil-flashing 91 | 92 | #Include atinout to talk to the modem 93 | Requires: atinout 94 | Requires: eg25-manager 95 | 96 | # Enable home encryption 97 | Requires: sailfish-device-encryption-community 98 | 99 | %description -n patterns-sailfish-device-adaptation-pinephone 100 | Pattern with packages for pinephone HW Adaptation 101 | 102 | %files -n patterns-sailfish-device-adaptation-pinephone 103 | 104 | -------------------------------------------------------------------------------- /sparse/usr/share/ngfd/plugins.d/ngf-vibra-dontbeevil.ini: -------------------------------------------------------------------------------- 1 | [ffmemless] 2 | 3 | # System wide effect settings file evironment variable. 4 | # The if there are parameters for any effects in the system settings file 5 | # pointed by the given environment variable, they will override the effect 6 | # settings for those effects. Other effects remain unchanged. 7 | system_effects_env = NGF_FFMEMLESS_SETTINGS 8 | 9 | # EXAMPLE: re-define NGF_SHORT in system settings file 10 | # export NGF_FFMEMLESS_SETTINGS=/path/to/my/feedback.ini 11 | # contents of "feedback.ini" would look like this 12 | #[ffmemless] 13 | #NGF_SHORT_TYPE = rumble 14 | #NGF_SHORT_DURATION = 110 15 | #NGF_SHORT_DELAY = 1 16 | #NGF_SHORT_MAGNITUDE = 56000 17 | # 18 | # Please note that the [ffmemless] tag is needed for glib to find the effects. 19 | # Now this will change the NGF_SHORT settings to what they are above. 20 | 21 | 22 | # All effect names must be listed here, otherwise they don't get created 23 | supported_effects = NGF_SHORT;NGF_LONG;NGF_STRONG;NGF_BATTERYLOW;NGF_RINGTONE;NGF_CLOCK;NGF_SMS 24 | 25 | # Setting up the effect parameters. 26 | # - The only mandatory parameter is _TYPE, if it's missing effect is not created 27 | # - Full list of valid parameter value ranges below 28 | # 29 | # - Generic parameters for all effect types 30 | # 31 | # _TYPE = [rumble|periodic], no default, mandatory parameter 32 | # _DIRECTION = [forward|reverse], defaults to forward 33 | # _DURATION = [0,65535], milliseconds, defaults to NGF_DEFAULT_DURATION 34 | # _DELAY = [0,65535], milliseconds before starting playback, defaults to 0 35 | # 36 | # _REPEAT = [1,4294967295], how many times to repeat effect, defaults to 1 37 | # Please note that if the event has "sound.repeat" enabled, 38 | # the effect is repeated until stop signal regardless of _REPEAT 39 | # value. 40 | # 41 | # - Type specific parameters for rumble effects: 42 | # 43 | # _MAGNITUDE = [0,65535], defaults to NGF_DEFAULT_RMAGNITUDE 44 | # 45 | # -Type specific parameters for periodic effects 46 | # 47 | # _WAVEFORM = [sine|triangle|square], defaults to sine 48 | # _PERIOD = [0,65535], defaults to 0 49 | # _MAGNITUDE = [0,32767], defaults to NGF_DEFAULT_PMAGNITUDE 50 | # _OFFSET = [0,32767], defaults to 0 51 | # _PHASE = [0,65535], in milliseconds, defaults to 0 52 | # _ATTACK = [0,65535], in milliseconds, defaults to 0 53 | # _ALEVEL = [0,32767], defaults to 0 54 | # _FADE = [0,65535], in milliseconds, defaults to 0 55 | # _FLEVEL = [0,32767], defaults to 0 56 | 57 | NGF_SHORT_TYPE = rumble 58 | NGF_SHORT_DURATION = 240 59 | NGF_SHORT_DELAY = 0 60 | NGF_SHORT_MAGNITUDE = 27000 61 | 62 | NGF_LONG_TYPE = periodic 63 | NGF_LONG_WAVEFORM = sine 64 | NGF_LONG_DURATION = 850 65 | NGF_LONG_PERIOD = 150 66 | NGF_LONG_MAGNITUDE = 15383 67 | NGF_LONG_ATTACK = 0 68 | NGF_LONG_ALEVEL = 0 69 | NGF_LONG_FADE = 180 70 | NGF_LONG_FLEVEL = 0 71 | 72 | NGF_STRONG_TYPE = rumble 73 | NGF_STRONG_DURATION = 320 74 | NGF_STRONG_DELAY = 0 75 | NGF_STRONG_MAGNITUDE = 65535 76 | 77 | NGF_BATTERYLOW_TYPE = periodic 78 | NGF_BATTERYLOW_WAVEFORM = sine 79 | NGF_BATTERYLOW_DURATION = 120 80 | NGF_BATTERYLOW_REPEAT = 2 81 | NGF_BATTERYLOW_DELAY = 40 82 | NGF_BATTERYLOW_PERIOD = 150 83 | NGF_BATTERYLOW_MAGNITUDE = 19383 84 | NGF_BATTERYLOW_OFFSET = 0 85 | NGF_BATTERYLOW_PHASE = 0 86 | NGF_BATTERYLOW_DIRECTION = forward 87 | NGF_BATTERYLOW_ATTACK = 0 88 | NGF_BATTERYLOW_ALEVEL = 0 89 | NGF_BATTERYLOW_FADE = 180 90 | NGF_BATTERYLOW_FLEVEL = 0 91 | 92 | NGF_SMS_TYPE = periodic 93 | NGF_SMS_WAVEFORM = sine 94 | NGF_SMS_DURATION = 240 95 | NGF_SMS_REPEAT = 2 96 | NGF_SMS_DELAY = 140 97 | NGF_SMS_PERIOD = 50 98 | NGF_SMS_MAGNITUDE = 27000 99 | NGF_SMS_OFFSET = 0 100 | NGF_SMS_PHASE = 0 101 | NGF_SMS_DIRECTION = forward 102 | NGF_SMS_ATTACK = 0 103 | NGF_SMS_ALEVEL = 0 104 | NGF_SMS_FADE = 80 105 | NGF_SMS_FLEVEL = 0 106 | 107 | NGF_RINGTONE_TYPE = periodic 108 | NGF_RINGTONE_WAVEFORM = sine 109 | NGF_RINGTONE_DURATION = 2400 110 | NGF_RINGTONE_DELAY = 400 111 | NGF_RINGTONE_PERIOD = 100 112 | NGF_RINGTONE_MAGNITUDE = 16383 113 | NGF_RINGTONE_OFFSET = 0 114 | NGF_RINGTONE_PHASE = 0 115 | NGF_RINGTONE_DIRECTION = forward 116 | NGF_RINGTONE_ATTACK = 500 117 | NGF_RINGTONE_ALEVEL = 2560 118 | NGF_RINGTONE_FADE = 300 119 | NGF_RINGTONE_FLEVEL = 4096 120 | 121 | NGF_CLOCK_TYPE = periodic 122 | NGF_CLOCK_WAVEFORM = sine 123 | NGF_CLOCK_DURATION = 4000 124 | NGF_CLOCK_DELAY = 500 125 | NGF_CLOCK_PERIOD = 100 126 | NGF_CLOCK_MAGNITUDE = 8000 127 | NGF_CLOCK_OFFSET = 0 128 | NGF_CLOCK_PHASE = 0 129 | NGF_CLOCK_DIRECTION = forward 130 | NGF_CLOCK_ATTACK = 1000 131 | NGF_CLOCK_ALEVEL = 0 132 | NGF_CLOCK_FADE = 400 133 | NGF_CLOCK_FLEVEL = 0 134 | 135 | -------------------------------------------------------------------------------- /sparse/etc/pulse/arm_native_default.pa: -------------------------------------------------------------------------------- 1 | #!/usr/bin/pulseaudio -nF 2 | # 3 | # This file is part of PulseAudio. 4 | # 5 | # PulseAudio is free software; you can redistribute it and/or modify it 6 | # under the terms of the GNU Lesser General Public License as published by 7 | # the Free Software Foundation; either version 2 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # PulseAudio is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | # General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU Lesser General Public License 16 | # along with PulseAudio; if not, write to the Free Software Foundation, 17 | # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 18 | 19 | # This startup script is used only if PulseAudio is started per-user 20 | # (i.e. not in system mode) 21 | 22 | .nofail 23 | 24 | .fail 25 | 26 | # Transitional check as keepalive module is moved away from droid modules. 27 | .ifexists module-keepalive.so 28 | load-module module-keepalive 29 | .else 30 | load-module module-droid-keepalive 31 | .endif 32 | 33 | ###Start load native alsa drive 34 | ### Load audio drivers statically 35 | ### (it's probably better to not load these drivers manually, but instead 36 | ### use module-udev-detect -- see below -- for doing this automatically) 37 | load-module module-alsa-card device_id=PinePhone 38 | 39 | #load-module module-pipe-sink 40 | 41 | ### Automatically load driver modules depending on the hardware available 42 | #.ifexists module-udev-detect.so 43 | #load-module module-udev-detect 44 | #.else 45 | ### Use the static hardware detection module (for systems that lack udev support) 46 | #load-module module-detect 47 | #.endif 48 | 49 | ###END Load native alsa drivers 50 | 51 | load-module module-meego-parameters cache=1 directory=/var/lib/nemo-pulseaudio-parameters use_voice=false 52 | load-module module-meego-mainvolume virtual_stream=true unmute_delay=600 53 | 54 | ### Automatically restore the volume of streams 55 | load-module module-stream-restore-nemo restore_device=no restore_volume=yes restore_muted=no route_table=/etc/pulse/x-maemo-route.table fallback_table=/etc/pulse/x-maemo-stream-restore.table use_voice=false 56 | 57 | load-module module-match table=/etc/pulse/x-maemo-match.table key=application.name 58 | 59 | ### Automatically augment property information from .desktop files 60 | ### stored in /usr/share/application 61 | load-module module-augment-properties 62 | 63 | load-module module-null-sink sink_name=sink.null rate=48000 64 | load-module module-null-source source_name=source.null rate=48000 65 | 66 | load-module module-bluetooth-discover headset=droid 67 | 68 | load-module module-policy-enforcement 69 | 70 | load-module module-role-ducking trigger_roles=notification,warning ducking_roles=x-maemo volume=-12dB duck_while_corked=true 71 | 72 | ### Load several protocols 73 | .ifexists module-esound-protocol-unix.so 74 | load-module module-esound-protocol-unix 75 | .endif 76 | load-module module-native-protocol-unix 77 | 78 | ### Network access (may be configured with paprefs, so leave this commented 79 | ### here if you plan to use paprefs) 80 | #load-module module-esound-protocol-tcp 81 | #load-module module-native-protocol-tcp 82 | 83 | ### Load the RTP receiver module (also configured via paprefs, see above) 84 | #load-module module-rtp-recv 85 | 86 | ### Load the RTP sender module (also configured via paprefs, see above) 87 | #load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" 88 | #load-module module-rtp-send source=rtp.monitor 89 | 90 | ### Load additional modules from GConf settings. This can be configured with the paprefs tool. 91 | ### Please keep in mind that the modules configured by paprefs might conflict with manually 92 | ### loaded modules. 93 | .ifexists module-gconf.so 94 | .nofail 95 | load-module module-gconf 96 | .fail 97 | .endif 98 | 99 | ### Make sure we always have a sink around, even if it is a null sink. 100 | load-module module-always-sink 101 | 102 | ### Honour intended role device property 103 | load-module module-intended-roles 104 | 105 | ### Automatically suspend sinks/sources that become idle for too long 106 | load-module module-suspend-on-idle timeout=1 107 | 108 | ### If autoexit on idle is enabled we want to make sure we only quit 109 | ### when no local session needs us anymore. 110 | .ifexists module-console-kit.so 111 | load-module module-console-kit 112 | .endif 113 | .ifexists module-systemd-login.so 114 | load-module module-systemd-login 115 | .endif 116 | 117 | ### Load DBus protocol 118 | .ifexists module-dbus-protocol.so 119 | load-module module-dbus-protocol 120 | .endif 121 | 122 | ### Set default sink and source to sink.null and source.null, respectively. PulseAudio default 123 | ### sink/source handling will move orphaned sink-inputs and source-outputs to default ones. 124 | ### Policy enforcement module then moves the streams to new appropriate sinks or sources. 125 | set-default-sink sink.null 126 | set-default-source source.null 127 | -------------------------------------------------------------------------------- /sparse/etc/pulse/xpolicy.conf.d/bluez5.conf: -------------------------------------------------------------------------------- 1 | # -------- Card section -------------------------------------------------------- 2 | 3 | [card] 4 | type = tvoutandbta2dp 5 | name = startswith:"bluez_card" 6 | profile = a2dp 7 | flags = disable_notify 8 | 9 | [card] 10 | type = bta2dp 11 | name0 = startswith:"bluez_card" 12 | profile0 = a2dp_sink 13 | name1 = equals:$card 14 | profile1 = $card_profile_default 15 | flags1 = disable_notify 16 | 17 | [card] 18 | type = bta2dpforalien 19 | name0 = startswith:"bluez_card" 20 | profile0 = a2dp_sink 21 | name1 = equals:$card 22 | profile1 = $card_profile_default 23 | flags1 = disable_notify 24 | 25 | [card] 26 | type = bthsp 27 | name0 = startswith:"bluez_card" 28 | profile0 = headset_head_unit 29 | name1 = equals:$card 30 | profile1 = $card_profile_default 31 | flags1 = disable_notify 32 | 33 | [card] 34 | type = bthspforcall 35 | name0 = startswith:"bluez_card" 36 | profile0 = headset_head_unit 37 | flags0 = notify_profile_changed 38 | name1 = equals:$card 39 | profile1 = $card_profile_default 40 | flags1 = disable_notify 41 | 42 | [card] 43 | type = bthspforalien 44 | name0 = startswith:"bluez_card" 45 | profile0 = headset_head_unit 46 | name1 = equals:$card 47 | profile1 = $card_profile_default 48 | flags1 = disable_notify 49 | 50 | [card] 51 | type = bthfp 52 | name0 = startswith:"bluez_card" 53 | profile0 = headset_head_unit 54 | name1 = equals:$card 55 | profile1 = $card_profile_default 56 | flags1 = disable_notify 57 | 58 | [card] 59 | type = bthfpforcall 60 | name0 = startswith:"bluez_card" 61 | profile0 = headset_head_unit 62 | name1 = equals:$card 63 | profile1 = $card_profile_default 64 | flags1 = disable_notify 65 | 66 | [card] 67 | type = bthfpforalien 68 | name0 = startswith:"bluez_card" 69 | profile0 = headset_head_unit 70 | name1 = equals:$card 71 | profile1 = $card_profile_default 72 | flags1 = disable_notify 73 | 74 | [card] 75 | type = ihfandheadset 76 | name0 = equals:$card 77 | profile0 = $card_profile_default 78 | name1 = startswith:"bluez_card" 79 | profile1 = off 80 | flags1 = disable_notify 81 | 82 | [card] 83 | type = ihfandheadphone 84 | name0 = equals:$card 85 | profile0 = $card_profile_default 86 | name1 = startswith:"bluez_card" 87 | profile1 = off 88 | flags1 = disable_notify 89 | 90 | [card] 91 | type = ihfandlineout 92 | name0 = equals:$card 93 | profile0 = $card_profile_default 94 | name1 = startswith:"bluez_card" 95 | profile1 = off 96 | flags1 = disable_notify 97 | 98 | [card] 99 | type = headset 100 | name0 = equals:$card 101 | profile0 = $card_profile_default 102 | name1 = startswith:"bluez_card" 103 | profile1 = off 104 | flags1 = disable_notify 105 | 106 | [card] 107 | type = headsetforcall 108 | name0 = equals:$card 109 | profile0 = $card_profile_voicecall 110 | name1 = startswith:"bluez_card" 111 | profile1 = off 112 | flags1 = disable_notify 113 | 114 | [card] 115 | type = headsetforalien 116 | name0 = equals:$card 117 | profile0 = $card_profile_default 118 | name1 = startswith:"bluez_card" 119 | profile1 = off 120 | flags1 = disable_notify 121 | 122 | [card] 123 | type = headphone 124 | name0 = equals:$card 125 | profile0 = $card_profile_default 126 | name1 = startswith:"bluez_card" 127 | profile1 = off 128 | flags1 = disable_notify 129 | 130 | [card] 131 | type = headphoneforcall 132 | name0 = equals:$card 133 | profile0 = $card_profile_voicecall 134 | name1 = startswith:"bluez_card" 135 | profile1 = off 136 | flags1 = disable_notify 137 | 138 | [card] 139 | type = headphoneforalien 140 | name0 = equals:$card 141 | profile0 = $card_profile_default 142 | name1 = startswith:"bluez_card" 143 | profile1 = off 144 | flags1 = disable_notify 145 | 146 | [card] 147 | type = lineout 148 | name0 = equals:$card 149 | profile0 = $card_profile_default 150 | name1 = startswith:"bluez_card" 151 | profile1 = off 152 | flags1 = disable_notify 153 | 154 | [card] 155 | type = lineoutforcall 156 | name0 = equals:$card 157 | profile0 = $card_profile_voicecall 158 | name1 = startswith:"bluez_card" 159 | profile1 = off 160 | flags1 = disable_notify 161 | 162 | [card] 163 | type = lineoutforalien 164 | name0 = equals:$card 165 | profile0 = $card_profile_default 166 | name1 = startswith:"bluez_card" 167 | profile1 = off 168 | flags1 = disable_notify 169 | 170 | [card] 171 | type = ihfandtvout 172 | name0 = equals:$card 173 | profile0 = $card_profile_default 174 | name1 = startswith:"bluez_card" 175 | profile1 = off 176 | flags1 = disable_notify 177 | 178 | [card] 179 | type = ihfforcall 180 | name0 = equals:$card 181 | profile0 = $card_profile_voicecall 182 | name1 = startswith:"bluez_card" 183 | profile1 = off 184 | flags1 = disable_notify 185 | 186 | [card] 187 | type = ihf 188 | name0 = equals:$card 189 | profile0 = $card_profile_default 190 | name1 = startswith:"bluez_card" 191 | profile1 = off 192 | flags1 = disable_notify 193 | 194 | [card] 195 | type = ihfforalien 196 | name0 = equals:$card 197 | profile0 = $card_profile_default 198 | name1 = startswith:"bluez_card" 199 | profile1 = off 200 | flags1 = disable_notify 201 | -------------------------------------------------------------------------------- /sparse/etc/pulse/xpolicy.conf: -------------------------------------------------------------------------------- 1 | # -------- xpolicy.conf -------------------------------------------------------- 2 | # 3 | # Files are read in following order, 4 | # 1) xpolicy.conf 5 | # 2) xpolicy.conf.d/*.conf, in descending order 6 | # 7 | # Variables can be defined anywhere, and they affect all the conf files. Variables 8 | # are updated if same variable is defined later on (for example variables in 9 | # xpolicy.conf.d/xvars.conf are applied most likely latest and are the active 10 | # ones). Variables can be used to replace any string configuration value 11 | # (NOT match types, etc.). For example following stream definition is valid: 12 | # 13 | # [stream] 14 | # property = $property_name@equals:$property_value 15 | # group = $group_name 16 | # 17 | # or for context definition following property action is valid: 18 | # set-property = sink-name@equals:$sink, property:$string, value@constant:$value 19 | # 20 | # Other sections than [variable] can also be defined in any conf file, and already 21 | # defined ones will be overridden by later definition. 22 | # 23 | 24 | 25 | # -------- Variable section ---------------------------------------------------- 26 | 27 | # Defaults. To override define variables with new values 28 | # in xpolicy.conf.d directory (for example xpolicy.conf.d/xvars.conf). 29 | [variable] 30 | sink_port_change_delay = delayed_port_change 31 | delay_time = 150 32 | card = alsa_card.PinePhone 33 | card_name = PinePhone 34 | card_profile_default = HiFi 35 | card_profile_voicecall = "Voice Call" 36 | sink_headset = "[Out] Headphones" 37 | sink_speaker = "[Out] Speaker" 38 | sink_earpiece = "[Out] Earpiece" 39 | source_headset = "[In] Headset" 40 | source_builtin_mic = "[In] Mic" 41 | 42 | 43 | # -------- Group section ------------------------------------------------------- 44 | 45 | [group] 46 | name = othermedia 47 | flags = route_audio, limit_volume, cork_stream 48 | 49 | [group] 50 | name = idle 51 | flags = nopolicy 52 | sink = sink.null 53 | source = sink.null.monitor 54 | 55 | [group] 56 | name = background 57 | flags = limit_volume, cork_stream 58 | sink = alsa.card_name@equals:$card_name 59 | source = device.class@equals:sound 60 | 61 | [group] 62 | name = systemsound 63 | flags = set_sink, limit_volume, cork_stream, mute_by_route 64 | sink = alsa.card_name@equals:$card_name 65 | 66 | [group] 67 | name = btnotify 68 | flags = set_sink, limit_volume, cork_stream, mute_by_route, dynamic_sink 69 | sink = startswith:"bluez_sink" 70 | 71 | [group] 72 | name = feedbacksound 73 | flags = set_sink, limit_volume, cork_stream, mute_by_route 74 | sink = alsa.card_name@equals:$card_name 75 | 76 | [group] 77 | name = inputsound 78 | flags = set_sink, limit_volume, cork_stream, mute_by_route 79 | sink = alsa.card_name@equals:$card_name 80 | 81 | [group] 82 | name = event 83 | flags = set_sink, limit_volume, cork_stream, mute_by_route 84 | sink = alsa.card_name@equals:$card_name 85 | 86 | [group] 87 | name = alarm 88 | flags = set_sink, limit_volume, mute_by_route, cork_stream, media_notify 89 | sink = alsa.card_name@equals:$card_name 90 | 91 | [group] 92 | name = flash 93 | flags = limit_volume, cork_stream 94 | 95 | [group] 96 | name = player 97 | flags = route_audio, limit_volume, cork_stream 98 | 99 | [group] 100 | name = game 101 | flags = route_audio, limit_volume, cork_stream 102 | 103 | [group] 104 | name = voiceui 105 | flags = set_sink, limit_volume, cork_stream 106 | sink = alsa.card_name@equals:$card_name 107 | 108 | [group] 109 | name = ringtone 110 | flags = set_sink, limit_volume, mute_by_route, cork_stream, media_notify 111 | sink = alsa.card_name@equals:$card_name 112 | 113 | [group] 114 | name = camera 115 | flags = set_sink, set_source, limit_volume, cork_stream 116 | sink = alsa.card_name@equals:$card_name 117 | source = device.class@equals:sound 118 | 119 | [group] 120 | name = videoeditor 121 | flags = route_audio, limit_volume, cork_stream 122 | 123 | [group] 124 | name = ipcall 125 | flags = set_sink, set_source, limit_volume, cork_stream 126 | sink = alsa.card_name@equals:$card_name 127 | source = device.class@equals:sound 128 | 129 | [group] 130 | name = call 131 | flags = set_sink, set_source 132 | sink = alsa.card_name@equals:$card_name 133 | source = device.class@equals:sound 134 | 135 | [group] 136 | name = navigator 137 | flags = set_sink, set_source 138 | sink = alsa.card_name@equals:$card_name 139 | source = device.class@equals:sound 140 | 141 | [group] 142 | name = cstone 143 | flags = route_audio, set_source, limit_volume 144 | 145 | [group] 146 | name = alwayson 147 | flags = set_sink, limit_volume, cork_stream 148 | sink = alsa.card_name@equals:$card_name 149 | 150 | [group] 151 | name = nonsilent 152 | flags = set_sink, limit_volume, cork_stream 153 | sink = alsa.card_name@equals:$card_name 154 | 155 | [group] 156 | name = internal 157 | flags = nopolicy 158 | sink = sink.null 159 | source = source.null.monitor 160 | 161 | [group] 162 | name = outgoing 163 | flags = route_audio 164 | 165 | [group] 166 | name = incoming 167 | flags = route_audio 168 | 169 | [group] 170 | name = alien 171 | flags = route_audio, limit_volume, mute_by_route 172 | 173 | [group] 174 | name = aliencall 175 | flags = route_audio, limit_volume, mute_by_route 176 | 177 | [group] 178 | name = probesink 179 | flags = set_sink, limit_volume, cork_stream 180 | sink = alsa.card_name@equals:$card_name 181 | 182 | # -------- Card section -------------------------------------------------------- 183 | 184 | # included from bluez5.conf and bluez5_earpiece.conf 185 | 186 | # -------- Device section ------------------------------------------------------ 187 | 188 | [device] 189 | type = tvoutandbta2dp 190 | sink = startswith:"bluez_sink" 191 | 192 | [device] 193 | type = ihfandheadset 194 | sink = alsa.card_name@equals:$card_name 195 | ports = alsa.card_name@equals:$card_name->$sink_headset 196 | flags = $sink_port_change_delay 197 | delay = $delay_time 198 | 199 | [device] 200 | type = ihfandheadset 201 | source = device.class@equals:sound 202 | ports = device.class@equals:sound->$source_headset 203 | 204 | [device] 205 | type = ihfandheadphone 206 | sink = alsa.card_name@equals:$card_name 207 | ports = alsa.card_name@equals:$card_name->$sink_speaker 208 | flags = $sink_port_change_delay 209 | delay = $delay_time 210 | 211 | [device] 212 | type = ihfandlineout 213 | sink = alsa.card_name@equals:$card_name 214 | ports = alsa.card_name@equals:$card_name->$sink_speaker 215 | flags = $sink_port_change_delay 216 | delay = $delay_time 217 | 218 | [device] 219 | type = bta2dp 220 | sink = startswith:"bluez_sink" 221 | ports = alsa.card_name@equals:$card_name->$sink_speaker 222 | flags = disable_notify 223 | 224 | [device] 225 | type = bta2dpforalien 226 | sink = startswith:"bluez_sink" 227 | ports = alsa.card_name@equals:$card_name->$sink_speaker 228 | flags = disable_notify 229 | 230 | [device] 231 | type = bthsp 232 | sink = startswith:"sco_sink" 233 | ports = alsa.card_name@equals:$card_name->$sink_speaker 234 | flags = disable_notify, refresh_always 235 | 236 | [device] 237 | type = bthsp 238 | source = startswith:"sco_source" 239 | flags = disable_notify, refresh_always 240 | 241 | [device] 242 | type = bthspforcall 243 | sink = startswith:"sco_sink" 244 | flags = disable_notify, refresh_always, delayed_port_change 245 | 246 | [device] 247 | type = bthspforcall 248 | source = startswith:"sco_source" 249 | flags = disable_notify, refresh_always 250 | 251 | [device] 252 | type = bthspforalien 253 | sink = startswith:"sco_sink" 254 | flags = disable_notify, refresh_always, delayed_port_change 255 | 256 | [device] 257 | type = bthspforalien 258 | source = startswith:"sco_source" 259 | flags = disable_notify, refresh_always 260 | 261 | [device] 262 | type = bthfp 263 | sink = startswith:"sco_sink" 264 | ports = alsa.card_name@equals:$card_name->$sink_speaker 265 | flags = disable_notify, refresh_always 266 | 267 | [device] 268 | type = bthfp 269 | source = startswith:"sco_source" 270 | flags = disable_notify, refresh_always 271 | 272 | [device] 273 | type = bthfpforcall 274 | sink = startswith:"sco_sink" 275 | ports = alsa.card_name@equals:$card_name->$sink_speaker 276 | flags = disable_notify, refresh_always, delayed_port_change 277 | 278 | [device] 279 | type = bthfpforcall 280 | source = startswith:"sco_source" 281 | flags = disable_notify, refresh_always 282 | 283 | [device] 284 | type = bthfpforalien 285 | sink = startswith:"sco_sink" 286 | ports = alsa.card_name@equals:$card_name->$sink_speaker 287 | flags = disable_notify, refresh_always, delayed_port_change 288 | 289 | [device] 290 | type = bthfpforalien 291 | source = startswith:"sco_source" 292 | flags = disable_notify, refresh_always 293 | 294 | [device] 295 | type = headset 296 | source = device.class@equals:sound 297 | ports = device.class@equals:sound->$source_headset 298 | flags = disable_notify, refresh_always 299 | 300 | [device] 301 | type = headset 302 | sink = alsa.card_name@equals:$card_name 303 | ports = alsa.card_name@equals:$card_name->$sink_headset 304 | flags = disable_notify, refresh_always, $sink_port_change_delay 305 | delay = $delay_time 306 | 307 | [device] 308 | type = headsetforcall 309 | sink = alsa.card_name@equals:$card_name 310 | ports = alsa.card_name@equals:$card_name->$sink_headset 311 | flags = refresh_always, delayed_port_change 312 | delay = 200 313 | 314 | [device] 315 | type = headsetforcall 316 | source = device.class@equals:sound 317 | ports = device.class@equals:sound->$source_headset 318 | 319 | [device] 320 | type = headsetforalien 321 | sink = alsa.card_name@equals:$card_name 322 | ports = alsa.card_name@equals:$card_name->$sink_headset 323 | flags = refresh_always 324 | 325 | [device] 326 | type = headsetforalien 327 | source = device.class@equals:sound 328 | ports = device.class@equals:sound->$source_headset 329 | 330 | [device] 331 | type = headphone 332 | sink = alsa.card_name@equals:$card_name 333 | ports = alsa.card_name@equals:$card_name->$sink_headset 334 | flags = disable_notify, refresh_always, $sink_port_change_delay 335 | delay = $delay_time 336 | 337 | [device] 338 | type = headphoneforcall 339 | sink = alsa.card_name@equals:$card_name 340 | ports = alsa.card_name@equals:$card_name->$sink_headset 341 | flags = refresh_always, delayed_port_change 342 | delay = 200 343 | 344 | [device] 345 | type = headphoneforalien 346 | sink = alsa.card_name@equals:$card_name 347 | ports = alsa.card_name@equals:$card_name->$sink_headset 348 | flags = refresh_always 349 | 350 | [device] 351 | type = lineout 352 | sink = alsa.card_name@equals:$card_name 353 | ports = alsa.card_name@equals:$card_name->$sink_headset 354 | flags = disable_notify, refresh_always, $sink_port_change_delay 355 | delay = $delay_time 356 | 357 | [device] 358 | type = lineoutforcall 359 | sink = alsa.card_name@equals:$card_name 360 | ports = alsa.card_name@equals:$card_name->$sink_headset 361 | flags = refresh_always, delayed_port_change 362 | delay = 200 363 | 364 | [device] 365 | type = lineoutforalien 366 | sink = alsa.card_name@equals:$card_name 367 | ports = alsa.card_name@equals:$card_name->$sink_headset 368 | flags = refresh_always 369 | 370 | [device] 371 | type = ihfandtvout 372 | sink = alsa.card_name@equals:$card_name 373 | ports = alsa.card_name@equals:$card_name->$sink_speaker 374 | 375 | [device] 376 | type = tvout 377 | sink = alsa.card_name@equals:$card_name 378 | ports = alsa.card_name@equals:$card_name->$sink_headset 379 | 380 | [device] 381 | type = microphone 382 | source = device.class@equals:sound 383 | ports = device.class@equals:sound->$source_builtin_mic 384 | 385 | [device] 386 | type = backmicrophone 387 | source = device.class@equals:sound 388 | ports = device.class@equals:sound->$source_builtin_mic 389 | 390 | [device] 391 | type = ihf 392 | sink = alsa.card_name@equals:$card_name 393 | ports = alsa.card_name@equals:$card_name->$sink_speaker 394 | flags = refresh_always, $sink_port_change_delay 395 | delay = $delay_time 396 | 397 | [device] 398 | type = ihfforcall 399 | sink = alsa.card_name@equals:$card_name 400 | ports = alsa.card_name@equals:$card_name->$sink_speaker 401 | flags = refresh_always 402 | 403 | [device] 404 | type = ihfforalien 405 | sink = alsa.card_name@equals:$card_name 406 | ports = alsa.card_name@equals:$card_name->$sink_speaker 407 | flags = refresh_always 408 | 409 | [device] 410 | type = voicecall 411 | source = device.class@equals:sound 412 | ports = device.class@equals:sound->$source_builtin_mic 413 | 414 | [device] 415 | type = null 416 | sink = equals:sink.null 417 | 418 | # -------- Stream section ------------------------------------------------------ 419 | 420 | [stream] 421 | exe = gst-launch-0.10 422 | group = player 423 | 424 | [stream] 425 | exe = gst-launch-1.0 426 | group = player 427 | 428 | [stream] 429 | exe = pacat 430 | group = player 431 | 432 | # Ignore pulsesink probe from gstreamer pulsesink 433 | # when a2dp is active, route probing to a2dp headset 434 | [stream] 435 | property = media.name@equals:"pulsesink probe" 436 | sink = bta2dp 437 | group = btnotify 438 | 439 | # Ignore pulsesink probe from gstreamer pulsesink 440 | [stream] 441 | property = media.name@equals:"pulsesink probe" 442 | group = probesink 443 | 444 | [stream] 445 | exe = ngfd 446 | property = media.name@equals:"system-event" 447 | sink = bta2dp 448 | group = btnotify 449 | 450 | [stream] 451 | exe = ngfd 452 | property = event.id@equals:"message-new-email" 453 | sink = bta2dp 454 | group = btnotify 455 | 456 | [stream] 457 | exe = ngfd 458 | property = media.name@equals:"battery-event" 459 | sink = bta2dp 460 | group = btnotify 461 | 462 | [stream] 463 | property = application.process.arg0@equals:"/usr/bin/maliit-server" 464 | group = feedbacksound 465 | 466 | [stream] 467 | property = event.id@equals:"phone-incoming-call" 468 | group = ringtone 469 | 470 | [stream] 471 | property = event.id@equals:"alarm-clock-elapsed" 472 | group = alarm 473 | 474 | [stream] 475 | property = event.id@equals:"message-new-email" 476 | group = event 477 | 478 | [stream] 479 | exe = ngfd 480 | property = event.id@equals:"event-in-call" 481 | group = alwayson 482 | 483 | [stream] 484 | exe = ngfd 485 | property = media.name@equals:"event-in-call" 486 | group = alwayson 487 | 488 | [stream] 489 | exe = ngfd 490 | property = media.name@equals:"camera-event" 491 | group = camera 492 | 493 | [stream] 494 | exe = ngfd 495 | property = media.name@equals:"feedback-event" 496 | group = feedbacksound 497 | 498 | [stream] 499 | exe = ngfd 500 | property = media.name@equals:"system-event" 501 | group = systemsound 502 | 503 | [stream] 504 | exe = ngfd 505 | property = media.name@equals:"battery-event" 506 | group = systemsound 507 | 508 | [stream] 509 | exe = telepathy-stream-engine 510 | group = call 511 | 512 | [stream] 513 | property = application.process.arg0@equals:"/usr/lib/telepathy/telepathy-stream-engine" 514 | group = call 515 | 516 | [stream] 517 | property = media.name@equals:"indtone" 518 | group = cstone 519 | 520 | [stream] 521 | property = media.name@equals:"dtmf" 522 | group = cstone 523 | 524 | [stream] 525 | property = media.name@equals:"notiftone" 526 | group = nonsilent 527 | 528 | [stream] 529 | exe = qmafw-dbus-wrapper 530 | group = player 531 | 532 | [stream] 533 | name = "Virtual Stream for MainVolume Volume Control" 534 | group = internal 535 | 536 | [stream] 537 | name = "output of sink." 538 | group = internal 539 | 540 | [stream] 541 | name = "input of source." 542 | group = internal 543 | 544 | # For routing to sink.primaryandbluez 545 | [stream] 546 | property = media.name@startswith:"Simultaneous output on" 547 | group = internal 548 | 549 | # -------- Context rule section ------------------------------------------------ 550 | 551 | [context-rule] 552 | variable = call 553 | value = equals:outgoing 554 | set-property = module-name@equals:module-policy-enforcement, property:"x-nemo.voicecall.status", value@constant:"active" 555 | 556 | [context-rule] 557 | variable = call 558 | value = equals:active 559 | set-property = module-name@equals:module-policy-enforcement, property:"x-nemo.voicecall.status", value@constant:"active" 560 | 561 | [context-rule] 562 | variable = call 563 | value = equals:inactive 564 | set-property = module-name@equals:module-policy-enforcement, property:"x-nemo.voicecall.status", value@constant:"inactive" 565 | 566 | [context-rule] 567 | variable = call 568 | value = equals:voip 569 | set-property = module-name@equals:module-policy-enforcement, property:"x-nemo.voicecall.status", value@constant:"voip" 570 | 571 | [context-rule] 572 | variable = media_state 573 | value = matches:"^[^t].*" 574 | set-property = module-name@equals:module-policy-enforcement, property:"x-nemo.media.state", value@copy-from-context 575 | 576 | [context-rule] 577 | variable = emergency_call 578 | value = matches:".*" 579 | set-property = module-name@equals:module-policy-enforcement, property:"x.emergency_call.state", value@copy-from-context 580 | --------------------------------------------------------------------------------