hubertf's NetBSD Blog
Send interesting links to hubert at feyrer dot de!
[20160213] Using GPIO on the Raspberry Pi
Marina Brown asked on port-arm how to get GPIO ports going with NetBSD on the Raspberry Pi, has collected the answers and posted the link to the document to the list.

In short, the key is to enable GPIO ports during boot when the system has not raised the securelevel yet.

[Tags: , ]

[20151126] Wireless, finally - with NetBSD on my Raspberry Pi
I've (literally) coughed up some time to play with my RPI2 the last few days, and I finally got it working with my LogiLink RALINK RA5370 USB-WiFi dongle. Patches are thanks to rjs@, and this gets the machine into a state that I think it's useful to start toying with GPIO and I2C.

For a start, src/share/examples/wpa_supplicant/wpa_supplicand.conf now has an example for a WPA network with no SSID broadcast.

For kicks, here's the full dmesg output:

Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.21 (RPI2) #14: Thu Nov 26 01:36:58 CET 2015
total memory = 944 MB
avail memory = 925 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
timecounter: Timecounters tick every 10.000 msec
mainbus0 (root)
cpu0 at mainbus0 core 0: 600 MHz Cortex-A7 r0p5 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 2-way L1 VIPT Instruction cache
cpu0: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 512KB/64B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu1 at mainbus0 core 1
cpu2 at mainbus0 core 2
cpu3 at mainbus0 core 3
obio0 at mainbus0
bcmicu0 at obio0: Multiprocessor
armgtmr0 at obio0: ARMv7 Generic 64-bit Timer (19200 kHz)
armgtmr0: interrupting on irq 3
timecounter: Timecounter "armgtmr0" frequency 19200000 Hz quality 500
bcmmbox0 at obio0 intr 193: VC mailbox
vcmbox0 at bcmmbox0
vchiq0 at obio0 intr 194: BCM2835 VCHIQ
bcmpm0 at obio0: Power management, Reset and Watchdog controller
bcmdmac0 at obio0: DMA0 DMA2 DMA4 DMA5 DMA8 DMA9 DMA10
bcmrng0 at obio0: RNG
plcom0 at obio0 intr 185
plcom0: txfifo disabled
plcom0: console
genfb0 at obio0
genfb0: framebuffer at 0x3d876000, size 1280x720, depth 32, stride 5120
wsdisplay0 at genfb0 kbdmux 1
wsmux1: connecting to wsdisplay0
wsdisplay0: screen 0-3 added (default, vt100 emulation)
sdhc0 at obio0 intr 190: SDHC controller
sdhc0: interrupting on intr 190
dwctwo0 at obio0 intr 137: USB controller
bcmspi0 at obio0 intr 182: SPI
spi0 at bcmspi0: SPI bus
bsciic0 at obio0 intr 181: BSC0
iic0 at bsciic0: I2C bus
bsciic1 at obio0 intr 181: BSC1
iic1 at bsciic1: I2C bus
bcmgpio0 at obio0: GPIO [0...31]
gpio0 at bcmgpio0: 32 pins
bcmgpio1 at obio0: GPIO [32...53]
gpio1 at bcmgpio1: 22 pins
bcmcm at obio0 not configured
bcmpwm at obio0 not configured
usb0 at dwctwo0: USB revision 2.0
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
cpu3: 600 MHz Cortex-A7 r0p5 (Cortex V7A core)
cpu3: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu3: 32KB/32B 2-way L1 VIPT Instruction cache
cpu3: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu3: 512KB/64B 8-way write-through L2 PIPT Unified cache
vfp3 at cpu3: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu2: 600 MHz Cortex-A7 r0p5 (Cortex V7A core)
cpu2: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu2: 32KB/32B 2-way L1 VIPT Instruction cache
cpu2: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu2: 512KB/64B 8-way write-through L2 PIPT Unified cache
vfp2 at cpu2: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu1: 600 MHz Cortex-A7 r0p5 (Cortex V7A core)
cpu1: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu1: 32KB/32B 2-way L1 VIPT Instruction cache
cpu1: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu1: 512KB/64B 8-way write-through L2 PIPT Unified cache
vfp1 at cpu1: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
sdhc0: SDHC 3.0, rev 153, platform DMA, 250000 kHz, HS SDR50 3.3V, re-tuning mode 1, 1024 byte blocks
sdmmc0 at sdhc0 slot 0
uhub0 at usb0: vendor 0000 DWC2 root hub, class 9/0, rev 2.00/1.00, addr 1
uhub0: 1 port with 1 removable, self powered
IPsec: Initialized Security Association Processing.
ld0 at sdmmc0: <0x03:0x5344:SU16G:0x80:0x000dd697:0x0f1>
ld0: 15193 MB, 7717 cyl, 64 head, 63 sec, 512 bytes/sect x 31116288 sectors
ld0: 4-bit width, SDR50, 100.000 MHz
uhub1 at uhub0 port 1: vendor 0424 product 9514, class 9/0, rev 2.00/2.00, addr 2
uhub1: multiple transaction translators
uhub1: 5 ports with 4 removable, self powered
usmsc0 at uhub1 port 1
usmsc0: vendor 0424 product ec00, rev 2.00/2.00, addr 3
usmsc0: Ethernet address b8:27:eb:b9:ca:25
ukphy0 at usmsc0 phy 1: OUI 0x00800f, model 0x000c, rev. 3
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
run0 at uhub1 port 2
run0: Ralink 802.11 n WLAN, rev 2.00/1.01, addr 4
run0: MAC/BBP RT5390 (rev 0x0502), RF RT5370 (MIMO 1T1R), address 7c:dd:90:3f:54:00
run0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
run0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
boot device: ld0
root on ld0a dumps on ld0b
root file system type: ffs
vchiq: local ver 6 (min 3), remote ver 6.
vcaudio0 at vchiq0: auds
WARNING: no TOD clock present
WARNING: using filesystem time
audio0 at vcaudio0: half duplex, playback, capture, independent
wsdisplay0: screen 4 added (default, vt100 emulation)

