blob: 0f362b74187a90ec21ba91d0a5f8fb100cba72cc [file] [log] [blame]
The Android Open Source Project8b23a6c2009-03-03 19:30:32 -08001Android Emulator changes:
2=========================
3
4Versions:
5
6 1.0 => SDK M3 release
7 1.1 => SDK M5 release
8 1.2 => Internal release (build 72264)
9 1.3 => Internal release (build 77780)
10 1.4 => Internal release (build 84853)
11 1.5 => SDK 0.9_r1
12 1.6 => SDK 1.0_r1
13 1.7 => SDK 1.0_r2
14 1.8 => SDK 1.1
15 1.9 => (unreleased, planned, named likely to change)
16
17==============================================================================
18Changes between 1.8 and 1.9
19
20IMPORTANT CHANGES:
21
22- Many features have been integrated from upstream QEMU sources, including
23 the new TCG code generator used by the ARM translator. This should result
24 in slightly faster execution speed on all supported platforms.
25
26- The emulator now requires that you specify a virtual device name when
27 starting the emulator, prefixed with the '@' sign. For example, to start
28 the 'foo' virtual device, type:
29
30 emulator @foo
31
32 Each AVD (Android Virtual Device) corresponds to a directory used to store
33 mutable disk images, an optional system image/kernel/sdcard, plus some
34 configuration file(s).
35
36 The command-line tool 'android' that comes with the SDK can be used to
37 create/list/remove virtual devices on your system.
38
39 Note that the '@<name>' form is a convenience shortcut for '-avd <name>'.
40 It is thus possible to place options after the AVD name on your command
41 line, as in:
42
43 emulator @foo -verbose -shell
44
45 Finally, when building the Android platform source tree, an AVD name is not
46 required and 'emulator' will start a new emulator instance exactly as
47 previously.
48
49- A new option '-sysdir <dir>' has been introduced, the interpretation of
50 the '-system' option has changed, and '-image <file>' should now be
51 considered obsolete. In more details:
52
53 * you should now use '-sysdir <dir>' instead of '-system <dir>' to specify
54 the directory where system images will be searched by the emulator
55 on startup.
56
57 * you should now use '-system <file>' to indicate which system.img partition
58 image to use at startup.
59
60 * you should not use '-system <dir>' or '-image <path>' anymore. However,
61 these options are still supported but will print a warning to remind you
62 to change your scripts/habits.
63
64 The change was done to reduce confusion as to what these options provide.
65
66- Options '-noaudio', '-nojni', '-noskin' and 'nocache' are deprecated.
67 You should use '-no-audio', '-no-jni', '-no-skin' and '-no-cache' instead.
68
69- Option 'initdata' is deprecated, you should use '-init-data' instead.
70
71- Hardware emulation is now limited to the corresponding Android Virtual
72 Device's configuration. This means it is now possible to not emulate
73 a touch-screen, trackball, dpad, keyboard, modem, etc...
74
75 Note that in the case of the Android build system, all hardware properties
76 are enabled by default, so this only affects "normal" virtual devices
77 created with the 'android' tool.
78
79- The emulator now supports capturing network packets to a file.
80 You can either use the new -tcpdump <file> command-line option, or use
81 the new console 'network capture start <file>' command (then use
82 'network capture stop' to stop it).
83
84 This captures all ethernet packets on the virtual LAN, so this includes
85 ARP, UDP, TCP, etc... The file is in libpcap format and can be opened with
86 external tools like WireShark for analysis.
87
88OTHER:
89
90- The file in ~/.android/default.keyset was ignored, unless you used
91 '-keyset default' explicitely. It is now loaded automatically when
92 available.
93
94- Environment variable ANDROID_SDK_ROOT can be used to specifiy the location
95 of the SDK installation path.
96
97- Environment variable ANDROID_SDK_HOME can be used to specify the location
98 of the '.android' data directory.
99
100- A new console command 'avd name' can be used to query the name of the
101 virtual device running in the emulator. Note that it will be '<build>'
102 if you run from the Android build system.
103
104 Also, the emulator's window title also displays the AVD name now.
105
106- The option '-memory <size>' has been added. <memory> must be an integer
107 specifying the amount of physical RAM in the emulated device in megabytes.
108 The default value is 96.
109
110- The '-skindir <path>' option now requires that you specify a '-skin <name>'
111 option as well.
112
113- Better handling of Audio on Linux for the EsounD and Alsa backends
114
115- Fullscreen toggle should now work on Windows and OS X. On Linux, the
116 toggle will not switch the display resolution anymore (which resulted
117 in distorted images).
118
119==============================================================================
120Changes between 1.6 and 1.7
121
122IMPORTANT BUG FIXES:
123
124- Properly create ~/.android directory when needed.
125
126- Do not leave temporary files in Android app-specific directory on Win32
127
128- Support for HTTP/HTTPS proxies has been considerably improved and should now
129 "just work" with a lot more HTTP proxies. In case of problem, use the
130 -debug-proxy option to dump debugging data to stderr.
131
132OTHER:
133
134- Trackball emulation has changed. First, the awkward "Control-T" keybinding
135 is gone. Instead, you can now:
136
137 - press 'Delete' to show the trackball and have it disappear as soon
138 as your release the key.
139
140 - press 'F6' to perform a persistent trackball mode toggle.
141
142 Also, trackball emulation is fixed in rotated/landscape mode now.
143
144- New option '-nand-limits <limits>' allows you to send a signal to a remote
145 process when a read or write threshold on flash storage is reached. This is
146 only useful for hardcore Android system hackers.
147
148- Fix emulator build on recent Cygwin releases (the -mno-cygwin headers do not
149 tolerate the _GNU_SOURCE macro definition anymore)
150
151- Fix Win32 emulator to support SD Card images larger than 2 GiB
152
153- The non-Android build system has been completely rewritten to allow building
154 the emulator on Linux x86_64. Also, there is now a single Makefile that
155 drives the build in both Android and non-Android modes.
156
157- '-qemu <other-options>' works again
158
159==============================================================================
160Changes between 1.5 and 1.6
161
162IMPORTANT CHANGES:
163
164- Emulator now saves the user image in <android>/SDK1.0/
165
166OTHER:
167
168- Get rid of EsounD-related freezes on Linux (again)
169
170- Fix the documentation in -help-audio. '-audio list' doesn't work, one
171 needs to call -help-audio-out and -help-audio-in to get the list of valid
172 audio backends
173
174- Fix scrollwheel Dpad emulation in rotated mode. before that, using the
175 scroll-wheel would always generated Dpad Up/Down events, even when in
176 landscape mode.
177
178- Re-enable CPU fault emulation in case of unaligned data access. this was
179 previously disabled because it crashed the emulated kernel in previous
180 releases.
181
182- The emulator no longer prints an obscure warning when it doesn't find
183 the emulator.cfg configuration file in ~/.android.
184
185 'broken configuration file doesn't have a 'window' element'
186
187- Removed a bunch of obsolete options (e.g. -console, -adb-port, etc...)
188
189- Setting the network speed through the console or the -netspeed option will
190 properly modify the connectivity icon on the device.
191
192- Setting the GSM voice registration state to 'roaming' in the console will
193 properly modify the voice icon on the device
194
195==============================================================================
196Changes between 1.4 and 1.5
197
198IMPORTANT BUG FIXES:
199
200- Fix spurious discards of SMS messages when using two emulators.
201
202OTHER:
203
204- Get rid of EsounD-related freezes on Linux (again)
205
206- Fix the documentation in -help-audio. '-audio list' doesn't work; one
207 needs to call -help-audio-out and -help-audio-in to get the list of valid
208 audio backends
209
210- Fix scrollwheel Dpad emulation in rotated mode. before that, using the
211 scroll-wheel would always generated Dpad Up/Down events, even when in
212 landscape mode.
213
214- Re-enable CPU fault emulation in case of unaligned data access. This was
215 previously disabled because it crashed the emulated kernel in previous
216 releases.
217
218==============================================================================
219Changes between 1.3 and 1.4
220
221IMPORTANT BUG FIXES:
222
223- fix for audio-related Linux startup freezes when using the 'esd' and 'alsa'
224 backends
225
226- the number of audio buffers in the Windows backend has been incremented.
227 this gets rid of audio chopiness issues on Vista (and sometimes on XP too)
228
229NEW FEATURES:
230
231NEW CONSOLE COMMANDS:
232
233- new 'geo fix <lontitude> <latitude> [<altitude>]' command allows you to
234 send a simple GPS fix to the emulated system, without the headaches of
235 NMEA 1083 formatting.
236
237OTHER BUG FIXES:
238
239- fixed the -audio, -audio-in and -audio-out options (the <backend> values
240 were sometimes ignored)
241
242REGRESSIONS:
243
244OTHER:
245
246- the transitional '-qemud' option introduced in 1.3 is now gone. its
247 behaviour is now the default.
248
249- use the new '-old-system' option if you need to use a 1.4+ emulator binary
250 with older system images. if you don't use it, GSM and GPS emulation will
251 not work correctly (among other things).
252
253- the obsolete '-oldradio' option is now gone
254
255- on some Unix systems, SIGALRM is blocked by default, so unblock it when
256 creating the alarm timer
257
258- the 'esd' and 'alsa' libraries dump a lot of error messages to the console
259 by default on Linux. these are now disabled unless you use '-debug audio'
260
261- added the '-help-char-devices' help topic that describe the specification
262 of the <device> parameter of options like -serial, -gps, -shell-serial,
263 etc...
264
265KNOWN ISSUES:
266
267- no support for video input
268- no support for mutable SIM Card emulation yet
269- no support for bluetooth
270- no support for WiFi
271
272- on some Linux machines, the emulator might get stuck at startup. this
273 seems to be related to audio input support. try starting with
274 '-audio-in none' or even '-noaudio' to disable sound, or choose a
275 different audio backend by defining QEMU_AUDIO_DRV to an appropriate
276 value (read below).
277
278 you can also select different audio backends for both output and input
279 by defining QEMU_AUDIO_OUT_DRV and QEMU_AUDIO_IN_DRV independently.
280
281- on Windows, the emulator takes about 10-15% of the CPU even when the
282 emulated system is idle. this is a known issue related to QEMU's internal
283 event loop and Winsock. this should be fixed in a future emulator release.
284
285- GPS emulation only if you use the '-qemud' option. this is an experimental
286 option that is soon going to be the default. without this option, the
287 emulated system will start but GPS emulation will not work.
288
289 for the record, 'qemud' is a serial port multiplexer that is used to
290 multiplex several communication channels between the emulator and the
291 emulated system, though a single serial port.
292
293==============================================================================
294Changes between 1.2 and 1.3
295
296IMPORTANT BUG FIXES:
297
298NEW FEATURES:
299
300- '-audio-in <backend>' allows you to select the audio input backend from the
301 command line. this is equivalent to defining QEMU_AUDIO_IN_DRV=<backend>
302
303 '-audio-out <backend>' works for the audio output, and '-audio <backend>'
304 will select both input and output at the same time
305
306- '-debug <tags>' has replaced the old '-verbose-<tag1> -verbose-<tag2> ...'
307 debugging option. <tags> is a comma-separated list of debug tags
308 (see -help-debug-tags for a complete list). you can also use the special
309 value 'all' to indicate all debug tags, or prefix a '-' before a tag
310 name to disable it. for example:
311
312 -debug all,-audio
313
314 enables all debugging except audio. '-debug-<tag>' still works though.
315
316 note that while '-verbose-<tag>' is deprecated, '-verbose' is still supported
317 as an alias to '-debug-init'
318
319- '-keyset <file>' allows you to specific the keyset file to use. the default
320 is still ~/.android/default.keyset on Unix. for Windows, use -help-keyset
321 to get its default location (which differs between XP and Vista)
322
323
324NEW CONSOLE COMMANDS:
325
326- the 'geo nmea <sentence>' can be used to send a NMEA 1083 sentence as if
327 it came from an emulated GPS unit. NOTE: this doesn't work unless you
328 also use the '-qemud' option (see KNOWN ISSUES below)
329
330OTHER BUG FIXES:
331
332- severe color artefact issues when scaling the emulator window < 1.0 were
333 fixed.
334
335- fix rare random emulator freezes on Linux by disabling the 'dynticks' timer.
336
337REGRESSIONS:
338
339OTHER:
340
341- the ambiguous '-console' option is now obsolete. use '-shell' instead
342
343- the new '-shell-serial <device>' allows you to specify a device to
344 connect a root shell session to the emulated system.
345
346- the '-debug-kernel' option is now known as '-show-kernel' (the -debug-
347 prefix is reserved for strict emulator debugging features)
348
349- '-adb-port' has been removed from the list of options. similarly
350 '-port <port>' will accept an odd port number, but will print a warning
351 that it is using <port>-1 instead.
352
353- MMX is used on x86 to speed up window rescaling.
354
355- a new '-qemud' option is required to have GPS support work in this
356 SDK (either through '-gps <device>' or the 'geo nmea <sentence>'
357 console command)
358
359 this option is purely experimental and will soon become the default.
360
361KNOWN ISSUES:
362
363- no support for video input
364- no support for mutable SIM Card emulation yet
365- no support for bluetooth
366- no support for WiFi
367
368- on some Linux machines, the emulator might get stuck at startup. this
369 seems to be related to audio input support. try starting with
370 '-audio-in none' or even '-noaudio' to disable sound, or choose a
371 different audio backend by defining QEMU_AUDIO_DRV to an appropriate
372 value (read below).
373
374 you can also select different audio backends for both output and input
375 by defining QEMU_AUDIO_OUT_DRV and QEMU_AUDIO_IN_DRV independently.
376
377- on Windows, the emulator takes about 10-15% of the CPU even when the
378 emulated system is idle. this is a known issue related to QEMU's internal
379 event loop and Winsock. this should be fixed in a future emulator release.
380
381- GPS emulation only if you use the '-qemud' option. this is an experimental
382 option that is soon going to be the default. without this option, the
383 emulated system will start but GPS emulation will not work.
384
385 for the record, 'qemud' is a serial port multiplexer that is used to
386 multiplex several communication channels between the emulator and the
387 emulated system, though a single serial port.
388
389==============================================================================
390Changes between 1.1 and 1.2
391
392
393IMPORTANT BUG FIXES:
394
395- fixed a typo that prevented the F9/F10 keyboard shortcuts from working
396 properly, making non-programatically tracing unusable.
397
398- halve the emulator's memory requirements, saving around 130 megabytes
399 of memory by changing the way flash images are accessed (we now use
400 temporary files instead)
401
402- this emulator binary should be 10% to 20% faster than previous ones on
403 the Windows and OS X platforms. for faster boots, you may also want to
404 use the -no-boot-anim option described below to speed up the initial
405 boot sequence as well on slow machines.
406
407- proper rotation support when using Keypad 7/9 to switch between layouts
408 in the default HVGA skin. no need to use Ctrl-PageDown anymore
409
410- the -http-proxy <proxy> option didn't work correctly on Windows (unless
411 you were very lucky).
412
413- general socket handling code on Windows has been significantly improved.
414
415
416NEW FEATURES:
417
418- the console port number of a given emulator instance is now displayed in
419 its window's title bar.
420
421- voice/sms are automatically forwarded to other emulator instances running
422 on the same machine, as long as you use their console port number as the
423 destination phone number.
424
425 for example, if you have two emulator running, the first one will usually
426 use console port 5554, and the second one will use port 5556
427
428 then dialing 5556 on the 1st emulator will generate an incoming call on
429 the 2nd emulator. you can also hold/unhold calls as well.
430
431 this also works when sending SMS messages from one emulator to the other
432
433- the help system has been totally revamped:
434
435 * -help prints a summary of all options and help topics
436 * -help-<option> prints option-specific help
437 * -help-<topic> prints various topical help text
438 * -help-all prints *all* help content at once
439
440- the emulator now tries to automatically detect the host time zone and sends
441 it to the emulated system at startup (through the GSM modem). there is also
442 a new '-timezone <timezone>' option to be able to specify a different one.
443
444 IMPORTANT: the <timezone> name must be in zoneinfo format, i.e.
445 Area/Location, human-friendly abbreviations like "PST" or "CET"
446 will not work. examples are:
447
448 America/Los_Angeles
449 Europe/Paris
450
451- the emulator can now use up to 4 distinct DNS servers (instead of only one).
452 by default, they are taken from your system's list, which is obtained by
453 calling GetNetworkParams() on Win32, and parsing /etc/resolv.conf on
454 Unix.
455
456- a new '-dns-server <server>' option can be used to specify a comma-separated
457 list of alternative DNS servers to be used by the emulated system, instead of
458 the system's default.
459
460- a new '-scale <fraction>' option allows you to scale the emulator
461 window. <fraction> can be a number between 0.1 and 3.0.
462
463 you can also use '-scale <value>dpi', (e.g. '-scale 110dpi') to indicate the
464 resolution of your host monitor screen. it will be divided by the emulated
465 device's resolution to get an absolute scale.
466
467- a new '-dpi-device <dpi>' option allows you to specific the resolution of
468 the emulated device's screen. Note that this is not required: the default
469 used is 165, which is the average of several prototypes we've been working
470 with.
471
472- add a new '-port <port>' option to specify which port the emulator should
473 bind to for the console, instead of letting it guess. <port> must be an
474 *even* integer between 5554 and 5584 included. the corresponding ADB port
475 will be <port>+1
476
477- [DEPRECATED] add a new '-adb-port <port>' option to specify which port the
478 emulator should bind to, instead of letting it guess. <port> must be an odd
479 integer between 5555 and 5585 included. the corresponding control console
480 will be on <port>-1
481
482 NOTE: -adb-port is deprecated, don't use it, it will probably disappear
483 NOTE2: you cannot use both -port and -adb-port at the same time.
484
485- a new '-no-boot-anim' options tells the emulated system to disable the boot
486 animation. on slow systems, this can *significantly* reduce the time to
487 boot the system in the emulator.
488
489- you can now redefine the emulator's keybinding by writing a 'keyset' file
490 and use '-keyset <filename>' to use it when starting the emulator. use
491 -help-keyset and -help-keyset-file for all details.
492
493 this allows you to use the emulator effectively on keyboards which don't
494 have a keypad, by using different keys..
495
496- you can now toggle between windowed and fullscreen mode at runtime by
497 pressing Alt-Enter (only works on Linux at the moment !!)
498
499- use '-audio-out <backend>' and '-audio-in <backend>' to change the output
500 and input audio backends used by the emulator. see -help-audio-out and
501 -help-audio-in for a list of valid values.
502
503 this is equivalent to setting the QEMU_AUDIO_OUT_DRV and QEMU_AUDIO_IN_DRV
504 environment variables.
505
506 use '-audio <backend>' to set both the input and output backends at the
507 same time. this is equivalent to setting the QEMU_AUDIO_DRV environment
508 variable.
509
510
511NEW CONSOLE COMMANDS:
512
513- the new 'power' command can be used to control the power/battery state of
514 the emulated device.
515
516- the new 'event send' command can be used to send simulated hardware events
517 to the Android Linux kernel. each event must be in the form
518 <type>:<code>:<value> where:
519
520 <type> is either an integer or a corresponding string alias
521 (use "event types" to see a list of aliases)
522
523 <code> is either an integer or a corresponding string alias
524 that depends on the value of <type> (use "event codes <type>"
525 to see a list of these aliases)
526
527 <value> is an integer
528
529 NOTE: Be warned that it is very easy to confuse the kernel about the state
530 of emulated hardware by sending the wrong event. An *excellent*
531 knowledge of the Linux kernel internals is encouraged before playing
532 with "event send".
533
534- the new 'event text <textMessage>' command can be used to simulate
535 keypresses of small text messages, where <textMessage> is an utf-8 string.
536
537- the new 'avd stop' and 'avd start' command can be used to stop/start the
538 emulation. you can also use 'avd status' to query the current state.
539
540- the new 'window scale <scale>' command allows you to change the scale of
541 the emulator window dynamically. <scale> is either an integer followed by
542 the 'dpi' suffix (e.g. '120dpi') or a real number between 0.1 and 3.0.
543
544 in the first case, <scale> specifies your monitor dpi; in the second one,
545 the new window scale itself.
546
547
548OTHER BUG FIXES:
549
550- in case of SDL_Init() failure, print the SDL error message.
551- disable networking code's logging to /tmp/slirp.log
552- the emulator now works with 2GB SD Card files
553- the emulator doesn't prevent the screensaver to kick in on OS X anymore
554- the -onion and -onion-alpha options now work properly
555- a second emulator instance trying to use the same SD Card instance than a
556 first one will no longer crash
557- it's now possible to properly start the emulator in the background on all
558 Unix shells (e.g. "emulator &") without being interrupted/stopped by a
559 SIGTTIN or SIGTTOU signal.
560- fixed a bug in the SMS emulation that happened when using GSM 7-bit escaped
561 characters, i.e. anything in the following: [|]~\{}^
562- fixed a small regression where -data <foo> would fail if the file <foo>
563 did not exist.
564
565
566REGRESSIONS:
567
568- the -flash-keys options doesn't work anymore
569
570
571KNOWN ISSUES:
572
573- no support for video input
574- no support for mutable SIM Card emulation yet
575- no support for bluetooth
576- no support for WiFi
577
578- on some Linux machines, the emulator might get stuck at startup. this
579 seems to be related to audio input support. try starting with
580 '-audio-in none' or even '-noaudio' to disable sound, or choose a different
581 audio backend by defining QEMU_AUDIO_DRV to an appropriate value
582 (read below).
583
584 you can also select different audio backends for both output and input
585 by defining QEMU_AUDIO_OUT_DRV and QEMU_AUDIO_IN_DRV independently.
586
587- on Windows, the emulator takes about 10-15% of the CPU even when the
588 emulated system is idle. this is a known issue related to QEMU's internal
589 event loop and Winsock. this should be fixed in a future emulator release.
590
591OTHER:
592
593- you can now use -debug-<component> and/or -debug-no-<component> to
594 enable or disable the debug messages of a given emulator component. this
595 can be very useful for troubleshooting. for all details, use -help-debug
596 and -help-debug-tags
597
598- you can also use '-debug <tags>' where <tags> is a comma-separated list
599 of component names, optionally prefixed by a single '-'. see -help-debug
600 and -help-debug-tags for all details
601
602- you can now define the ANDROID_VERBOSE environment variable as a list
603 of "debug" items (each <item> corresponds to a -debug-<item> option).
604 for example, defining:
605
606 ANDROID_VERBOSE=socket,keys
607
608 is equivalent to using "-debug socket,keys" when invoking the emulator
609
610- as a special case, -debug-slirp enables logging of the router/firewall
611 operations to a temporary file (e.g. /tmp/android/slirp.log). you can
612 also specify a logging bitmask with the ANDROID_SLIRP_LOGMASK environment
613 variable (the default is a mask of 7).
614
615- removed many obsolete / unused source files from the repository. also
616 performed a rather heavy cleanup of the sources to make them somewhat
617 more manageable.
618
619- integrate dynticks support from upstream QEMU depot. this only allows one
620 to provide more precise timing accuracy in the guest under Linux.
621 (NOTE: disabled in the source code, since it seems that it freezes
622 the emulator sometimes)
623
624- audio input is now working on OS X, Windows and Linux. on Linux, there
625 are four different backends supported: EsounD, ALSA, OSS and SDL. they
626 are accessed through dlopen/dlsym, which means that the emulator binary
627 will run on any system.
628
629 you can specify a given backend by defining the QEMU_AUDIO_DRV environment
630 variable to one of these values:
631
632 alsa
633 esd
634 sdl
635 oss
636 none
637
638 note that the "sdl" audio backend is the most compatible, but doesn't
639 support audio input at all !!
640
641- a new option '-cpu-delay <delay>' can be used to slow down the CPU
642 emulation. the <delay> is an integer between 0 and 1000. note that it
643 doesn't necessarily scale linearly with effective performance.
644
645 the delay process is not exactly deterministic. this is just a hack that
646 may disappear or be completely re-implemented in the future
647
648- some new "gsm" and "sms" subcommands were added to the control console.
649 they are used internally by the voice/sms auto-forwarder and are probably
650 not very useful to typical developers
651
652- some code has been added to support save/restore of the AVD state to/from
653 a file. however this is not properly tested yet, and requires that you
654 use exactly the same options and disk images when reloading the AVD state.
655
656- added a new -cache <file> option to specify the cache partition image
657 file. the default is to use a temporary file instead
658
659- added a new -report-console <socket> option to be able to report the
660 automatically assigned console port to a remote third-party (e.g. a
661 script) before starting the emulation. see the output of -help for all
662 the details
663
664- (only useful to Android engineers)
665 the audio sub-system is now compiled in its own static library (called
666 libqemu-audio.a), which gets copied to the Android "prebuilt/Linux/qemu"
667 directory. this is done to avoid forcing all developers to install various
668 development packages on Linux, as well as all build servers. there is also
669 now a script named "distrib/update-audio.sh" which will update the depot
670 file automatically for you: call it whenever you change the audio sources.