BeOS Bible Updates

Experimental Stuff

Notes on Experimental Stuff
Diagnostics
Drivers and Glide Support
Network
Rio
Disk Striping
Video CD
VideoRecorder
Windows Networking (WON)
Mounting Shared Volumes Individually
Accessing Your BeOS Machine from the Network
Removing WON
Zip Disk

Notes

Following in its grand tradition of giving users more than what they bargained for, Be has once again included a ton of goodies in the OS that are not part of the "official" release. You'll find all of these items in the /optional/experimental folder if you elected to install optional items (if you didn't, you can simply drag these items off the CD's /_packages_/extra/optional/experimental directory and into the Tracker).

It's important to understand that when Be calls something "experimental," it means the company thinks it's good enough or interesting enough that many people will want to test or use it. However, it also means that the product is not in its final state, or hasn't been thoroughly tested. Therefore, if you get into trouble when messing with experimental stuff, Be will not answer your cries for help. You're on your own.

That said, a lot of these goodies are real gems, and thousands of people are using them on a daily basis with good results. In almost all cases, items labeled "experimental" in this release will be integrated into the OS itself in a later release--more polished and with a pretty interface. Because these items are in a state of development, most of them require more technical know-how or bravado than the components of the official release. Expect to see some fairly arcane stuff in this section.

Diagnostics

If you need to gather information on the status of your IDE chain, a couple of new tools called ideinfo and idestatus will tell you probably more than you ever wanted to know. Move these to ~/config/bin and run them in combination with the full path to a raw device. For example, on my machine
idestatus /dev/disk/ide/ata/0/master/0/raw
tells me that DMA (direct memory access) is enabled, along with some additional data for tech weenies. This is a useful way to determine whether you're getting the maximum performance from your DMA-capable IDE drives (remember, DMA can be toggled on and off in the boot options). For more details on your IDE devices, try the ideinfo command instead. This will help you determine the manufacturer, make, and model for each installed device without having to physically rip the machine apart, as well as data on sectors and cylinders, DMA capabilities, and low-level command sets and supported features.

Drivers and Glide Support

As in nearly every release, Be has included "experimental" drivers for some hardware that has not been thoroughly tested. In R4.5, users of Imagine128 video chip sets, 3dfx Banshee cards, and Yamaha WaveForce sound cards may find that their hardware is supported after all. The folder for each of these drivers includes detailed README files or other installation instructions. Remember that there are no guarantees here; if these drivers do not enable your hardware as expected, Be cannot provide support. These drivers will likely be folded into the operating system in R5, and new experimental drivers will appear to take their place. And so the cycle goes.

In addition, you'll find experimental support for Glide-based 3D hardware acceleration for some video chip sets. Look in each of the three Glide folders for documentation. If your card is listed and you're looking for maximum 3D performance, goahead and install the appropriate drivers. You can at least compare GL Teapot frame rates while you're waiting for Quake II to make the scene.

Network

You'll find a couple of nice goodies in this folder. If you'd like to be able to initiate and then close PPP connections from the command line, move the dun-control binary to ~/config/bin. You can then launch the default PPP connection by typing
dun-control --up
and then shut it down with
dun-control --down
This can be very useful when automating tasks via shell scripts that require network access. For example, you might write a shell script that logs in and downloads Web logs in the middle of the night.

ISA Plug and Play network card users will appreciate the new etherpnp driver, which will automatically pick up the IRQ and Port values for the card so you don't have to enter them in the Network preferences panel. Since IRQ values for PnP cards can change "on the fly" when adding or removing hardware, this makes it possible to avoid having to reconfigure your network card every time you change an I/O card.

Rio

One of the most unusual additions to the experimental folder is support for the Diamond Rio portable MP3 player. Rather than having to boot into Windows and launch a proprietary application, BeOS lets you mount the Rio as if it were a disk volume, so you can just drag your MP3 files directly into a Tracker folder. Very cool.

The included README file explains how to use this experimental Rio support very well. Double-click the file Double click here to install, and a collection of utilities will be installed in ~/config/bin. You can double-click these utilities in the Tracker or run them from the command line.

mountrio: Mounts Rio so you can access it from the Tracker. It should appear as a disk on your Desktop.

unmountrio: Unmounts Rio so you can unplug it and start listening to your music.

initrio: Initializes Rio, erasing the old contents. Rio should not be mounted when you run this command.

You can delete files from Rio through the Tracker -- you must re-initialize the device with the initrio command. Rio expansion cards aren't supported in this release.