[Tags: , , ]

[20150717] Making my RPI serial console work, or: fixing a hardware problem in software
Some time ago I get a Raspberry Pi, but never really got it working: I don't have a HDMI display, and wanted to use the serial console. Unfortunately the "official" RPI-serial-to-USB cable had an annoying effect for me: while I saw output just fine, I wasn't able to type anything! Funny enough, this was not only in NetBSD but also Debian. Which took the blame from NetBSD :) Picture 1 shows the cabling.

So the blame was on the RPI-USB-to-serial cable, and I looked into making my own. I have a standard USB-to-serial adapter, but that one cannot be connected pin-by-pin to the RPI, as they use different voltage levels. While the "standard" serial UART protocol (RS-323) encodes 0s and 1s as 5V and -5V, the RPI uses TTL voltage between 0 and 3.3V - a simple 1:1 connection sounds like a bad idea. Converters like the MAX3232 are available: it connects the TX and RX lines and adjusts the voltage levels. To operate, power and ground are provided by the RPI. After frobbing this together (see picture 2) I found out that - surprise - the problem was not in the cable either, as my home-made cable also did not work for input, only for output.

After some detour (frobbing the image-build process to make me an image that not only has working DHCP and SSH, but that actually let's me log in), I got the crucial hint what was going on:

Having lines for sending and receiving data is nice, but what if one end's receiver is full and wants to signal that? This is called "flow control", and apparently with no lines for that, hardware flow control is not an option. In theory there is a software solution (sending XON/XOFF bytes), which requires equal settings on both sides. Apparently the RPI doesn't do that either, and with the default settings on my NetBSD host to wait for an XON before sending data, things didn't match up - no XON from the RPI, no data going to it. Plain and simple - if you know what's going on.

The fix was easy, and thanks go to Jean-Baka Domelevo Entfellner for the hint: disable flow control in my terminal program (kermit). So with a simple "set flow none", things work like a charm now. Voila, another hardware problem fixed in software! :)

How to look at serial interface parameters from NetBSD? Use the stty(1) command. Here's the default output for my USB-to-serial interface attached to ttyU0:

# stty -f /dev/ttyU0
ispeed 0 baud; ospeed 9600 baud;
lflags: echoe echoke echoctl
oflags: onocr onlret
cflags: cs8 -parenb
The difference is obvious when running the same command while kermit runs with proper settings in a different window:
# stty -f /dev/ttyU0
speed 115200 baud;
lflags: -icanon -isig -iexten -echo echoe echoke echoctl
iflags: -icrnl -ixon -ixany ignbrk ignpar
oflags: -opost onocr onlret
cflags: cs8 -parenb clocal
Not only is the speed different, but most important "-ixon" tells the interface to not wait for an XON on input (iflags) before transmitting data.

