Table of Contents


owhttpd - Tiny webserver for 1-wire control


owhttpd -c config ] -d serialport | -u | -s [host:]port -p tcp-port



1-wire is a wiring protocol and series of devices designed and manufactured by Dallas SemicondUctor, Inc. The bus is a low-power low-speed low-connector scheme where the data line can also provide power.

Each device is uniquely unalterably numbered during manufacture. There is a wide variety of devices, including memory, sensors (humidity, temperature, voltage, contact, current), switches, timers and data loggers. More complex devices (like thermocouple sensors) can be built with these basic devices. There are also 1-wire devices that have encryption included.

The 1-wire bus is accessed via one of a number of serial, parallel, i2c, network or USB adapters.

OWFS design

OWFS is a suite of programs that fundementally make the 1-wire bus and its devices easily accessible. The underlying priciple is to create a virtual filesystem, with the unique ID being the directory, and the individual properties of the device files.

There is optional data caching to improved performance, but possible confusion over stale data.


owhttpd (1) is a small webserver that shows the Dallas/Maxim 1-Wire bus attached to a serial port. The main view shows the devices found, You can then navigate to individual devices, and view/alter their properties.

owhttpd (1) uses the same naming convention as owfs (1) , where the URL corresponds to the filename.

The web server is a modified version of chttpd by Greg Olszewski. It serves no files from the disk, only virtual files from the 1-wire bus. Security should therefore be good. Only the 1-wire bus is at risk.

Specific Options

-p portnum

Sets the tcp port the web server runs on. Access with the URL http://servernameoripaddress:portnum

If no port is specified, an ephemeral port is selected by the operating system. Use zeroconf (Bonjour) to discover the assigned port.

Device Options

These options specify the 1-wire bus master the physically connects to the 1-wire bus. More than one can be specified. The result will be the logical union of all the specified bus masters. Individual adapters can be addressed as bus.0 bus.1 ...

At least one device option is required. There is no default.

Note that your operating system will likely restrict access to physical ports to authorised users.

-d /dev/ttyS0

Serial adapter. The address of the serial port is operating system-dependent. Adapters supported are the DS2480B-based DS9097U , iButtonLink's LINK in emulation mode, or the passive DS9097

-d /dev/i2c-0

Use i2c adapter 0. Based on the DS2482-100 or the DS2482-800. The DS2482-800 is interesting, it actually has 8 separately addressable 1-wire bus lines, and will appear as 8 separate busses.

-u --usb

USB adapter (based on the DS2490, like the DS9490R).

In general the operating system will assign the first avaliable adapter. Use the option: -u2 or --usb=2 for the second adapter. To use all the available USB adapters: -all or --usb=all


The iButtonlink LINK adapter on serial port 0. The LINK uses it's own ascii communication protocol.

-s localhost:4304

Connect to an owserver at the listed network location.


Create a simulated bus with simulated devices (family codes 10,12 and 28 in this case). All the responses are random, and writing is not supported.


Create a simulated bus with simulated devices (family codes 10,12 and 28 in this case). All the responses are predictable (see the web site for the algorithm) and thus useful for automated test scripts.

Temperature Scale Options

-C --Celsius

-F --Fahrenheit

-K --Kelvin

-R --Rankine

Temperature scale used for data output. Celsius is the default.

Can also be changed within the program at /settings/units/temperature_scale

Format Options

Choose the representation of the 1-wire unique identifiers. OWFS uses these identifiers as unique directory names.

Although several display formats are selectable, all must be in family-code-first form, unlike some other programs and the labelling on iButtons, which are CRC8-first.

-f --format="f[.]i[[.]c]"

Display format for the 1-wire devices. Each device has a 8byte address, consisting of:
family code, 1 byte
ID number, 6 bytes
CRC checksum, 1 byte

Possible formats are f.i (default, 01.A1B2C3D4E5F6), fi fic f.ic f.i.c and fi.c

All formats are accepted as input, but the output will be in the specified format.

Job Control Options

-r --readonly

-w --write

Do we allow writing to the 1-wire bus (writing memory, setting switches, limits, PIOs)? The write option is available for symmetry, it's the default.

-P --pid-file "filename"

Places the PID -- process ID of owfs into the specified filename. Useful for startup scripts control.

--background | --foreground