Tip: Rio is not limited to storing MP3 files -- you can put the BFS file system on it and store any kind of files you like, essentially treating it as a 32MB floppy disk. Just issue these commands and drag the files to the Rio Tracker window:
mkbfs /dev/misc/rio/parallel1
mkdir /rio
mount /dev/misc/rio/parallel1 /rio
Tip: Did you know you can load up your Rio directly from FTP sites? Just cd to /boot/rio and use command-line FTP to log on to your favorite MP3 FTP site. Any files you download will be dumped directly into Rio. Of course, there's no reason you can't use a graphical FTP client like NetPenguin or Get-It to drag-and-drop files out of the FTP location and into the mounted Rio folder in the Tracker.

Disk Striping

For those who need absolute maximum hard drive performance for high-bandwidth tasks, R4.5 supports disk striping -- a first for BeOS -- albeit in experimental format. In disk-striping configurations, multiple physical hard drives are "chained together" and treated by the operating system as a single, unified hard drive. Because each disk has its own read/write head, and each is capable of a specific maximum read/write throughput, it's theoretically possible to double your maximum read/write speed by making your disks work together, rather than independently. Technically, striping configurations don't have to span multiple physical hard disks -- they can span multiple files set up as BFS volumes, all living within the same partition. This, however, would be rather pointless :).
In actual fact, disk striping is a subset of a larger protocol, known as RAID (Redundant Array of Independent Disks). RAID works at various "levels," from RAID 0 to RAID 5. In some configurations, RAID is used to guarantee absolute integrity of data by mirroring it on multiple drives. If one drive goes down, the system cancontinue to access data on the mirrored disks. In other configurations, RAID is used to create very large hard disks, capable of storing files larger than could be stored on any single disk. Disk striping, the variety of RAID used to maximize speed, is known as RAID 0.
If you would like to set up a disk striping system, remember that striping is still "experimental" in R4.5. A number of BeOS users have been able to get up and running with very fast disk arrays through the striping driver, but if you get into trouble, Be will not be able to support you. Furthermore, be aware that this isn't an experiment to be taken lightheartedly. You will need to commit at least two entire physical drives (not just partitions) to the process, and you will lose all data currently on those disks.

Keep in mind also that if you're using IDE drives and you expect to see a real net gain, you'll need to make sure both physical disks are on separate IDE buses. Because IDE "blocks" while waiting for data, putting both IDE drives on the same bus will only result in those two disks contending for processor attention, since the IDE bus will block one drive while it waits for the other disk to finish what it's doing, thereby nullifying the speed advantages of disk striping. If you're using SCSI devices, you don't need to worry about this, though you'll probably get better performance by using two separate SCSI controllers (and thus two separate SCSI buses).

Take a look in /optional/experimental/striped, and you'll find a README file, a configuration file, and the striping driver. Read the README file very carefully, and be sure you understand it before you begin. Open a Terminal, cd to the installation directory, and type:

cp striped /boot/home/config/add-ons/kernel/drivers/bin/
ln -s ../../bin/striped
/boot/home/config/add-ons/kernel/drivers/dev/disk/striped
The driver is now installed. Time to configure your disk array. Open the text file striped_disk, and you'll see entries like:
newdevice disk/striped/1/raw {
	blocksize 4096
	startoffset 4096
	storage /dev/disk/ide/ata/2/master/0/raw
	storage /dev/disk/ide/ata/3/master/0/raw
}
Each instance of "newdevice" declares the existence of a virtual drive, consisting of the devices named on each "storage" line. In addition, each virtual device can take a number of arguments. You can disable caching with the "nocache" parameter (only useful for creating a file system within a file; not common), and you can define block sizes just as you always do when initializing a new BFS volume.

Since it's likely that you'll be using this fast virtual device for storing large media files, you'll probably want to create a larger block size than normal. With 4,096 you'll get better speed than with 1,024, though you'll waste space if you end up storing lots of little files on the device. The "startoffset" parameter leaves blank space at the beginning of the partition, so it doesn't look like a normal disk volume to BeOS. It's essential to use startoffset to prevent BeOS from trying to mount the individual disks independently.

Once you've got the configuration file written, make sure you've deleted any dummy/sample entries, and move the file to /boot/home/config/settings/kernel/drivers. Make sure the drives you intend to use do not have any partitions; if they do, delete them. Double-check the storage parameters you entered in the configuration files. If these point to disks containing data, the next step will erase that data. Ready, Freddie? Type