For reference sake, here is my .kermitrc that I use:

# cat .kermrc
# Raspberry PI
set carrier-watch off
set line /dev/ttyU0
set flow none                   # disable hardware flow control
set speed 115200
#set speed 9600

Picture 1: The standard RPI-USB-to-serial cable (click to enlarge)
Picture 2: My own USB-to-serial adapter using a MAX3232 chip (click to enlarge)

[Tags: , , , , , , , , , ]

[20150702] New binary releases for NetBSD on Raspberry Pi, including 7.0 RC1
NetBSD runs on many machnes, and the Raspberry Pi is one of them. Getting the stock distribution is not that easy, and to help in getting things going, Jun Ebihara is providing ready-made images for quite some time.

There are images available that are based on the latest development snapshot, NetBSD-curent, and with the NetBSD 7.0 release around the corner, there is also an image based on NetBSD 7.0 Release Candidat 1.

See the NetBSD wiki for many more details, and if you use your RPI for any cool hacks, be sure to let us know!

[Tags: , , , ]

[20131020] Quick bootstrap of NetBSD on Raspberry Pi and Cobalt machines
NetBSD is a fine operating system, but the installation sometimes leaves a lot of rope to hang yourself on non-PC platforms. To make things easier to get a recent NetBSD version on the Cobat Raq and Qube machines, Izumi Tsutsui has released a Restore CD/USB image based on NetBSD 5.2.1 that allows for a quick bootstrap. There is also a Restore CD HOWTO available with more information.

If you're into somewhat more recent machines, the Raspberry Pi is for you. For easy bootstrapping of NetBSD, Jun Ebihara offers a SD card image with -current NetBSD and pkgsrc from October 2013 preinstalled. This also includes support for hardware floating point and DMA. Instructions are available on line in Japanese language. The important commands still are readable, so have a look!

[Tags: , ]

[20131019] Raspberry Pi USB HC driver change - DMA support added
Nick Hudson reports that he has ``recently switched the Raspberry Pi kernel to dwctwo(4) a new USB drvier based on the Synopsys code. It's a more complete driver than the previous dotg(4) and has DMA support''. Jun Ebihara confirms that the driver works fine with a dmesg extract, and also lets us know that the driver will be in his next RPI image.

This change does not only affect the Raspberry Pi, but also other machines that have a Synopsis USB like the OpenBlocks 600, as KIYOHARA Takashi lets us know.

[Tags: , , ]

[20130114] Update of NetBSD on the Raspberry Pi
Time has passed since the last status update of NetBSD on the Raspberry Pi, and things have evolved: Recent news include drivers for USB with its many possible devices and display, allowing X to be ran - check out the screenshots provided by Jun Ebihara!

There is also this posting on the port-arm mailinglist that gives details on an updates kernel image, Xorg.conf file to get X going and more news hidden in that thread. Anyone up for compiling a comprehensive NetBSD/RaspberryPi webpage, maybe on the NetBSD Wiki?

[Tags: , , ]

[20120714] NetBSD on the Raspberry Pi
The Raspberry Pi is a pretty recent, cheap ARM-based board, or as the webpage says: ``An ARM GNU/Linux box for $25''. Shipping with today's Windows-for-embedde-boards operating system (AKA Linux), there's also a port of NetBSD on its way. Nick Hudson is at it, and he has posted first dmesg output now, showing the machine going to multiuser mode.

The code's not integrated into mainline NetBSD-current yet, but rest assured that that will happen when the code is ripe. Good work, Nick!

[Tags: , , ]

