the Chromium logo

The Chromium Projects

random notes by quiche@

Tracing wireless API events:

cd /sys/kernel/debug/tracing

echo 1 > events/cfg80211/enable # requires wireless-3.8 or newer

echo 1 > events/mac80211/enable # available with wireless-3.4

<do some stuff here>

cat trace

Example output

tracer: nop

entries-in-buffer/entries-written: 12/12 #P:4

_-----=> irqs-off

/ _----=> need-resched

| / _---=> hardirq/softirq

|| / _--=> preempt-depth

||| / delay

TASK-PID CPU# |||| TIMESTAMP FUNCTION

| | | |||| | |

wpa_supplicant-427 [000] ..s. 6636.389338: rdev_mgmt_frame_register: phy605, wdev(1), frame_type: 0xd0, reg: true

wpa_supplicant-427 [000] ..s. 6636.389373: rdev_return_void: phy605

wpa_supplicant-427 [000] .... 6636.389900: rdev_set_power_mgmt: phy605, netdev:mlan0(1818), enabled, timeout: -1

wpa_supplicant-427 [000] .... 6636.394420: rdev_return_int: phy605, returned: 0

wpa_supplicant-427 [000] .... 6636.453881: rdev_scan: phy605

wpa_supplicant-427 [000] .... 6636.453925: rdev_return_int: phy605, returned: 0

ksdioirqd/mmc1-5353 [003] .... 6636.609710: cfg80211_return_bss: 04:f0:21:05:4e:95, band: 0, freq: 2412

ksdioirqd/mmc1-5353 [000] .... 6640.651105: cfg80211_scan_done: aborted: false

Tracing cfg80211/mac80211 function calls:

cd /sys/kernel/debug/tracing/

echo 0 > tracing_on

echo > trace # clear any existing data

echo function_graph > current_tracer

echo funcgraph-abstime > trace_options

echo ':mod:cfg80211' > set_ftrace_filter

echo ':mod:mac80211' >> set_ftrace_filter # NOTE: two '>'s here

echo 1 > tracing_on

cat trace

Tracing general network events:

cd /sys/kernel/debug/tracing/

echo 1 > events/net/enable

<do some stuff here>

cat trace

[...]

sshd-5179 [000] ..s. 6940.442983: net_dev_queue: dev=eth0 skbaddr=ed0feb38 len=114

sshd-5179 [000] ..s. 6940.443025: net_dev_xmit: dev=eth0 skbaddr=ed0feb38 len=114 rc=0

Recording a trace:

Dumping the trace by hand (cat trace) works fine for manual work. But if you want a long-running trace, do this instead:

  1. cd /sys/kernel/debug/tracing/
  2. echo 0 > tracing_on
  3. Configure tracing by using the commands above (e.g. echo 1 > events/net/enable)
  4. cat trace_pipe | gzip -c > /var/log/trace.log.gz &
  5. echo 1 > tracing_on

build

to see the compiler command-line for emerge/ebuild, add CXXFLAGS="-print-cmdline" to the

environment of emerge/ebuild.


ccache

the chromiumos build tools use ccache, with the cache located in /var/cache/distfiles/ccache.

you can inspect the cache as follows.

$ CCACHE_DIR=/var/cache/distfiles/ccache ccache -s

cache directory /var/cache/distfiles/ccache

cache hit (direct) 1

cache hit (preprocessed) 0

cache miss 2

called for link 2

compile failed 1

files in cache 6

cache size 16.8 Mbytes

max cache size 1.0 Gbytes

you can clear it with

$ CCACHE_DIR=/var/cache/distfiles/ccache ccache --clear

if you run ccache manually (without using the build tools), CCACHE_DIR will probably not be set.

in this case, ccache will default to ~/.ccache as the cache directory.

$ ccache --show-stats

cache directory /home/quiche/.ccache

cache hit (direct) 1

cache hit (preprocessed) 0

cache miss 1

files in cache 3

cache size 8.5 Mbytes

max cache size 1.0 Gbytes


Working with mhtml files:

Before Ubuntu Precise:

$ for x in *.mhtml; do kmhtconvert -n -f $x; done

$ for x in */index.html; do w3m -dump $x > $(dirname $x).txt; done

With Ubuntu Precise:

$ for x in *.mhtml; do mu extract --save-all $x; done

Listing branch names:

in an existing checkout

$ git branch -a

Checking out a branch: see Working on a Branch

Enabling verbose logging for Chrome:

mount / -oremount,rw

echo "vmodule=network_event_log=1" >> /etc/chrome_dev.conf

restart ui

Monitoring cellular activation:

enable verbose logging for Chrome (see above)

ff_debug +cellular+dbus+modem+portal+service

ff_debug --level -5

tail -F /var/log/chrome/chrome | logger -t chrome-main &

tail -F /var/log/ui/ui.LATEST | logger -t chrome-ui &

tail -F /home/chronos/user/log/chrome | logger -t chrome-user &

dbus-monitor --system | logger -t dbus-monitor &

Resetting modem:

(see also http://support.verizonwireless.com/clc/devices/knowledge_base.html?id=38519)

  1. Network Options -> Verizon Wireless -> View Account -> Account Overview -> log in -> cancel account
  2. crosh> modem factory-reset 000000 y

make sure to do these steps in order.

Monitor mode packet capture (requires another chromebook, with a dev image):


Monitoring D-Bus signals:

$ sudo gdbus monitor --system --dest fi.w1.wpa_supplicant1 | logger -t supplicant-dbus &


Monitoring D-Bus calls:

By default, you can only monitor D-Bus signals (broadcast messages from one process to the who system)


OOBE:

How to force OOBE.