| CRAS = ChromeOS Audio Server |
| |
| Directories |
| src/server - the source for the sound server |
| src/libcras - client library for interacting with cras |
| src/common - files common to both the server and library |
| src/tests - tests for cras and libcras |
| |
| Building from source: |
| ./git_prepare.sh |
| ./configure |
| make |
| sudo make install |
| |
| --------------------- |
| Configuration: |
| --------------------- |
| |
| Device Blacklisting: |
| -------------------- |
| Blacklist of certain USB output device(s) is possible by modifying the config |
| file /etc/cras/device_blacklist. |
| |
| The format of this file is as follows: |
| |
| [USB_Outputs] |
| <vendor_id>_<product_id>_<checksum>_<device_index> = 1 |
| |
| Where vendor_id and product id are the USB identifiers for the card to |
| blacklist. The checksum is the output of "cksum" command applied to the |
| sysfs "descriptors" file of the device. The device index specifies the |
| index of the output device in the card to blacklist. This is a bool |
| parameter, so '= 1' enables the option. |
| |
| Example, blacklisting the non-functional output device reported by the C-Media |
| based CAD-u1 mic: |
| |
| [USB_Outputs] |
| 0d8c_0008_00000000_0 = 1 |
| |
| Card Configuration: |
| ------------------- |
| There can be a config file for each sound alsa card on the system. This file |
| lives in /etc/cras/. The file should be named with the card name returned by |
| ALSA, the string in the second set of '[]' in the aplay -l output. The ini file |
| has the following format. |
| |
| [<output-node-name>] ; Name of the mixer control for this output. |
| <config-option> = <config-value> |
| |
| output-node-name can be speficied in a few ways to link with the real node: |
| UCM device name - The name string following the SectionDevice label in UCM |
| config, i.e. HiFi.conf |
| Jack name - Name of the mixer control for mixer jack, or the gpio jack name |
| listed by 'evtest' command. |
| Mixer control name - e.g. "Headphone" or "Speaker", listed by |
| 'amixer scontrols' command. |
| |
| Note that an output node matches to the output-node-name label in card config by |
| priorty ordered above. For example if a node has UCM device, it will first |
| search the config file for the UCM device name. When not found, jack name will |
| be used for searching, and lastly the mixer output control name. |
| |
| config-option can be the following: |
| volume_curve - The type of volume curve, "simple_step" or "explicit". |
| Options valid and mandatory when volume_curve = simple_step: |
| max_volume - The maximum volume for this output specified in dBFS * 100. |
| volume_step - Number of dB per volume 'tick' specified in dBFS * 100. |
| Options valid and mandatory when volume_curve = explicit: |
| dB_at_N - The value in dB*100 that should be used for the volume at step |
| "N". There must be one of these for each setting from N=0 to 100 |
| inclusive. |
| |
| |
| Example: |
| This example configures the Headphones to have a max volume of -3dBFS with a |
| step size of 0.75dBFS and the Speaker to have the curve specified by the steps |
| given, which is a 1dBFS per step curve from max = +0.5dBFS to min = -99.5dBFS |
| (volume step 10 is -89.5dBFS). |
| |
| [Headphone] |
| volume_curve = simple_step |
| volume_step = 75 |
| max_volume = -300 |
| [Speaker] |
| volume_curve = explicit |
| dB_at_0 = -9950 |
| dB_at_1 = -9850 |
| dB_at_2 = -9750 |
| dB_at_3 = -9650 |
| dB_at_4 = -9550 |
| dB_at_5 = -9450 |
| dB_at_6 = -9350 |
| dB_at_7 = -9250 |
| dB_at_8 = -9150 |
| dB_at_9 = -9050 |
| dB_at_10 = -8950 |
| dB_at_11 = -8850 |
| dB_at_12 = -8750 |
| dB_at_13 = -8650 |
| dB_at_14 = -8550 |
| dB_at_15 = -8450 |
| dB_at_16 = -8350 |
| dB_at_17 = -8250 |
| dB_at_18 = -8150 |
| dB_at_19 = -8050 |
| dB_at_20 = -7950 |
| dB_at_21 = -7850 |
| dB_at_22 = -7750 |
| dB_at_23 = -7650 |
| dB_at_24 = -7550 |
| dB_at_25 = -7450 |
| dB_at_26 = -7350 |
| dB_at_27 = -7250 |
| dB_at_28 = -7150 |
| dB_at_29 = -7050 |
| dB_at_30 = -6950 |
| dB_at_31 = -6850 |
| dB_at_32 = -6750 |
| dB_at_33 = -6650 |
| dB_at_34 = -6550 |
| dB_at_35 = -6450 |
| dB_at_36 = -6350 |
| dB_at_37 = -6250 |
| dB_at_38 = -6150 |
| dB_at_39 = -6050 |
| dB_at_40 = -5950 |
| dB_at_41 = -5850 |
| dB_at_42 = -5750 |
| dB_at_43 = -5650 |
| dB_at_44 = -5550 |
| dB_at_45 = -5450 |
| dB_at_46 = -5350 |
| dB_at_47 = -5250 |
| dB_at_48 = -5150 |
| dB_at_49 = -5050 |
| dB_at_50 = -4950 |
| dB_at_51 = -4850 |
| dB_at_52 = -4750 |
| dB_at_53 = -4650 |
| dB_at_54 = -4550 |
| dB_at_55 = -4450 |
| dB_at_56 = -4350 |
| dB_at_57 = -4250 |
| dB_at_58 = -4150 |
| dB_at_59 = -4050 |
| dB_at_60 = -3950 |
| dB_at_61 = -3850 |
| dB_at_62 = -3750 |
| dB_at_63 = -3650 |
| dB_at_64 = -3550 |
| dB_at_65 = -3450 |
| dB_at_66 = -3350 |
| dB_at_67 = -3250 |
| dB_at_68 = -3150 |
| dB_at_69 = -3050 |
| dB_at_70 = -2950 |
| dB_at_71 = -2850 |
| dB_at_72 = -2750 |
| dB_at_73 = -2650 |
| dB_at_74 = -2550 |
| dB_at_75 = -2450 |
| dB_at_76 = -2350 |
| dB_at_77 = -2250 |
| dB_at_78 = -2150 |
| dB_at_79 = -2050 |
| dB_at_80 = -1950 |
| dB_at_81 = -1850 |
| dB_at_82 = -1750 |
| dB_at_83 = -1650 |
| dB_at_84 = -1550 |
| dB_at_85 = -1450 |
| dB_at_86 = -1350 |
| dB_at_87 = -1250 |
| dB_at_88 = -1150 |
| dB_at_89 = -1050 |
| dB_at_90 = -950 |
| dB_at_91 = -850 |
| dB_at_92 = -750 |
| dB_at_93 = -650 |
| dB_at_94 = -550 |
| dB_at_95 = -450 |
| dB_at_96 = -350 |
| dB_at_97 = -250 |
| dB_at_98 = -150 |
| dB_at_99 = -50 |
| dB_at_100 = 50 |