Support for Controller Area Networks (CAN) in NetBSD
Manuel Bouyer has worked on NetBSD CAN-support, and now he
``I'd like to merge the bouyer-socketcan branch to HEAD in the next few
days (hopefully early next week, or maybe sunday), unless someone objects
to the idea of a socketcan implementation in NetBSD.
CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.
This is an implementation of the linux socketcan API:
you can also see can(4) in the branch.
This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. The branch also includes a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).
There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.
At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpdump(8) can also be used to record frames, which can be
decoded with etherreal.
A review of the code in src/sys/netcan/ is welcome, especially for possible
What CAN devices would you address with NetBSD? Drop me mail!
[Tags: can, networking]
Announcing NetBSD and the Google Summer of Code Projects 2017
The NetBSD Project posts that
we are very happy to announce that the selection process in this year's
Summer of Code with its bargaining of slots and what student gets assigned
to which project is over. As a result, the following students will take on
What follows now is a community bonding period until May 30th, followed by a
coding period over the summer (it's Summer of Code, after all :-)
until August 21st, evaluations, code submission and an announcement of the
results on September 6th 2017.
- Leonardo Taccari will work add multi-packages support to pkgsrc.
- Maya Rashish will work on the LFS cleanup.
- Utkarsh Anand will make Anita support multiple virtual machine systems
and more architectures within them to improve testing coverage.
Good luck to all our students and their mentors - we look forward to your
work results, and welcome you to The NetBSD Project!
Adventures in Time, part 1: Interfacing an Oven Controlled Crystal Oscillator to a Computer Running NetBSD
I've stumbled across this article via
the Dragonfly BSD Digest:
Tobias 'tnn' Nygren wrote about his aventurs in time,
with part one on
Interfacing an Oven Controlled Crystal Oscillator to a Computer Running NetBSD.
This first article in a blog series starts by
describing regular and oven ontrolled crystal oscillators,
then goes on in describing the hardware setup and how it is
connected to a computer. In this case, a Banana Pi running
NetBSD/evbarm is used which (of course) also has its own
clock. Oscilloscope measurements show differences in
quality of signals and why an adapter is needed to adjust
the system's clock frequency (including changes to the
In the next post Tobias will describe how to calibrate the clock with NTP.
Stay tuned and
have an eye on his blog!
[Tags: ntp, time]
g4u 2.6beta2 has been released - Happy 18th Birthday, g4u!
Just right in time for its 18th birthday, I have released
the 2nd beta version for g4u 2.6 (2.6beta2).
It took some time to get to this point, and I want to move
to 2.6 soon - please take your time to test and get back to me
soon, as I want to push out g4u version 2.6 in june 2017.
g4u ("ghosting for unix") is a NetBSD-based bootfloppy/CD-ROM that allows easy cloning of PC harddisks to deploy a common setup on a number of PCs using FTP. The floppy/CD offers two functions. The first is to upload the compressed image of a local harddisk to a FTP server, the other is to restore that image via FTP, uncompress it and write it back to disk. Network configuration is fetched via DHCP. As the harddisk is processed as an image, any filesystem and operating system can be deployed using g4u. Easy cloning of local disks as well as partitions is also supported.
For more information, see
Changes in 2.6beta2 include:
- Make this build with NetBSD-current sources as of 2017-04-17,
binaries were cross-compiled from Mac OS X 10.10
- Go back to keeping the disk image inside the kernel as ramdisk,
do not load it as separate module. Less error prone, and allows
to boot the g4u (NetBSD) kernel from a single file e.g. via PXE
(Testing and documentation updates welcome!)
- Actually DO provide the g4u (NetBSD) kernel with the embedded g4u disk
image from now on, as separate file, g4u-kernel.gz
- Put all object files into one object directory. This may need more cleanup
in the future. Feedback from people building g4u welcome!
- Disable verbose device messages on Microchannel (MCA) machines
- New drivers:
- Toshiba Dynabook hotkeys
- Intel S1200,C2000 (non-pch) SMBus storage controller
- Non-Volatile Memory Express (NVMe) storage controllers and devices
- Intel Wireless WiFi Link 7xxx PCI network
- Intel 8259x 10 gigabit PCI network
- Realtek 8188CE/8192CE 802.11b/g/n PCI network
- VMware VMXNET3
- Marvell Libertas PCMCIA network
- ASIX AX88178a/AX88179 based USB network adapters
- Realtek RTS5209/RTS5229 Card Reader
- Happy 18th Birthday, g4u!
[Tags: g4u, Releases]
Update on NetBSD and Google's Summer of Code 2017: student application period is over, ranking is in progress
Thanks to all students who have submitted project proposals!
The student application period is now over, and
we will have a look at the proposed projects in detail.
From that, we will make a list with our top
priorities (most-wanted / most-promising first), and
give that list to Google. Depending on the overall amount
of all proposals to all projects, Google will then assign
slots of actually sponsored projects.
The announcement of this will happen on May 4th 2017 -
Let's get meta: an interview with me (hubertf) about my NetBSD blog
has approached me about my (this!) NetBSD blog,
and in their section that introduces "Unix" blogs,
they wanted an interview with me. And here we are!
The article starts out with printing a blog article
of my choice, which is from the recent series on the
NetBSD scheduler. This is followed by the actual interview
with yours truly, asking about myself, how i started with blogging
in general, why I do it and my best and worst posts.
Things go to a wider focus then, musing about why Unix is
the best since sliced bread, what role NetBSD plays
today with its 7.1 release and in the future,
and what my personal plans are in that regard.
See pages 44-48 of
March 2017's BSD Magazine
(registration required for PDF download!)
for the full text.
[Tags: bsdmagazine, hubertf]
NetBSD's package collection "pkgsrc" comes with quarterly
stable releases, and the one for 2017Q1 has been Released.
posting to netbsd-announce
for all the defails. This includes:
The pkgsrc developers are proud to announce the 54th quarterly release
of pkgsrc, the cross-platform packaging system. pkgsrc is available
with more than 17500 packages, running on 23 separate platforms; more
information on pkgsrc itself is available at https://www.pkgsrc.org/
A neutral overview can be found at https://www.openhub.net/p/pkgsrc
For the 2017Q1 release we welcome the following notable package
additions and changes to the pkgsrc collection:
- python 3.6
- Nextcloud 11
- firefox 45.8.0 and 52.0.1
- gradle 3.4
- pkg_comp 2.0
- qmail 1.03nb24 binary packages work, supporting common use cases
- many additional Python, Perl and Ruby modules
- many additional TeX packages
The default version of Apache has been changed to 2.4 (from 2.2); set
PKG_APACHE_DEFAULT=apache22 in mk.conf to stay with 2.2.
Package removals include gcc 4.5, 4.6, and 4.7 and Xen 3.1, 3.3 and 4.1;
these are old and notable only because of their stature.
The following infrastructure changes were introduced:
- mk/curses.mk enabled packages to depend on curses without specifying
a particular version
In total, 192 packages were added, 25 packages were removed, and 1,458
package updates were processed since the pkgsrc-2016Q4 release.
Instructions on using the binary package manager can be found at
http://pkgin.net, and pkgsrc itself can be retrieved from
https://github.com/jsonn/pkgsrc or via cvs or tar file -- see
https://www.netbsd.org/docs/pkgsrc/getting.html. The branch name
for the 2017Q1 branch is "pkgsrc-2017Q1".''
Now off to play the update game on all the systems that I
use pkgsrc on, including Mac OS X and Debian Linux.
[Tags: pkgsrc, Releases]
NetBSD and Google's Summer of Code: Students can apply now
This year's Summer of Code has reached the phase
where interested students can
hand in project applications.
Deadline for submissions is April 3rd 2017, so hurry up to
get in line!
We have a
list of project ideas
Please feel free to discuss project ideas beforehand on
mailing lists. When discussing project
ideas, make sure you had a
look at our guidelines,
and answer as many questions as possible.
NetBSD will be in Google's Summer of Code 2017
NetBSD will be in the 2017 Google Summer of Code
as one of the
NetBSD projects for this summer
are under discussion internally,
but interested students are again welcome to
start looking and participating, discussing project
ideas of existing or new projects on our mailing lists,
The next still
on the timeline
will be March 20th 2017 when students will be able
to apply for projects officially. Stay tuned!
Documenting NetBSD's scheduler tweaks
NetBSD's scheduler was recently changed to better
distribute load of long-running processes on multiple CPUs.
So far, the associated sysctl tweaks were not documented,
and this was changed now,
documenting the kern.sched sysctls.
For reference, here is the text that was added to the
Influence the scheduling of LWPs, their priorisation and how they
are distributed on and moved between CPUs.
Third level name Type Changeable
kern.sched.cacheht_time integer yes
kern.sched.balance_period integer yes
kern.sched.average_weight integer yes
kern.sched.min_catch integer yes
kern.sched.timesoftints integer yes
kern.sched.kpreempt_pri integer yes
kern.sched.upreempt_pri integer yes
kern.sched.maxts integer yes
kern.sched.mints integer yes
kern.sched.name string no
kern.sched.rtts integer no
kern.sched.pri_min integer no
kern.sched.pri_max integer no
The variables are as follows:
Cache hotness time in which a LWP is kept on one particu-
lar CPU and not moved to another CPU. This reduces the
overhead of flushing and reloading caches. Defaults to
3ms. Needs to be given in ``hz'' units, see mstohz(9).
Interval at which the CPU queues are checked for re-bal-
ancing. Defaults to 300ms. Needs to be given in ``hz''
units, see mstohz(9).
Can be used to influence how likely LWPs are to be
migrated from one CPU's queue of LWPs that are ready to
run to a different, idle CPU. The value gives the per-
centage for weighting the average count of migratable
threads from the past against the current number of
migratable threads. A small value gives more weight to
the past, a larger values more weight on the current sit-
uation. Defaults to 50 and must be between 0 and 100.
Minimum count of migratable (runable) threads for catch-
ing (stealing) from another CPU. Defaults to 1 but can
be increased to decrease chance of thread migration
Enable tracking of CPU time for soft interrupts as part
of a LWP's real execution time. Set to a non-zero value
to enable, and see ps(1) for printing CPU times.
Minimum priority to trigger kernel preemption.
Minimum priority to trigger user preemption.
Scheduler specific maximal time quantum (in millisec-
onds). Must be set to a value larger than ``mints'' and
between 10 and ``hz'' as given by the kern.clockrate
sysctl. Provided by the M2 scheduler.
Scheduler specific minimal time quantum (in millisec-
onds). Must be set to a value smaller than ``maxts'' and
between 1 and ``hz'' as given by the ``kern.clockrate''
sysctl. Provided by the M2 scheduler.
Scheduler name. Provided both by the M2 and the 4BSD
Fixed scheduler specific round-robin time quantum in mil-
liseconds. Provided both by the M2 and the 4BSD sched-
Minimal POSIX real-time priority. See sched(3).
Maximal POSIX real-time priority. See sched(3).
[Tags: scheduler, sysctl]