I have a new beagleboard xM rev.C that I am having some troubles with. I am using the current demo image from the beagleboard group for the headless ubuntu 11.10 installation. I’ve set mpurate=1000 in uEnv.txt to run the beagleboard xm at full speed and the problem is that the ethernet port and the usb ports stop working after awhile, usually under moderate to heavy usb traffic (i understand that the beagle’s ethernet is a usb device). I also backed the frequency down to 600 MHz and the problem still persisted. I’ve been reading posts on the internet with multiple answers, and since I was using Ubuntu, I decided to try and replicate on the problem with the sd card that came with the board and sure enough, transferring files from a usb drive or over the network crashes the internal hub, and it doesn’t come back up. I did notice that it took more of a beating before crashing. Robogames is in two weeks and I’ve been waiting on this board since mid January (it came in a few days ago, I was just getting around to it). I really don’t want to RMA the board at this point, does anyone know any confirmed or speculated solutions? Doing my research I came across a couple of things:
One of the threads I found was about a similar problem on the original Beagle board rev. c3 dated to 2009:
https://groups.google.com/forum/#!msg/beagleboard/W4OF8LsfY9o/mHOH6UGFz38J
It describes a similar issue with noise existing on the vdd line of the USB PHY. The beagle board xM is generating a similar message, so I am wondering if a similar problem exists. They recommended using SmartReflex, which I noticed in the Ubuntu kernel so I dismissed that.
Another difference I saw between the stock Angstrom and Ubuntu 11.10 (I’m prepping the 12.04 armhf beta right now for my board) kernels is that the core seems to be clocked faster under Ubuntu 11.10 (could account for the quicker buildup of noise?). Under Angstrom I see this line:
[ 10.609527] Switched to new clocking rate (Crystal/Core/MPU): 26.0/332/1000 MHz
and under Ubuntu I see these respectively:
[ 0.000000] Clocking rate (Crystal/Core/MPU): 26.0/400/600 MHz
[ 0.110321] Switched to new clocking rate (Crystal/Core/MPU): 26.0/400/1000 MHz
Could this be the source of a problem? And again, both operating systems have the same problem, but Angstrom seemed more resilient.
Looking again at what happened to the Beagleboard C3 in the past and potentially drawing a similarity to the BB xM (they seem similar enough), I found a website (http://www.linusakesson.net/hardware/beagleboard/ehci.php) that said that doubling the capacitance in C97 (on the bb rev C3, not the xM) was a fix for it, could trying the same type of thing on the Beagleboard xM prove helpful? Looking at the schematics of both devices, C97 on the BB c3 appears to serve the same part of the circuit C136 does on the BB xM. Could soldering a 10 uF capacitor over C136 potentially be beneficial? Any ideas/comments?
Here is my dmesg following the problem (Ubuntu 11.10 armel from http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r7-minimal-armel.tar.xz):
[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.2.13-x7 (root@panda-a1-1gb) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #1 SMP Tue Mar 27 12:03:52 UTC 2012
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: OMAP3 Beagle Board
[ 0.000000] Beagle expansionboard: none
[ 0.000000] Beagle second expansionboard: none
[ 0.000000] Reserving 12582912 bytes SDRAM for VRAM
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] On node 0 totalpages: 126464
[ 0.000000] free_area_init_node: node 0, pgdat c0846a80, node_mem_map c090d000
[ 0.000000] Normal zone: 1024 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 125440 pages, LIFO batch:31
[ 0.000000] OMAP3630 ES1.2 (l2cache iva sgx neon isp 192mhz_clk )
[ 0.000000] Clocking rate (Crystal/Core/MPU): 26.0/400/600 MHz
[ 0.000000] PERCPU: Embedded 8 pages/cpu @c0d11000 s10784 r8192 d13792 u32768
[ 0.000000] pcpu-alloc: s10784 r8192 d13792 u32768 alloc=8*4096
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 125440
[ 0.000000] Kernel command line: console=ttyO2,115200n8 console=tty0 vram=12MB omapfb.mode=dvi:1280x720MR-16@60 omapdss.def_disp=dvi root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc mpurate=1000 buddy=none buddy2=none
[ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] allocated 2097152 bytes of page_cgroup
[ 0.000000] please try ‘cgroup_disable=memory’ option if you don’t want memory cgroups
[ 0.000000] Memory: 494MB = 494MB total
[ 0.000000] Memory: 486972k/486972k available, 37316k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xe0800000 - 0xf8000000 ( 376 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0xc0008000 - 0xc07881f0 (7681 kB)
[ 0.000000] .init : 0xc0789000 - 0xc07dea20 ( 343 kB)
[ 0.000000] .data : 0xc07e0000 - 0xc0848ef0 ( 420 kB)
[ 0.000000] .bss : 0xc0848f14 - 0xc090cff0 ( 785 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:410 nr_irqs:410 410
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
[ 0.000000] Total of 96 interrupts on 1 active controller
[ 0.000000] OMAP clockevent source: GPTIMER12 at 32768 Hz
[ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[ 0.000000] Console: colour dummy device 80x30
[ 0.000000] console [tty0] enabled
[ 0.000640] Calibrating delay loop… 531.48 BogoMIPS (lpj=2076672)
[ 0.083282] pid_max: default: 32768 minimum: 301
[ 0.083526] Security Framework initialized
[ 0.083618] AppArmor: AppArmor initialized
[ 0.083892] Mount-cache hash table entries: 512
[ 0.084899] Initializing cgroup subsys cpuacct
[ 0.084960] Initializing cgroup subsys memory
[ 0.085021] Initializing cgroup subsys devices
[ 0.085052] Initializing cgroup subsys freezer
[ 0.085083] Initializing cgroup subsys blkio
[ 0.085113] Initializing cgroup subsys perf_event
[ 0.085235] CPU: Testing write buffer coherency: ok
[ 0.085510] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[ 0.086212] Brought up 1 CPUs
[ 0.086242] SMP: Total of 1 processors activated (531.48 BogoMIPS).
[ 0.087310] devtmpfs: initialized
[ 0.093444] print_constraints: dummy:
[ 0.093811] NET: Registered protocol family 16
[ 0.094024] GPMC revision 5.0
[ 0.095672] OMAP GPIO hardware version 2.5
[ 0.097503] omap_mux_init: Add partition: #1: core, flags: 0
[ 0.098754] OMAP3 Beagle Rev: xM C
[ 0.102325] Reprogramming SDRC clock to 400000000 Hz
[ 0.102355] dpll3_m2_clk rate change failed: -22
[ 0.104125] Found NAND on CS0
[ 0.104187] Registering NAND on CS0
[ 0.104492] gpio_request: gpio–22 (DVI reset) status -22
[ 0.104522] Unable to get DVI reset GPIO
[ 0.104675] hw-breakpoint: debug architecture 0x4 unsupported.
[ 0.105316] Could not look up mcpdm hw_mod
[ 0.108581] omap-mcbsp.2: alias fck already exists
[ 0.108795] omap-mcbsp.3: alias fck already exists
[ 0.110198] Calibrating delay loop (skipped) already calibrated this CPU
[ 0.110321] Switched to new clocking rate (Crystal/Core/MPU): 26.0/400/1000 MHz
[ 0.110473] OMAP DMA hardware revision 5.0
[ 0.115539] bio: create slab at 0
[ 0.116546] SCSI subsystem initialized
[ 0.117462] usbcore: registered new interface driver usbfs
[ 0.117584] usbcore: registered new interface driver hub
[ 0.117736] usbcore: registered new device driver usb
[ 0.118408] omap_i2c omap_i2c.1: bus 1 rev1.4.0 at 2600 kHz
[ 0.120666] twl4030: PIH (irq 7) chaining IRQs 368…375
[ 0.120758] twl4030: power (irq 373) chaining IRQs 376…383
[ 0.121246] twl4030: gpio (irq 368) chaining IRQs 384…401
[ 0.121520] _omap_mux_init_gpio: Could not set gpio192
[ 0.123565] print_constraints: VUSB1V5: 1500 mV normal standby
[ 0.123931] print_constraints: VUSB1V8: 1800 mV normal standby
[ 0.124206] print_constraints: VUSB3V1: 3100 mV normal standby
[ 0.125793] twl4030_usb twl4030_usb: Initialized TWL4030 USB module
[ 0.126403] print_constraints: VMMC1: 1850 <–> 3150 mV at 3150 mV normal standby
[ 0.126739] print_constraints: VDAC: 1800 mV normal standby
[ 0.127044] print_constraints: VAUX2_4030: 1800 mV normal
[ 0.127349] print_constraints: VDVI: 1800 mV normal standby
[ 0.127746] print_constraints: VSIM: 1800 <–> 3000 mV at 1800 mV normal standby
[ 0.128051] omap_i2c omap_i2c.2: bus 2 rev1.4.0 at 400 kHz
[ 0.138732] omap_i2c omap_i2c.3: bus 3 rev1.4.0 at 100 kHz
[ 0.139648] NetLabel: Initializing
[ 0.139678] NetLabel: domain hash size = 128
[ 0.139678] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.139739] NetLabel: unlabeled traffic allowed by default
[ 0.139770] Switching to clocksource 32k_counter
[ 0.152709] AppArmor: AppArmor Filesystem Enabled
[ 0.161834] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[ 0.171844] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
[ 0.171875] musb-hdrc: MHDRC RTL version 1.800
[ 0.171875] musb-hdrc: setup fifo_mode 5
[ 0.171905] musb-hdrc: 28/31 max ep, 8192/16384 memory
[ 0.172149] musb-hdrc musb-hdrc: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
[ 0.172454] NET: Registered protocol family 2
[ 0.172729] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.173431] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[ 0.173675] TCP bind hash table entries: 16384 (order: 5, 131072 bytes)
[ 0.173889] TCP: Hash tables configured (established 16384 bind 16384)
[ 0.173919] TCP reno registered
[ 0.173919] UDP hash table entries: 256 (order: 1, 8192 bytes)
[ 0.173950] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[ 0.174224] NET: Registered protocol family 1
[ 0.174621] RPC: Registered named UNIX socket transport module.
[ 0.174652] RPC: Registered udp transport module.
[ 0.174652] RPC: Registered tcp transport module.
[ 0.174682] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.174865] Trying to unpack rootfs image as initramfs…
[ 0.374176] Freeing initrd memory: 3024K
[ 0.374450] omap_dsp_init: 600000 bytes @ 9ee00000
[ 0.375885] audit: initializing netlink socket (disabled)
[ 0.375946] type=2000 audit(0.390:1): initialized
[ 0.512542] VFS: Disk quotas dquot_6.5.2
[ 0.512908] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.515960] nfs4filelayout_init: NFSv4 File Layout Driver Registering…
[ 0.516052] fuse init (API version 7.17)
[ 0.517364] Btrfs loaded
[ 0.517425] msgmni has been set to 957
[ 0.518585] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[ 0.518615] io scheduler noop registered
[ 0.518615] io scheduler deadline registered
[ 0.518676] io scheduler cfq registered (default)
[ 0.519348] OMAP DSS rev 2.0
[ 0.521423] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.522521] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0
[ 0.522888] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1
[ 0.523101] omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2
[ 1.303436] console [ttyO2] enabled
[ 1.307403] omap_uart.3: ttyO3 at MMIO 0x49042000 (irq = 80) is a OMAP UART3
[ 1.321868] brd: module loaded
[ 1.328277] loop: module loaded
[ 1.332489] twl4030_madc twl4030_madc: clk disabled, enabling
[ 1.340332] omap2-nand driver initializing
[ 1.344909] No NAND device found
[ 1.348419] No NAND device found
[ 1.351989] OneNAND driver initializing
[ 1.356506] usbcore: registered new interface driver cdc_ether
[ 1.362701] usbcore: registered new interface driver rndis_host
[ 1.368988] cdc_ncm: 04-Aug-2011
[ 1.372406] usbcore: registered new interface driver cdc_ncm
[ 1.378723] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 3.397796] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
[ 3.403991] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
[ 3.411895] ehci-omap ehci-omap.0: irq 77, io mem 0x48064800
[ 3.429138] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
[ 3.435180] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 3.442382] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.450012] usb usb1: Product: OMAP-EHCI Host Controller
[ 3.455657] usb usb1: Manufacturer: Linux 3.2.13-x7 ehci_hcd
[ 3.461669] usb usb1: SerialNumber: ehci-omap.0
[ 3.466857] hub 1-0:1.0: USB hub found
[ 3.470886] hub 1-0:1.0: 3 ports detected
[ 3.499603] Initializing USB Mass Storage driver…
[ 3.504791] usbcore: registered new interface driver usb-storage
[ 3.511169] USB Mass Storage support registered.
[ 3.516113] usbcore: registered new interface driver libusual
[ 3.522308] udc: OMAP UDC driver, version: 4 October 2004 (iso) (dma)
[ 3.529235] gadget: using random self ethernet address
[ 3.534790] gadget: using random host ethernet address
[ 3.541076] usb0: MAC 32:e1:95:25:af:ba
[ 3.545043] usb0: HOST MAC 5a:c7:c1:45:50:7a
[ 3.549621] gadget: Ethernet Gadget, version: Memorial Day 2008
[ 3.555999] gadget: g_ether ready
[ 3.559539] musb-hdrc musb-hdrc: MUSB HDRC host driver
[ 3.565216] musb-hdrc musb-hdrc: new USB bus registered, assigned bus number 2
[ 3.572937] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 3.580108] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.587738] usb usb2: Product: MUSB HDRC host driver
[ 3.593048] usb usb2: Manufacturer: Linux 3.2.13-x7 musb-hcd
[ 3.599029] usb usb2: SerialNumber: musb-hdrc
[ 3.604064] hub 2-0:1.0: USB hub found
[ 3.608001] hub 2-0:1.0: 1 port detected
[ 3.612792] mousedev: PS/2 mouse device common for all mice
[ 3.619567] input: twl4030_pwrbutton as /devices/platform/omap/omap_i2c.1/i2c-1/1-0049/twl4030_pwrbutton/input/input0
[ 3.631256] i2c /dev entries driver
[ 3.635437] Linux media interface: v0.10
[ 3.639709] lirc_dev: IR Remote Control driver registered, major 249
[ 3.646545] Driver for 1-wire Dallas network protocol.
[ 3.652587] OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
[ 3.659637] twl4030_wdt twl4030_wdt: Failed to register misc device
[ 3.666290] twl4030_wdt: probe of twl4030_wdt failed with error -16
[ 3.673645] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@redhat.com
[ 3.683013] cpuidle: using governor ladder
[ 3.687408] cpuidle: using governor menu
[ 3.691558] sdhci: Secure Digital Host Controller Interface driver
[ 3.698120] sdhci: Copyright© Pierre Ossman
[ 3.843444] usb 1-2: new high-speed USB device number 2 using ehci-omap
[ 3.924133] gpio_request: gpio-0 (mmc_wp) status -16
[ 3.924163] omap_hsmmc: probe of omap_hsmmc.1 failed with error -16
[ 3.931030] Registered led device: beagleboard::usr0
[ 3.931121] Registered led device: beagleboard::usr1
[ 3.936279] Registered led device: beagleboard::pmu_stat
[ 3.936553] oprofile: hardware counters not available
[ 3.941986] oprofile: using timer interrupt.
[ 3.947631] TCP cubic registered
[ 3.951965] NET: Registered protocol family 10
[ 3.959533] NET: Registered protocol family 17
[ 3.964508] Registering the dns_resolver key type
[ 3.969573] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 3.977722] ThumbEE CPU extension supported.
[ 3.982208] Registering SWP/SWPB emulation handler
[ 3.991760] sr_init: No PMIC hook to init smartreflex
[ 3.997222] smartreflex smartreflex.0: omap_sr_probe: SmartReflex driver initialized
[ 4.005584] smartreflex smartreflex.1: omap_sr_probe: SmartReflex driver initialized
[ 4.013854] SmartReflex Class3 initialized
[ 4.023742] clock: disabling unused clocks to save power
[ 4.030395] registered taskstats version 1
[ 4.035003] omapfb omapfb: no driver for display: lcd
[ 4.040405] fbcvt: 1280x720@60: CVT Name - .921M9-R
[ 4.047760] usb 1-2: New USB device found, idVendor=0424, idProduct=9514
[ 4.054870] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 4.072265] Console: switching to colour frame buffer device 160x45
[ 4.087127] hub 1-2:1.0: USB hub found
[ 4.091308] hub 1-2:1.0: 5 ports detected
[ 4.099273] regulator_init_complete: VDAC: incomplete constraints, leaving on
[ 4.109130] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[ 4.117004] Freeing init memory: 340K
[ 4.243103] udevd[61]: starting version 173
[ 4.390502] usb 1-2.1: new high-speed USB device number 3 using ehci-omap
[ 4.510681] mmc0: host does not support reading read-only switch. assuming write-enable.
[ 4.534240] mmc0: new high speed SDHC card at address b368
[ 4.544250] usb 1-2.1: New USB device found, idVendor=0424, idProduct=ec00
[ 4.554595] usb 1-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 4.576904] mmcblk0: mmc0:b368 29.8 GiB
[ 4.594329] mmcblk0: p1 p2
[ 4.687377] usb 1-2.3: new high-speed USB device number 4 using ehci-omap
[ 4.957000] usb 1-2.3: New USB device found, idVendor=046d, idProduct=0994
[ 4.967376] usb 1-2.3: New USB device strings: Mfr=0, Product=0, SerialNumber=2
[ 4.978118] usb 1-2.3: SerialNumber: 2B8901D0
[ 5.840881] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 6.309631] init: ureadahead main process (209) terminated with status 5
[ 6.829162] udevd[249]: starting version 173
[ 7.121734] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro
[ 8.668518] input: gpio-keys as /devices/platform/gpio-keys/input/input1
[ 8.680999] rtc-ds1307: probe of 2-0068 failed with error -5
[ 8.715332] twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0
[ 9.124114] Linux video capture interface: v2.00
[ 9.182861] OMAP3 Beagle/Devkit8000 SoC init
[ 9.322052] uvcvideo: Found UVC 1.00 device (046d:0994)
[ 9.368865] input: UVC Camera (046d:0994) as /devices/platform/usbhs-omap.0/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.0/input/input2
[ 9.369720] usbcore: registered new interface driver uvcvideo
[ 9.369750] USB Video Class driver (1.1.1)
[ 9.393218] asoc: twl4030-hifi <-> omap-mcbsp-dai.1 mapping ok
[ 9.520538] smsc95xx v1.0.4
[ 9.679992] smsc95xx 1-2.1:1.0: eth0: register ‘smsc95xx’ at usb-ehci-omap.0-2.1, smsc95xx USB 2.0 Ethernet, be:b3:2d:4f:48:41
[ 9.680175] usbcore: registered new interface driver smsc95xx
[ 9.886627] ALSA sound/usb/mixer.c:846 5:2: cannot get min/max values for control 2 (id 5)
[ 10.117553] usbcore: registered new interface driver snd-usb-audio
[ 13.024414] smsc95xx 1-2.1:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[ 17.782714] init: ssh main process (398) terminated with status 255
[ 22.202636] eth0: no IPv6 routers present
[ 514.339508] init: ttyO2 main process ended, respawning
---- I log in here and then the following happens after using the usb or the ethernet ----
[ 2233.088470] hub 1-0:1.0: port 2 disabled by hub (EMI?), re-enabling…
[ 2233.098937] usb 1-2: USB disconnect, device number 2
[ 2233.098968] usb 1-2.1: USB disconnect, device number 3
[ 2233.099456] smsc95xx 1-2.1:1.0: eth0: unregister ‘smsc95xx’ usb-ehci-omap.0-2.1, smsc95xx USB 2.0 Ethernet
[ 2233.909301] usb 1-2.3: USB disconnect, device number 4
Nathaniel Lewis
CTO at E1FTW Games
(925) 961 7578
linux.robotdude@gmail.com