



Version 2.1.2 (09/14/2011)
http://hg.commtech-fastcom.com/fscc-linux/downloads




Version 2.1.0 (05/02/2011)




We have officially released a 2.x driver for our FSCC series of cards using Linux.
This release is a departure from the 1.x series most of you are used to. We have broken API compatibility with the hopes of creating a new driver platform designed to use current kernel practices and ease as many complaints as we can from the old series.
If you already have an application designed to use the 1.x series of drivers you don’t have to make the switch. If you haven’t yet started application development we recommend using the new series. While compatibility has been broken it is very similar to the 1.x series of FSCC drivers so users of the old series should have no problem picking up the new driver.
If you would like to get started using this new driver start by download the driver from the following link then following the README file included.
http://code.google.com/p/fscc-linux/
http://hg.commtech-fastcom.com/fscc-linux
Considering this is a new driver if you find any issues or have any recommendations please let us know. Any information you can give us will help our entire user base.




01/05/2011
12/29/2010




Sometimes ‘setserial’ can memorize serial port configuration without requesting whether you would like this to happen. This can cause difficult to determine bugs when switching between serial cards. One way of determining if this is happening to you is by taking a look at the setserial output to see if there are more ports listed than the number of ports in your computer.
Here is a sample ‘setserial’ output showing this situation. I had 2-port card in the computer then replaced it later with a 4-port card. It memorized the configuration of the 2-port card and stored it’s configuration values at /dev/ttyS[4-5] upon reboot. So if you load up your program that uses /dev/ttyS4 expecting to use the first port of your new 4-port card it will not work.




09/23/2009 – Linux