rescan striped
and the striping driver will republish the devices as a single virtual device. You can now use DriveSetup to create a partition map and initialize the new virtual partition. Mount the new partition, and you're good to go. Welcome to the world of high-performance disk arrays.
Note: Striping can be accomplished either in software or in hardware. The techniques described above are completely software-oriented, and of course, require system CPU resources.

Video CD

In yet another excellent demonstration of BeOS's ability to support alien file systems with the addition of a single driver file, R4.5 offers experimental support for video CDs (not DVDs). Copy vcd_fs to /system/add-ons/kernel/file_systems and mount your video CD from the Terminal, like so:
mount -t vcd_fs device path
For example, you might create a mount point in the root of your system at /videocd and your CD drive might be located at /dev/disk/ide/atapi/0/slave/0/raw. You would then mount your video CD like this:
mount -t vcd_fs /dev/disk/ide/atapi/0/slave/0/raw /videocd
You cannot mount video CDs from DriveSetup or by right-clicking the Desktop in R4.5. Once you mount a video CD, you should be able to double-click the MPEG videos in the mounted Tracker window to launch your movies. However, the MPEG video codec in R4.5 does not play the accompanying audio. In other words, experimental video CD support in this release is more of a curiosity than anything.
Tip: The easiest way to learn the raw device path to your CD-ROM drive is to type play in a Terminal window. The shell will report the paths to all installed CD-ROM hardware, followed by other useful data on the play command.

VideoRecorder

VideoRecorder forms part three of the holy video triumvirate in R4.5. Sibling to SoundRecorder and to both CodyCam and the TV app, VideoRecorder does exactly what its name implies, letting you capture any video stream running through your capture card to disk, saving it as an AVI or QuickTime movie (well, technically, in any format for which you have an installed video codec).

videorecorder
Using VideoRecorder to save excerpts of Yan Can Cook for later integration into a video collage piece.

You won't find VideoRecorder in your Applications folder though, because it's available only in experimental form in R4.5 (look in /optional/experimental). That's because VideoRecorder isn't quite suitable for combat duty just yet. It works, but you'll probably encounter some bugs. For example, VideoRecorder may suddenly disconnect from the media_addon_server and bomb out. You'll also quickly learn not to try to start a capture without selecting an output codec first; doing so will cause the app to crash when you press Record.

Aside from that, the only limits on what you can capture with VideoRecorder are imposed by your hardware, not by the application itself. Trapping video is extremely bandwidth / disk intensive, and you'll find that trying to grab 30 fps (frames per second) at a 640x480 resolution is impossible on most common hardware with stock IDE drives. However, the accompanying README file is straightforward about this: "640x480 16-bit video requires just over 17 megabytes per second of disk bandwidth. You can't write that much to a typical hard disk." To get around this limitation, adventurous users can use the (also experimental) disk-striping system described above. Of course, jumping from consumer-grade hardware to a more professional disk subsystem (e.g., SCSI) would help, too.

Nevertheless, if you lower your expectations a bit, you can capture quite usable video with the Photo-JPEG compressor at 320x240 and 15 fps. Be says you should be able to do this without difficulty even on a single PII 350 machine; I didn't have any problems at this threshold.

You'll probably find that the combination of Photo-JPEG compression and QuickTime export yields the most usable results, without dropped frames. But the higher you set the export quality, the more frames per second you request, and the larger your capture size, the more likely your video will start dropping frames. When you play back movies with dropped frames via MediaPlayer, they'll simply run faster.

VideoRecorder is a welcome addition to BeOS, even if it isn't perfect yet. Most people with a low-cost capture card will be able to coax usable results from it, either as standalone movies or as segments destined for import into personalStudio or other video-editing apps.

Windows Networking (WON)

Easily the most anticipated addition to BeOS R4.5 is its Windows networking support. Actually, I use the term "support" lightly since this feature is in the /optional/experimental folder. In future versions of BeOS, Windows networking services will be integrated into the Network preferences panel. For now, however, you'll have to set up a few things on your own, and you may or may not be successful at accessing shared volumes on your local network. In all likelihood, you'll find that things work out nicely on Windows 95/98 networks, but you may encounter problems on Windows NT networks, where security is tighter.

Be's implementation of Windows networking is called "World O' Networking," or WON for short. As described in The BeOS Bible, WON is based on CIFS, or Common Internet File System, which is a superset of SMB (Server Message Block). SMB is built into every copy of Windows, so you won't need to do anything special on the Windows side. The Linux/FreeBSD implementation of SMB is known as Samba; BeOS should be integrated into Linux networks running the Samba server as well.

