blob: fa7632fd95abbc9d8a9b4c4a98ea955a52ffe12a [file] [log] [blame]
Clay Murphyca44e972015-08-24 17:57:30 -07001page.title=Kernel Configuration
Robert Ly35f2fda2013-01-29 16:27:05 -08002@jd:body
3
4<!--
Clay Murphy1d5f8fe2015-05-18 16:44:07 -07005 Copyright 2015 The Android Open Source Project
Robert Ly35f2fda2013-01-29 16:27:05 -08006
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18-->
Clay Murphy1d5f8fe2015-05-18 16:44:07 -070019<div id="qv-wrapper">
20 <div id="qv">
21 <h2>In this document</h2>
22 <ol id="auto-toc">
23 </ol>
24 </div>
25</div>
26
27<p>The kernel configuration settings in this document are meant to be used as a
28base for an Android kernel configuration. All devices should have the options
29in android-base configuration enabled. While not mandatory, the options in
30android-recommended configuration enable advanced Android
Robert Ly35f2fda2013-01-29 16:27:05 -080031features.</p>
32
33<p>
34Generating kernel config: Assuming you already have a minimalist defconfig for your device, a possible
35way to enable these options would be:</p>
36
37<pre>ARCH=<arch> scripts/kconfig/merge_config.sh <path_to>/<device>_defconfig android/configs/android-base.cfg
38android/configs/android-recommended.cfg</pre>
39<p>
40This will generate a .config that can then be used to save a new defconfig or
41compile a new kernel with Android features enabled.
42</p>
43<h3>
44Base Configuration
45</h3>
46<pre>
47CONFIG_EXPERIMENTAL=y
48CONFIG_SYSVIPC=y
49CONFIG_CGROUPS=y
50CONFIG_CGROUP_DEBUG=y
51CONFIG_CGROUP_FREEZER=y
52CONFIG_CGROUP_CPUACCT=y
53CONFIG_RESOURCE_COUNTERS=y
54CONFIG_CGROUP_SCHED=y
55CONFIG_RT_GROUP_SCHED=y
56CONFIG_BLK_DEV_INITRD=y
57CONFIG_EMBEDDED=y
58CONFIG_NO_HZ=y
59CONFIG_HIGH_RES_TIMERS=y
60CONFIG_PREEMPT=y
61CONFIG_PM_AUTOSLEEP=y
62CONFIG_PM_WAKELOCKS=y
63CONFIG_BLK_DEV_DM=y
64CONFIG_DM_CRYPT=y
65CONFIG_NET=y
66CONFIG_PACKET=y
67CONFIG_UNIX=y
68CONFIG_XFRM_USER=y
69CONFIG_NET_KEY=y
70CONFIG_INET=y
71CONFIG_IP_ADVANCED_ROUTER=y
72CONFIG_IP_MULTIPLE_TABLES=y
73CONFIG_INET_ESP=y
74# CONFIG_INET_LRO is not set
75CONFIG_IPV6_PRIVACY=y
76CONFIG_IPV6_ROUTER_PREF=y
77CONFIG_IPV6_OPTIMISTIC_DAD=y
78CONFIG_INET6_AH=y
79CONFIG_INET6_ESP=y
80CONFIG_INET6_IPCOMP=y
81CONFIG_IPV6_MIP6=y
82CONFIG_IPV6_MULTIPLE_TABLES=y
83CONFIG_NETFILTER=y
84CONFIG_NF_CONNTRACK=y
85CONFIG_NF_CONNTRACK_EVENTS=y
86CONFIG_NF_CT_PROTO_DCCP=y
87CONFIG_NF_CT_PROTO_SCTP=y
88CONFIG_NF_CT_PROTO_UDPLITE=y
89CONFIG_NF_CONNTRACK_AMANDA=y
90CONFIG_NF_CONNTRACK_FTP=y
91CONFIG_NF_CONNTRACK_H323=y
92CONFIG_NF_CONNTRACK_IRC=y
93CONFIG_NF_CONNTRACK_NETBIOS_NS=y
94CONFIG_NF_CONNTRACK_PPTP=y
95CONFIG_NF_CONNTRACK_SANE=y
96CONFIG_NF_CONNTRACK_TFTP=y
97CONFIG_NF_CT_NETLINK=y
98CONFIG_NETFILTER_TPROXY=y
99CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
100CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
101CONFIG_NETFILTER_XT_TARGET_MARK=y
102CONFIG_NETFILTER_XT_TARGET_NFLOG=y
103CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
104CONFIG_NETFILTER_XT_TARGET_TPROXY=y
105CONFIG_NETFILTER_XT_TARGET_TRACE=y
106CONFIG_NETFILTER_XT_MATCH_COMMENT=y
107CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
108CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
109CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
110CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
111CONFIG_NETFILTER_XT_MATCH_HELPER=y
112CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
113CONFIG_NETFILTER_XT_MATCH_LENGTH=y
114CONFIG_NETFILTER_XT_MATCH_LIMIT=y
115CONFIG_NETFILTER_XT_MATCH_MAC=y
116CONFIG_NETFILTER_XT_MATCH_MARK=y
117CONFIG_NETFILTER_XT_MATCH_POLICY=y
118CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
119CONFIG_NETFILTER_XT_MATCH_QTAGUID=y
120CONFIG_NETFILTER_XT_MATCH_QUOTA=y
121CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
122CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
123CONFIG_NETFILTER_XT_MATCH_SOCKET=y
124CONFIG_NETFILTER_XT_MATCH_STATE=y
125CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
126CONFIG_NETFILTER_XT_MATCH_STRING=y
127CONFIG_NETFILTER_XT_MATCH_TIME=y
128CONFIG_NETFILTER_XT_MATCH_U32=y
129CONFIG_NF_CONNTRACK_IPV4=y
130CONFIG_IP_NF_IPTABLES=y
131CONFIG_IP_NF_MATCH_AH=y
132CONFIG_IP_NF_MATCH_ECN=y
133CONFIG_IP_NF_MATCH_TTL=y
134CONFIG_IP_NF_FILTER=y
135CONFIG_IP_NF_TARGET_REJECT=y
136CONFIG_IP_NF_TARGET_REJECT_SKERR=y
137CONFIG_NF_NAT=y
138CONFIG_IP_NF_TARGET_MASQUERADE=y
139CONFIG_IP_NF_TARGET_NETMAP=y
140CONFIG_IP_NF_TARGET_REDIRECT=y
141CONFIG_IP_NF_MANGLE=y
142CONFIG_IP_NF_RAW=y
143CONFIG_IP_NF_ARPTABLES=y
144CONFIG_IP_NF_ARPFILTER=y
145CONFIG_IP_NF_ARP_MANGLE=y
146CONFIG_NF_CONNTRACK_IPV6=y
147CONFIG_IP6_NF_IPTABLES=y
148CONFIG_IP6_NF_FILTER=y
149CONFIG_IP6_NF_TARGET_REJECT=y
150CONFIG_IP6_NF_TARGET_REJECT_SKERR=y
151CONFIG_IP6_NF_MANGLE=y
152CONFIG_IP6_NF_RAW=y
153CONFIG_NET_SCHED=y
154CONFIG_NET_SCH_HTB=y
155CONFIG_NET_CLS_U32=y
156CONFIG_NET_EMATCH=y
157CONFIG_NET_EMATCH_U32=y
158CONFIG_NET_CLS_ACT=y
159CONFIG_NETDEVICES=y
160CONFIG_TUN=y
161CONFIG_PPP=y
162CONFIG_PPP_BSDCOMP=y
163CONFIG_PPP_DEFLATE=y
164CONFIG_PPP_MPPE=y
165CONFIG_PPPOLAC=y
166CONFIG_PPPOPNS=y
167CONFIG_FB=y
168CONFIG_SYNC=y
169CONFIG_USB_GADGET=y
170CONFIG_USB_G_ANDROID=y
171CONFIG_USB_OTG_WAKELOCK=y
172CONFIG_SWITCH=y
173CONFIG_RTC_CLASS=y
174CONFIG_STAGING=y
175CONFIG_ANDROID=y
176CONFIG_ANDROID_BINDER_IPC=y
177CONFIG_ASHMEM=y
178CONFIG_ANDROID_LOGGER=y
179CONFIG_ANDROID_LOW_MEMORY_KILLER=y
180CONFIG_ANDROID_INTF_ALARM_DEV=y
181</pre>
182
183<h3>Recommended Configuration</h3>
184
185<pre>
186CONFIG_PANIC_TIMEOUT=5
187CONFIG_KALLSYMS_ALL=y
188CONFIG_PERF_EVENTS=y
189CONFIG_COMPACTION=y
190# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
191CONFIG_PM_WAKELOCKS_LIMIT=0
192# CONFIG_PM_WAKELOCKS_GC is not set
193CONFIG_PM_RUNTIME=y
194CONFIG_PM_DEBUG=y
195CONFIG_SUSPEND_TIME=y
196CONFIG_BLK_DEV_LOOP=y
197CONFIG_BLK_DEV_RAM=y
198CONFIG_BLK_DEV_RAM_SIZE=8192
199CONFIG_UID_STAT=y
200CONFIG_MD=y
201CONFIG_DM_UEVENT=y
202CONFIG_INPUT_EVDEV=y
203CONFIG_INPUT_KEYRESET=y
204# CONFIG_INPUT_MOUSE is not set
205CONFIG_INPUT_JOYSTICK=y
206CONFIG_JOYSTICK_XPAD=y
207CONFIG_JOYSTICK_XPAD_FF=y
208CONFIG_JOYSTICK_XPAD_LEDS=y
209CONFIG_INPUT_TABLET=y
210CONFIG_TABLET_USB_ACECAD=y
211CONFIG_TABLET_USB_AIPTEK=y
212CONFIG_TABLET_USB_GTCO=y
213CONFIG_TABLET_USB_HANWANG=y
214CONFIG_TABLET_USB_KBTAB=y
215CONFIG_TABLET_USB_WACOM=y
216CONFIG_INPUT_MISC=y
217CONFIG_INPUT_KEYCHORD=y
218CONFIG_INPUT_UINPUT=y
219CONFIG_INPUT_GPIO=y
220# CONFIG_VT is not set
221# CONFIG_LEGACY_PTYS is not set
222CONFIG_POWER_SUPPLY=y
223CONFIG_BATTERY_ANDROID=y
224CONFIG_MEDIA_SUPPORT=y
225CONFIG_BACKLIGHT_LCD_SUPPORT=y
226CONFIG_SOUND=y
227CONFIG_SND=y
228CONFIG_UHID=y
229CONFIG_USB_HIDDEV=y
230CONFIG_HID_A4TECH=y
231CONFIG_HID_ACRUX=y
232CONFIG_HID_ACRUX_FF=y
233CONFIG_HID_APPLE=y
234CONFIG_HID_BELKIN=y
235CONFIG_HID_CHERRY=y
236CONFIG_HID_CHICONY=y
237CONFIG_HID_PRODIKEYS=y
238CONFIG_HID_CYPRESS=y
239CONFIG_HID_DRAGONRISE=y
240CONFIG_DRAGONRISE_FF=y
241CONFIG_HID_EMS_FF=y
242CONFIG_HID_ELECOM=y
243CONFIG_HID_EZKEY=y
244CONFIG_HID_HOLTEK=y
245CONFIG_HID_KEYTOUCH=y
246CONFIG_HID_KYE=y
247CONFIG_HID_UCLOGIC=y
248CONFIG_HID_WALTOP=y
249CONFIG_HID_GYRATION=y
250CONFIG_HID_TWINHAN=y
251CONFIG_HID_KENSINGTON=y
252CONFIG_HID_LCPOWER=y
253CONFIG_HID_LOGITECH=y
254CONFIG_LOGITECH_FF=y
255CONFIG_LOGIRUMBLEPAD2_FF=y
256CONFIG_LOGIG940_FF=y
257CONFIG_HID_MAGICMOUSE=y
258CONFIG_HID_MICROSOFT=y
259CONFIG_HID_MONTEREY=y
260CONFIG_HID_MULTITOUCH=y
261CONFIG_HID_NTRIG=y
262CONFIG_HID_ORTEK=y
263CONFIG_HID_PANTHERLORD=y
264CONFIG_PANTHERLORD_FF=y
265CONFIG_HID_PETALYNX=y
266CONFIG_HID_PICOLCD=y
267CONFIG_HID_PRIMAX=y
268CONFIG_HID_ROCCAT=y
269CONFIG_HID_SAITEK=y
270CONFIG_HID_SAMSUNG=y
271CONFIG_HID_SONY=y
272CONFIG_HID_SPEEDLINK=y
273CONFIG_HID_SUNPLUS=y
274CONFIG_HID_GREENASIA=y
275CONFIG_GREENASIA_FF=y
276CONFIG_HID_SMARTJOYPLUS=y
277CONFIG_SMARTJOYPLUS_FF=y
278CONFIG_HID_TIVO=y
279CONFIG_HID_TOPSEED=y
280CONFIG_HID_THRUSTMASTER=y
281CONFIG_HID_WACOM=y
282CONFIG_HID_WIIMOTE=y
283CONFIG_HID_ZEROPLUS=y
284CONFIG_HID_ZYDACRON=y
285CONFIG_USB_USBNET=y
286CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
287CONFIG_USB_EHCI_HCD=y
288CONFIG_ION=y
289CONFIG_ANDROID_RAM_CONSOLE=y
290CONFIG_ANDROID_TIMED_GPIO=y
291CONFIG_EXT4_FS=y
292CONFIG_EXT4_FS_SECURITY=y
293CONFIG_FUSE_FS=y
294CONFIG_MSDOS_FS=y
295CONFIG_VFAT_FS=y
296CONFIG_TMPFS=y
297CONFIG_TMPFS_POSIX_ACL=y
298CONFIG_SCHEDSTATS=y
299CONFIG_TIMER_STATS=y
300CONFIG_SCHED_TRACER=y
Clay Murphy768b82a2013-11-12 11:32:41 -0800301</pre>
Glenn Kasten60ae1002015-02-06 09:48:25 -0800302
303<h3>For USB host mode audio</h3>
304
305<pre>
306CONFIG_SND_USB=y
307CONFIG_SND_USB_AUDIO=y
308# CONFIG_USB_AUDIO is for a peripheral mode (gadget) driver
309</pre>
Glenn Kasten0cd546a2015-08-12 10:47:33 -0700310
311<h3>For USB host mode MIDI</h3>
312
313<pre>
314CONFIG_SND_USB_MIDI=y
315</pre>