Tags: , 2bsd, 3com, 501c3, 64bit, acl, acls, acm, acorn, acpi, acpitz, adobe, Advocacy, advocacy, advogato, aes, afs, aiglx, aio, airport, alereon, alex, alix, alpha, altq, am64t, amazon, amd64, anatomy, ansible, apache, apm, apple, arkeia, arla, arm, art, Article, Articles, ascii, asiabsdcon, aslr, asterisk, asus, atf, ath, atheros, atmel, audio, audiocodes, autoconf, avocent, avr32, aws, axigen, azure, backup, balloon, banners, basename, bash, bc, beaglebone, benchmark, bigip, bind, blackmouse, bldgblog, blog, blogs, blosxom, bluetooth, board, bonjour, books, boot, boot-z, bootprops, bozohttpd, bs2000, bsd, bsdca, bsdcan, bsdcertification, bsdcg, bsdforen, bsdfreak, bsdmac, bsdmagazine, bsdnexus, bsdnow, bsdstats, bsdtalk, bsdtracker, bug,, busybox, buttons, bzip, c-jump, c99, cafepress, calendar, callweaver, camera, candy, capabilities, card, carp, cars, cauldron, ccc, ccd, cd, cddl, cdrom, cdrtools, cebit, centrino, cephes, cert, certification, cfs, cgd, cgf, checkpointing, china, christos, cisco, cloud, clt, cobalt, coccinelle, codian, colossus, common-criteria, community, compat, compiz, compsci, concept04, config, console, contest, copyright, core, cortina, coverity, cpu, cradlepoint, cray, crosscompile, crunchgen, cryptography, csh, cu, cuneiform, curses, curtain, cuwin, cvs, cvs-digest, cvsup, cygwin, daemon, daemonforums, daimer, danger, darwin, data, date, dd, debian, debugging, dell, desktop, devd, devfs, devotionalia, df, dfd_keeper, dhcp, dhcpcd, dhcpd, dhs, diezeit, digest, digests, dilbert, dirhash, disklabel, distcc, dmesg, Docs, Documentation, donations, draco, dracopkg, dragonflybsd, dreamcast, dri, driver, drivers, drm, dsl, dst, dtrace, dvb, ec2, eclipse, eeepc, eeepca, ehci, ehsm, eifel, elf, em64t, Embedded, embedded, emips, emulate, encoding, envsys, eol, espresso, etcupdate, etherip, euca2ools, eucalyptus, eurobsdcon, eurosys, Events, exascale, ext3, f5, facebook, falken, fan, faq, fatbinary, features, fefe, ffs, filesystem, fileysstem, firefox, firewire, fireworks, flag, flash, flashsucks, flickr, flyer, fmslabs, force10, fortunes, fosdem, fpga, freebsd, freedarwin, freescale, freex, freshbsd, friendlyAam, friendlyarm, fritzbox, froscamp, fsck, fss, fstat, ftp, ftpd, fujitsu, fun, fundraising, funds, funny, fuse, fusion, g4u, g5, galaxy, games, gcc, gdb, gentoo, geode, getty, gimstix, git, gnome, google, google-soc, googlecomputeengine, gpio, gpl, gprs, gracetech, gre, groff, groupwise, growfs, grub, gumstix, guug, gzip, hackathon, hackbench, hal, hanoi, happabsd, hardware, Hardware, haze, hdaudio, heat, heimdal, hf6to4, hfblog, hfs, history, hosting, hotplug, hp, hp700, hpcarm, hpcsh, hpux, html, httpd, hubertf, hurd, i18n, i386, i386pkg, ia64, ian, ibm, ids, ieee, ifwatchd, igd, iij, image, images, imx233, imx7, information, init, initrd, install, intel, interix, internet2, interview, interviews, io, ioccc, iostat, ipbt, ipfilter, ipmi, ipplug, ipsec, ipv6, irbsd, irc, irix, iscsi, isdn, iso, isp, itojun, jail, jails, japanese, java, javascript, jetson, jibbed, jihbed, jobs, jokes, journaling, kame, kauth, kde, kerberos, kergis, kernel, keyboardcolemak, kirkwood, kitt, kmod, kolab, kvm, kylin, l10n, landisk, laptop, laptops, law,, ldap, lehmanns, lenovo, lfs, libc, license, licensing, linkedin, links, linksys, linux, linuxtag, live-cd, lkm, localtime, locate.updatedb, logfile, logging, logo, logos, lom, lte, lvm, m68k, macmini, macppc, macromedia, magicmouse, mahesha, mail, makefs, malo, mame, manpages, marvell, matlab, maus, max3232, mbr95, mbuf, mca, mdns, mediant, mediapack, meetbsd, mercedesbenz, mercurial, mesh, meshcube, mfs, mhonarc, microkernel, microsoft, midi, mini2440, miniroot, minix, mips, mirbsd, missile, mit, mixer, mobile-ip, modula3, modules, money, mouse, mp3, mpls, mprotect, mtftp, mult, multics, multilib, multimedia, music, mysql, named, nas, nasa, nat, ncode, ndis, nec, nemo, neo1973, netbook, netboot, netbsd,, nethack, nethence, netksb, netstat, netwalker, networking, neutrino, nforce, nfs, nis, npf, npwr, nroff, nslu2, nspluginwrapper, ntfs-3f, ntp, nullfs, numa, nvi, nvidia, nycbsdcon, office, ofppc, ohloh, olimex, olinuxino, olpc, onetbsd, openat, openbgpd, openblocks, openbsd, opencrypto, opendarwin, opengrok, openmoko, openoffice, openpam, openrisk, opensolaris, openssl, or1k, oracle, oreilly, oscon, osf1, osjb, paas, packages, pad, pae, pam, pan, panasonic, parallels, pascal, patch, patents, pax, paypal, pc532, pc98, pcc, pci, pdf, pegasos, penguin, performance, pexpect, pf, pfsync, pgx32, php, pie, pike, pinderkent, pkg_install, pkg_select, pkgin, pkglint, pkgmanager, pkgsrc,, pkgsrcCon, pkgsrccon, Platforms, plathome, pleiades, pocketsan, podcast, pofacs, politics, polls, polybsd, portability, posix, postinstall, power3, powernow, powerpc, powerpf, pppoe, precedence, preemption, prep, presentations, prezi, Products, products, proplib, protectdrive, proxy, ps, ps3, psp, psrset, pthread, ptp, ptyfs, Publications, puffs, puredarwin, pxe, qemu, qnx, qos, qt, quality-management, quine, quote, quotes, r-project, ra5370, radio, radiotap, raid, raidframe, rants, raptor, raq, raspberrypi, rc.d, readahead, realtime, record, refuse, reiserfs, Release, Releases, releases, releng, reports, resize, restore, ricoh, rijndael, rip, riscos, rng, roadmap, robopkg, robot, robots, roff, rootserver, rotfl, rox, rs323, rs6k, rss, ruby, rump, rzip, sa, safenet, san, savin, sbsd, scampi, scheduler, scheduling, schmonz, sco, screen, script, sdf, sdtemp, secmodel, Security, security, sed, segvguard, seil, sendmail, serial, serveraptor, sfu, sge, sgi, sgimips, sh, sha2, shark, sharp, shisa, shutdown, sidekick, size, slackware, slashdot, slides, slit, smbus, smp, sockstat, soekris, softdep, softlayer, software, solaris, sony, sound, source, source-changes, spanish, sparc, sparc64, spider, spreadshirt, spz, squid, ssh, sshfs, ssp, statistics, stereostream, stickers, stty, studybsd, subfile, sudbury, sudo, summit, sun, sun2, sun3, sunfire, sunpci, support, sus, suse, sushi, susv3, svn, swcrypto, symlinks, sysbench, sysctl, sysinst, sysjail, syslog, syspkg, systat, systrace, sysupdate, t-shirt, tabs, talks, tanenbaum, tape, tcp, tcp/ip, tcpdrop, tcpmux, tcsh, teamasa, tegra, teredo, termcap, terminfo, testdrive, testing, tetris, tex, TeXlive, thecus, theopengroup, thin-client, thinkgeek, thorpej, threads, time, time_t, timecounters, tip, tk1, tme, tmp, tmpfs, tnf, toaster, todo, toolchain, top, torvalds, toshiba, touchpanel, training, translation, tso, tty, ttyrec, tulip, tun, tuning, uboot, ucom, udf, ufs, ukfs, ums, unetbootin, unicos, unix, updating, upnp, uptime, usb, usenix, useradd, userconf, userfriendly, usermode, usl, utc, utf8, uucp, uvc, uvm, valgrind, vax, vcfe, vcr, veriexec, vesa, video, videos, virtex, virtualization, vm, vmware, vnd, vobb, voip, voltalinux, vpn, vpnc, vulab, w-zero3, wallpaper, wapbl, wargames, wasabi, webcam, webfwlog, wedges, wgt624v3, wiki, willcom, wimax, window, windows, winmodem, wireless, wizd, wlan, wordle, wpa, wscons, wstablet, X,, x11, x2apic, xbox, xcast, xen, Xen, xfree, xfs, xgalaxy, xilinx, xkcd, xlockmore, xmms, xmp, xorg, xscale, youos, youtube, zaurus, zdump, zfs, zlib

'nuff. Grab the RSS-feed, index, or go back to my regular NetBSD page

Disclaimer: All opinion expressed here is purely my own. No responsibility is taken for anything.

Access count: 23176083
Copyright (c) Hubert Feyrer