In a nutshell, WON in R4.5 works like this: Launch /optional/experimental/WON/WONSetup. Select the File and Printer Sharing box and (optionally) the Show hidden mounts box. This last option exists because in many networks, there are a number of shared volumes that are available to users but not shown by default. Enter the name of your workgroup (NT users, use the name of your domain). If you don't know the name of your workgroup, look at a Windows machine on the same network, right-click Networking, choose Properties, and select the Identification tab. Without this workgroup name, you won't be able to access anything. If you're unsure, just enter WORKGROUP. Then enter your username and, if available, your password. Click Done, restart networking, and a World O' Networking icon will appear on the Desktop.

You can now browse your network just as if it were any other mounted disk volume. Network shares will be available from the Open/Save panels in all of your applications. And because the BeOS print layer is now network-aware, you'll be able to print to printers on the local network as well. Just select a shared printer from the WON folder, and the BeOS Printer preferences panel will appear.

For the vast majority of Windows 95/98 networks, this should be all you need to know. Happy browsing! If you're not able to mount remote shares, read on.

Mounting Shared Volumes Individually

If for some reason you're not able to browse the network (for password-authentication or other reasons), you may have better luck mounting specific volumes, via the cifsmount or ezmount commands. The network browsing functions in R4.5's WON implementation are not well tested, so you may have better luck by simply mounting the volumes you need rather than trying to access the entire network. cifsmount and ezmount are essentially identical in function, but ezmount makes things a little easier by not requiring you to manually establish a mount point beforehand. cifsmount's syntax is
cifsmount \\\\SOMESERVER\\ASHARE USERNAME PASSWORD LOCALMOUNT
where LOCALMOUNT is the name of a pre-established directory in the root of your file system into which you want the remote share mounted. For example, let's say you want the remote share to appear on the Desktop as volume named "Louise." You're connecting to a server named "Homer," and on this server is a share named "Marge." Your username is "Gomer" and your password is "Pyle." You would use cifsmount by creating a directory in the root of your file system called "Louise," and then typing:
cifsmount \\\\Homer\\Marge Gomer Pyle /Louise
Note: Because Windows does funky things with filename cases, you may need to experiment with the above command, using HOMER instead of Homer, etc.
Once you've got that down, you can make things easier on yourself by using the ezmount command, which creates the mount point in the root of the file system for you, naming it after the shared volume. ezmount doesn't require all the tedious backslashing, either. For example,
ezmount HOMER MARGE GOMER PYLE
should have the same effect, but you'll find the shared volume mounted at /MARGE. However, you can't use ezmount to mount multiple remote shares. If you need to mount only a single remote share, it's fine. If you need to mount several of them, use cifsmount. Once you've got cifsmount dialed in to do what you want it to do, add your cifsmount commands to ~/config/boot/UserBootScript so it will run automatically at boot time.

To unmount a shared volume, just use the standard unmount command, as you would with any other disk volume (e.g. unmount MARGE), or right-click the volume on the Desktop and choose Unmount from the context menu.

Accessing Your BeOS Machine from the Network

It's a two-way street, of course, and you may want to access shared folders on your BeOS machine from Windows or Linux machines as well. To do this, you'll need to walk a few extra feet and install the Samba server for BeOS (again, this is officially unsupported and should become much easier in a future release of BeOS).
Note: The version of Samba included on the BeOS R4.5 CD is not complete, and many users have been unable to get it to run properly or consistently (this author included). Be intends to make updates available, so keep your eye on the BeOS news sites and on www.be.com for more information. Unfortunately, the authors of The BeOS Bible cannot offer support for this unsupported BeOS software. Your best source of assistance will probably be other BeOS users in online forums such as the Usenet group comp.sys.be.help and the beusertalk mailing list. Concrete suggestions on improving this documentation are very much welcome.
Samba for BeOS is a port of freely available source code from the Unix/Linux world, and is protected by the GNU public license. You'll need to compile and configure it yourself to get up and running. Don't look for it in the WON folder though; it isn't there. Instead, insert the BeOS installation CD and mount its Windows partition (called "BeOS Tools"). Navigate to the GNU folder and drag the file samba-1.9.18p7.tgz to your Desktop or anywhere in the Tracker. Set its filetype to application/x-tgz, double-click it, and let Expand-o-Matic decompress the archive.