To start we need to grab a few packages.
su -c 'yum groupinstall "Development Tools" ncurses-devel #'
Now make sure you are not logged in as root and run these commands to setup a directory tree to build the kernel.
cd
mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > .rpmmacros
Now we need to get the kernel source code to patch. To do this we use a command like this and edit it to use the specific kernel we wou like to use. You can browse here http://ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/SRPMS/ for more options. This line might take awhile since it is downloading an ~50mb file first.
rpm -i kernel-2.6.18-8.el5.src.rpm
Next up lets unpack the source code and get it ready to go.
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel-2.6.spec
Now we configure the kernel to do everything we need.
cd ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.<arch>
cp /boot/config-2.6.18-8.el5 .config
make oldconfig
Edit the .config file we just copied to the current directory and modify the line CONFIG_SERIAL_8250_RUNTIME_UARTS to something higher than 4.
CONFIG_SERIAL_8250_RUNTIME_UARTS=8
Add this line as the first line in the .config file.
# i386
Now replace an existing config file with the one we just modified. Then move all of the config files over to the SOURCES directory.
cp .config configs/kernel-2.6.18-i686.config
cp configs/* ~/rpmbuild/SOURCES
We need to copy our patch file into the ~/rpmbuild/SOURCES/ directory so it gets applied during the build.
cp commtech.patch ~/rpmbuild/SOURCES/commtech.patch
Change directories.
cd ~/rpmbuild/SPECS/
Open up the kernel-2.6.spec file and modify this line so it looks like this. This way we can tell the which kernel is which when we are done.
%define release 8%{?dist}.commtech
Then at line 913 add this line.
Patch40000: commtech.patch
Then at line 1985 add this line.
%patch40000 -p1
Build time. This step takes forever so I wouldn’t wait and watch. NOTE: Real early in the build process there is a problem with our patch that makes us manually specify the file that needs patched. So when it asks which file you need to say this line with your username and arch.
/home/<username>rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.<arch>/drivers/serial
rpmbuild --with baseonly -bb --target=`uname -m` kernel-2.6.spec
Finally the build is done and all you have left to do it install the
kernel and reboot. Just double click on the RPM file of your choosing
in the ~/rpmbuild/RPMS/ directory and follow the install prompt.




Here is a guide for patching the Linux kernel in Fedora 8 so that the Commtech boards will be detected.
To start we need to make sure we have all the tools we need for obtaining and building the kernel.
su -c 'yum install yum-utils rpm-build m4 make gcc redhat-rpm-config rpmdevtools ncurses-devel'
Now that we have all the tools we need, we run another command that sets up some directories for usage.
rpmdev-setuptree
Now everything should be setup the way we want it. So we download the kernel source code.
yumdownloader --source kernel
su -c 'yum-builddep kernel-<version>.src.rpm'
rpm -Uvh kernel-<version>.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel.spec
The kernel source code we are going to use is now located in
~/rpmbuild/BUILD/kernel-<version>/
We are about ready to build, but before we do we need to put together a config file. In the configs folder is some you should probably use. Pick one and cp it to .config
cp configs/kernel-2.<version>-<arch>.config .config
Before we start to build the kernel we need to tweak the .config file so that it allows for enough UART ports. So modify .config and change the CONFIG_SERIAL_8250_RUNTIME_UARTS line to something higher like 8.
gedit .config
Then copy it over to help out the build process.
cp .config ~/rpmbuild/SOURCES/config-<arch>
Lets apply the patch then we will be ready to build.
patch -p0 < ../fastcom_async_pci_serial_patch_2.6.24.hardy
Now finally we get to actually build the kernel. It takes forever so go do something else for awhile.
cd ~/rpmbuild/SPECS/
rpmbuild --with baseonly -bb --target=`uname -m` kernel.spec
Finally the build is done and all you have left to do it install the kernel and reboot. Just double click on the RPM file of your choosing in the ~/rpmbuild/RPMS/ directory and follow the install prompt.




Many users of the FSCC experience the situation where either one of the example programs and utilities returns with an error “Device or Resource busy.”
The likely cause (if we are talking about an FSCC card specifically) is that you performed an operation on the transmitter or receiver and there is not a valid transmit or receive clock present. One example of an instance in which this can happen is if you configure the card to operate in a mode with an external receive clock (i.e. clock mode 1) and there is not a valid clock present on the RxClkIn pins and then you try to issue a command to the receiver (i.e. a HUNT or RESET command).
Basically what happens is that the command is sent to the card and it never completes. This can be verified by reading the status of the command executing bit. If it is a 1, then there is a command waiting to be executed (when a clock shows up). This can be remedied by momentarily switching to a mode that uses internal clocking (i.e. 7). It can be prevented by never issuing a receive command if there is a chance that you don’t have a receive clock.




This is a pretty unexciting update. This just contains a couple of code updates to fix a couple of errors and warnings when building the Linux module in newer 2.6 kernels.




Another mass update blog post, though not so many this time:




This new software release contains an updated Linux driver. This update fixes a number of build warnings that cropped up in later 2.6 kernel versions. Hopefully it will compile cleanly for a while.




This new software release includes these new features:
This new driver can be found here: superfastcom_2008_05_07.zip




Exactly how does one apply the kernel patch for a Fastcom:FSCC, 232/4-PCI-335, 422/2-PCI-335 or 422/4-PCI into a Ubuntu Linux 7.10 (Gutsy) kernel?
Funny you should ask. The steps below are based largely on the howto on the Ubuntu help pages.
To start, you will need to install a few packages:
sudo apt-get install linux-kernel-devel fakeroot build-essential
The you need to get the kernel source. The simplest way, useful to those who want to rebuild the standard Ubuntu packages with additional patches is:
apt-get source linux-image-`uname -r` (that is a tick mark, it is the symbol on the key with the ~)
apt-get build-dep linux-image-`uname -r`
Now I want to apply my kernel patch of choice. For this example I will use the 2.6.22 kernel and associated patch.
cd linux-source-2.6.22-2.6.22
patch -p0 < fastcom_async_pci_serial_patch_2.6.22.gutsy
Now I copy my current config to the appropriate source config directory. Obviously I am using i386 and generic, you may be using something different.
cp /boot/config-2.6.22-14-generic debian/config/i386/config
You will want to change one entry in the config file before you proceed. You want to change the number of runtime UARTs to at least 8 (more if you are using multiple cards).
vi debian/config/i386/config
CONFIG_SERIAL_8250_RUNTIME_UARTS=8
Then to update the configs, run this:
sudo chmod 755 debian/scripts/misc/splitconfig.pl
sudo chmod 755 debian/scripts/misc/oldconfig
debian/scripts/misc/oldconfig ARCH (replacing ARCH with your architecture i.e. i386, etc)
Now it is time to compile! To build a specific target, use this command:
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-FLAVOUR
Where FLAVOUR is one of the main flavours of the kernel (e.g. generic).
Relax. Have a cigar – this will take a little while.
When it finishes the newly created deb packages will be in the parent directory. To install them:
sudo dpkg -i linux-image-2.6.22-14-generic_2.6.22-14.47_i386.deb
sudo dpkg -i linux-headers-2.6.22-14-generic_2.6.22-14.47_i386.deb
Then reboot into your new kernel. That’s it.


More Options ...
Categories
Tag Cloud
Blog RSS
Comments RSS

Void « Default
Life
Earth
Wind
Water
Fire
Light 