Whether the program releases the console and runs in the background after evaluating command line options. background is the default.


default mixed destination: stderr foreground / syslog background
syslog only
stderr only
/dev/null (quiet mode).


default errors only
all high level calls
data summary for each call
details level
debugging chaff

--error_level=9 produces a lot of output

Configuration File

-c file | --configuration file

Name of an owfs (5) configuration file with

more command line parameters

Help Options

See also this man page and the web site

-h --help=[device|cache|program|job|temperature]

Shows basic summary of options.
1-wire bus master options
cache and communication size and timing
mountpoint or TCP server settings
control and debugging options
Unique ID display format and temperature scale

-V --version

Version of this program and related libraries.

Time Options

These options affect the times that data stays in memory, and the times that the program will wait for network or external device responses. Default values are shown.


Seconds until a volatile property expires in the cache. Volatile properties are those (like temperature) that change on their own.

Can be changed within the program at /settings/timeout/volatile


Seconds until a stable property expires in the cache. Stable properties are those that shouldn't change unless explicitly changed. Memory contents for example.

Can be changed within the program at /settings/timeout/stable


Seconds until a directory listing expires in the cache. Directory lists are the 1-wire devices found on the bus.

Can be changed within the program at /settings/timeout/directory


Seconds until the presence and bus location of a 1-wire device expires in the cache.

Can be changed within the program at /settings/timeout/presence


Seconds until the expected response from the serial port adapter is deemed tardy. Applies to the LINK, DS9097U and DS9097 (passive) adapter.

Can be changed within the program at /settings/timeout/serial


Seconds until the expected response from the usb port adapter is deemed tardy. Applies to the DS9490.

Can be changed within the program at /settings/timeout/network


Seconds until the expected response from the tcp port adapter is deemed tardy. Includes the LINK-HUB-E and HA7Net

Can be changed within the program at /settings/timeout/network


Seconds until the expected response from the owserver (1) is deemed tardy.

Can be changed within the program at /settings/timeout/server


Seconds that an ftp session is kept alive.

Can be changed within the program at /settings/timeout/ftp


Seconds that the program will wait for a (tcp) response from the HA7Net adapter.

Can be changed within the program at /settings/timeout/ha7


owhttpd -p 3001 -d /dev/ttyS0
Web server runs on tcp port 3001, serial adapter at ttyS0
owhttpd -p 3001 -s littlehost:4304 --error_level=3
Web server on port 3001, from owserver process on host "littlehost", extensive error messages.
owhttpd -p 3001 -u -u2 -r
Read-only web server on port 3001, using two usb adapters.


See Also


owfs (1) owhttpd (1) owftpd (1) owserver (1) owdir (1) owread (1) owwrite (1) owpresent (1) owtap (1)

Configuration and testing

owfs (5) owtap (1) owmon (1)

Language bindings

owtcl (3) owperl (3) owcapi (3)


DS1427 (3) DS1904(3) DS1994 (3) DS2404 (3) DS2404S (3) DS2415 (3) DS2417 (3)


DS2401 (3) DS2411 (3) DS1990A (3)


DS1982 (3) DS1985 (3) DS1986 (3) DS1991 (3) DS1992 (3) DS1993 (3) DS1995 (3) DS1996 (3) DS2430A (3) DS2431 (3) DS2433 (3) DS2502 (3) DS2506 (3) DS28E04 (3) DS28EC20 (3)


DS2405 (3) DS2406 (3) DS2408 (3) DS2409 (3) DS2413 (3) DS28EA00 (3)


DS1822 (3) DS1825 (3) DS1820 (3) DS18B20 (3) DS18S20 (3) DS1920 (3) DS1921 (3) DS1821 (3) DS28EA00 (3) DS28E04 (3)


DS1922 (3)


DS2450 (3)


DS2890 (3)

Multifunction (current, voltage, temperature)

DS2436 (3) DS2437 (3) DS2438 (3) DS2751 (3) DS2755 (3) DS2756 (3) DS2760 (3) DS2770 (3) DS2780 (3) DS2781 (3) DS2788 (3) DS2784 (3)


DS2423 (3)

LCD Screen

LCD (3) DS2408 (3)


DS1977 (3)


DS2406 (3) -- TAI8570


Paul Alfille (

Table of Contents