IntroductionChamelium provides capturing and streaming feature so user can monitor audio playing from ChromeOS for a long time.This document provides the steps to demo this feature. Prepare a Chromebook with tick noiseInstall an image on ChromeOS such that there will be tick noise caused by underrun. Kevin image R57-9178.0.0 is a good example. Play sine tone on ChromebookPlay a sine tone video on youtube, e.g. 1HR 528Hz sine toneListen to it using headphone and find there is tick noise. Connect the audio pathConnect the Chromebook to Chamelium audio board using 4 ring audio cable. Connect Chamelium blue port (LineIn) to audio board blue port using 3 ring audio cable. Find Chamelium's IPConnect the USB serial port to workstation. Refer to network setup to get the IP address of Chamelium. Connect to Chamelium serverAssume the IP address of Chamelium is 192.168.100.4 In Chromium OS chroot, use test_server script to connect to Chamelium server. $ cd ~/trunk/src/platform/chameleon/ $ ./client/test_server.py --chameleon_host=192.168.100.4 2017-03-07 17:36:47,219:INFO:Connected to http://192.168.100.4:9992 with MAC address 94:eb:2c:00:01:41 2017-03-07 17:36:47,219:INFO:In interactive shell, p is the proxy to chameleond server 2017-03-07 17:36:47,287:INFO: Port 1 is DP. Port 2 is DP. Port 3 is HDMI. Port 4 is VGA. Port 5 is Mic. Port 6 is LineIn. Port 7 is LineOut. Port 8 is USBIn. Port 9 is USBOut. Port 10 is USBKeyboard. Port 11 is USBTouch. Port 14 is ClassicBluetoothMouse. Port 17 is Unknown. E.g. p.StartCapturingAudio(6) to capture from LineIn. p.StopCapturingAudio(6) to stop capturing from LineIn. p.Plug(3) to plug HDMI. p.Unplug(3) to unplug HDMI. Python 2.7.10 (default, Oct 23 2016, 07:38:19) [GCC 4.9.x 20150123 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> >>> ConnectCrosToLineIn() >>> p.StartCapturingAudio(6, False) >>> DetectAudioValue0() 2017-03-07 17:46:27,219:INFO:connecting to 192.168.100.4:9994 2017-03-07 17:46:27,222:DEBUG:Major 1, minor 0 2017-03-07 17:46:27,222:INFO:dump realtime audio page mode Best effort 2017-03-07 17:46:27,224:INFO:Start to detect continuous 0s. 2017-03-07 17:46:27,224:INFO:Channels=[0, 1], margin=0.010000, continuous_samples=5, duration=3600 seconds, dump_frames=48000. 2017-03-07 17:46:27,224:WARNING:Receive error code 7, 'Drop realtime audio page 52183' 2017-03-07 17:46:27,225:INFO:Value of channel 0 is 0.125715 2017-03-07 17:46:27,225:INFO:Value of channel 1 is 0.123948 2017-03-07 17:46:27,225:INFO:Value of channel 0 is 0.134183 2017-03-07 17:46:27,225:INFO:Value of channel 1 is 0.132190 2017-03-07 17:46:27,225:INFO:Value of channel 0 is 0.142132 2017-03-07 17:46:27,226:INFO:Value of channel 1 is 0.140410 2017-03-07 17:46:27,226:INFO:Value of channel 0 is 0.149582 2017-03-07 17:46:27,226:INFO:Value of channel 1 is 0.147740 2017-03-07 17:46:27,226:INFO:Value of channel 0 is 0.156259 2017-03-07 17:46:27,226:INFO:Value of channel 1 is 0.154545 2017-03-07 17:46:27,226:INFO:Value of channel 0 is 0.162134 2017-03-07 17:46:27,226:INFO:Value of channel 1 is 0.160298 2017-03-07 17:46:27,226:INFO:Value of channel 0 is 0.167443 2017-03-07 17:46:27,226:INFO:Value of channel 1 is 0.165158 2017-03-07 17:46:27,226:INFO:Value of channel 0 is 0.171803 2017-03-07 17:46:27,227:INFO:Value of channel 1 is 0.169648 2017-03-07 17:46:27,227:INFO:Value of channel 0 is 0.175156 2017-03-07 17:46:27,227:INFO:Value of channel 1 is 0.173238 2017-03-07 17:46:27,227:INFO:Value of channel 0 is 0.178005 2017-03-07 17:46:27,227:INFO:Value of channel 1 is 0.175745 2017-03-07 17:46:28,102:WARNING:Detected continuous 5 0s of channel 0 2017-03-07 17:46:28,102:WARNING:Detected continuous 5 0s of channel 1 2017-03-07 17:46:28,103:WARNING:Save to detect0_20170307174627/audio_52511.wav 2017-03-07 17:46:28,105:WARNING:Continuous 139 0s of channel 0 2017-03-07 17:46:28,106:WARNING:Continuous 140 0s of channel 1 2017-03-07 17:46:28,106:WARNING:Save to detect0_20170307174627/audio_52512.wav ... The monitoring will keep running. Adjust volume on Chromebook, or adjust the parameter of detectorIf there is false alarm, adjust the volume on Chromebook to make it louder, or use a smaller value for margin passed to DetectAudioValue0. Use help function to get the docstrings of DetectAudioValue0: >>>help(DetectAudioValue0) Help on function DetectAudioValue0 in module __main__: DetectAudioValue0(channels=None, margin=0.01, continuous_samples=5, duration=3600, dump_samples=48000) Detects if Chameleon captures continuous audio data close to 0. This function will get the audio streaming data from stream server and will check if the audio data is close to 0 by the margin parameter. -margin < value < margin will be considered to be close to 0. If there are continuous audio samples close to 0 in the streamed data, test_server will log it and save the audio data to a wav file. E.g. >>> ConnectCrosToLineIn() >>> p.StartCapturingAudio(6, False) >>> DetectAudioValue0(duration=24*3600, margin=0.001) Args: channels: Array of audio channels we want to check. E.g. [0, 1] means we only care about channel 0 and channel 1. margin: Used to decide if the value is closed to 0. Maximum value is 1. continuous_samples: When continuous_samples samples are closed to 0, trigger event. duration: The duration of monitoring in seconds. dump_samples: When event happens, how many audio samples we want to save to file. Check the recorded defect waveformUse audacity to view the wav file. The first wav file is where underrun is detected. Press the black arrow on the left of a channel and select Spectrogram so the part where waveform dropped to zero is obvious. The second wav file is where normal playback is resumed. |
Chromium OS > Testing Home >