Inside, you'll find several folders and a file called make-samba-for-beos. Open a Terminal, cd to this folder, and run this script. Your machine will crunch away merrily for quite a while as the Samba server is compiled. When complete, you'll see the lines

Password not set
Samba has been installed
Now to configure your server. Use the Tracker to open /boot/beos/system/servers, and you'll find a new folder called samba, and inside this, a directory tree. Of interest to you here is a file called smb.conf living in the lib directory. Open /boot/beos/system/servers/samba/lib/smb.conf in a text editor and have a look.

smb.conf comprises a lengthy listing of configuration options that let you define what on your machine is to be shared and with whom you're willing to share. It lets you define workgroup names, allowable host addresses, home directories, read/write permissions, and more. The file is heavily commented (commented lines begin with a semicolon) and contains tons of explanatory notes and samples you can copy and paste to build your own custom configuration. The file is divided into sections called [global] (for settings that affect everyone and everything), [printers] (for sharing printers, probably not much of an issue for BeOS users just yet), [Space] (for creating sharable file spaces), and several more obscure options.

Before you get anywhere with Samba, however, you'll need to make sure your machine is identifiable on the network, so that Windows' Network Neighborhood will be able to see you. If your network has a DNS server, you can add your machine's IP address to the DNS tables. This isn't an ideal solution, however. A much better tactic is to enter your machine's hostname into the BeOS hosts file (/boot/beos/etc/hosts), as described on pp. 480-481 of The BeOS Bible. Without this information, the nmbd (name binding) daemon will fail at startup, even if you have a hostname specified in the Network preferences panel.

Once you've got that business taken care of, create entries in smb.conf that define shares for your machine. For example, you may want to uncomment, edit, or type in lines to create a file looking something like this:

[global]
   log file = /boot/beos/system/servers/samba/log.%m
   workgroup=Birdhouse
   server string = BeOS
   preserve case = yes
   case sensitive = yes
; the following machine should be the IP address of your own machine
   interfaces = 192.168.0.4
[Space]
  comment = File space
  path = /boot/home
  public = yes
  writable = yes
  allow hosts = 192.168.0.3
Restart networking, and you should be able to access your home folder from the machine on the network at the address 192.168.0.3. If you leave the "allow hosts" line out, your home folder should be accessible to all machines on the network.
Warning: You must take security seriously here. If you choose not to use the "allow hosts" line, all the machines on the network will have access to the specified folder. If you have real, fixed IP addresses on your network, i.e., those outside the 192.168.X.X range, the contents of that folder may be accessible to the entire Internet. Be cautious!
Samba is a large and complex service, with many options and possibilities. If you want to learn more about it, search the Internet for "Samba" or pick up a book such as O'Reilly's excellent guide Using Samba.
Note: While trying to get things worked out and set up properly the first time, you'll probably end up restarting networking services several times. In R4.5, the experimental nbdb and smdb daemons will not be killed off properly during a network restart and thus will end up running several copies of themselves. You might want to use the Team Monitor to kill them off manually before restarting networking.

Removing WON

If you end up not using WON on a regular basis and want to remove its icon from the Desktop, re-enter WONSetup and uncheck File and Printer sharing. Alternatively, edit /beos/system/boot/Netscript and remove or place # symbols before these two lines:
start  beos/bin/ksocketd
start beos/system/servers/da_hood
(Remember, this is a system-level script, and technically shouldn't be edited by users.)

Zip Disk

SCSI and IDE Iomega Zip disks are fully supported in BeOS (though parallel versions are not). However, there are a couple of known problems with removable media in some configurations. The zbeos file in this folder is a replacement for the zbeos file that ships in /boot/beos/system, and is intended only for users who fall into one of two categories:
  • Your system has an IDE Iomega Zip drive and it takes longer than 30 seconds to boot.
  • Your system has a removable media drive and is unable to boot from that drive.

If either of these sound like they might apply to your system, replace the system-installed zbeos with this one and restart your machine. You should be golden, but remember: This replacement boot loader is experimental. If you should run into trouble, follow the Emergency Boot Procedure outlined in The BeOS Bible and restore the main zbeos file from the installation CD to the beos/system directory on your boot partition.

Return to Table of Contents

Readers-Only Access
About BeOS | Online Chapters | Interviews | Updates

Please direct technical questions about this site to webmaster@peachpit.com.

Copyright © 1999 Peachpit Press and the respective authors.