=============================================================================
    MOXA UPort 1100 Series USB to Serial Hub Driver Installation Guide
    for Linux Kernel 2.4.20 and above
    Copyright (C) 2019, Moxa Inc.
=============================================================================
Date: 07/04/2019

CONTENTS

0. Note
1. Introduction
2. System Requirements
3. Installation
   3.1 Driver files   
   3.2 Device naming convention
   3.3 Module driver configuration   
   3.4 Static driver configuration
   3.5 Verify driver installation
4. Uninstallation
5. Setserial
6. Troubleshooting

-----------------------------------------------------------------------------
0. Note

   The MOXA UPort 1100 Series USB to Serial Hub driver can be used in the
   Linux kernel with the usbcore and usbserial modules. This two modules is
   built-in module in the Linux kernel version 2.4.x and follow.
   In the Linux kernel version, you must check this two build-in modules
   existed. Otherwise, you will fail to using MOXA UPort 1100 Series USB to
   Serial Hub driver.

-----------------------------------------------------------------------------
1. Introduction

   The MOXA UPort 1100 Series USB to Serial Hub Linux driver supports following
   devices. 

    - UPort 1110, 1 port RS-232 USB to Serial Hub.
    - UPort 1130, 1 port RS-422/485 USB to Serial Hub.
    - UPort 1130I, 1 port RS-422/485 USB to Serial Hub with isolation
      protection.
    - UPort 1150, 1 port RS-232/422/485 USB to Serial Hub.
    - UPort 1150I, 1 port RS-232/422/485 USB to Serial Hub with isolation
      protection.

   This driver supports x86 and x64(AMD64/EM64T) hardware platform. In 
   order to maintain compatibility, this version has also been properly 
   tested with several Linux distribution (see version.txt). However, 
   if compatibility problem occurs, please contact Moxa Inc. technical
   support. (support@moxa.com)

   All the drivers are published in form of source code under
   GNU General Public License in this version. Please refer to GNU General
   Public License announcement in each source code file for more detail.

   This version of driver can be only installed as Loadable Module (Module 
   driver). Before you install the driver, please refer to hardware installation
   procedure in the User's Manual.

-----------------------------------------------------------------------------
2. System Requirements
   - Hardware platform: x86, x64 
   - Kernel version: 2.4.20 and above
   - gcc version 3.x 
   - kernel source

-----------------------------------------------------------------------------
3. Installation

   3.1 Driver files   
   3.2 Device naming convention
   3.3 Module driver configuration
   3.4 Static driver configuration
   3.5 Verify driver installation
       
   3.1 Driver files

       The driver file may be obtained from website, under the product page.
       first step is to copy driver file
       "driv_linux2.x_uport1p_[VERSION]_[BUILD].tgz" into a user directory.
       e.g. /moxa. Please execute command as below.

       # cd /moxa
       # tar xvfz driv_linux2.x_uport1p_[VERSION]_[BUILD].tgz

   3.2 Device naming convention
   
       You may find all the driver files in /moxa/mxu11x0/driver/kernel2.4
       Following installation procedure depends on the model you'd like to
       run the driver.

       Dialin and callout port
       -----------------------
       This driver remains traditional serial device properties. Because the
       limitation of the usb build-in modules that are usbcore and usbserial, 
       There is only one special file name for each serial port. This one is 
       dial-in port which is named "ttyUSBxx". 

   3.3 Module driver configuration

       3.3.1 Build the MOXA driver
          Before using the MOXA driver, you need compile the all the source 
          code. This step is only need to be executed once.
          But you still re-compile the source code if you modify the source
          code. 
                    
          # cd /moxa/mxu11x0
          # ./mxinstall

          or 

          # cd /moxa/mxu11x0/driver/kernel2.4
          # make clean; make install

          The driver files "mxu1100_24.o" will be properly compiled
          and copied to system directories respectively. 
          
       3.3.2 Load the MOXA driver  

          The driver will be loaded automatically while pluging the 
          UPort 1110/1130/1130I/1150/1150I into you PC. Besides, you can load 
          the driver manually.
  
          # modprobe mxu1100_24

          It will activate the module driver. You may run "lsmod" to check
          if "mxu1100_24" is activated. Before you load this module driver,
          you have to run "lsmod" to check if "usbcore" and "usbserial" are 
          activated.

   3.4 Static driver configuration
       
       Note: To use static driver, you must install the linux kernel
             source package.
   
       3.4.1 Check your Linux kernel source directory. 
          For Red Hat 7.x user, you need to create link:
          # cd /usr/src
          # ln -s linux-2.4 linux

       3.4.2 Create link
          # cd /usr/src/linux-2.4/drivers/usb/serial/
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1100_24.c mxu1100_24.c
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1100_24.h mxu1100_24.h
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1110_fw.h mxu1110_fw.h
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1130_fw.h mxu1130_fw.h
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1131_fw.h mxu1131_fw.h
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1150_fw.h mxu1150_fw.h
          # ln -s /moxa/mxu11x0/driver/kernel2.4/mxu1151_fw.h mxu1151_fw.h

       3.4.3 Modify kernel configuration file.
          Add the following line into configuration file.
          /usr/src/linux/drivers/usb/serial/Config.in

          dep_tristate '  MOXA UPort 1100 Driver' CONFIG_MOXA_UPORT_1100 

       3.4.4 Modify the kernel Makefile 
          Add the following line into Makefile.
          /usr/src/linux/drviers/usb/serial/Makefile

          obj-$(CONFIG_MOXA_UPORT_1100) += mxu1100_24.o

       3.4.5 Setup kernel configuration
          
          Configure the kernel:

            # cd /usr/src/linux
            # make mrproper
            # make menuconfig
            
          You will go into a menu-driven system. Please select [USB Support]
          [USB Serial Converter support], enable the [MOXA UPORT 1100 Driver]
          driver with "[*]" by pressing space bar for built-in
          (not "[M]"), then select [Exit] to exit this program. 
          
       3.4.6 Rebuild kernel
          The following are for Linux kernel rebuilding, for your 
          reference only.
          For appropriate details, please refer to the Linux document.

          a. cd /usr/src/linux
          b. make clean         /* take a few minutes */
          c. make dep           /* take a few minutes */
          d. make bzImage       /* take probably 10-20 minutes */
          e. make modules
          f. make install       /* copy boot image to correct position */
          g. make modules_install
          h. Please make sure the boot kernel (vmlinuz) is in the
             correct position. 
          i. If you use 'lilo' utility, you should check /etc/lilo.conf 
             'image' item specified the path which is the 'vmlinuz' path, 
             or you will load wrong (or old) boot kernel image (vmlinuz).
             After checking /etc/lilo.conf, please run "lilo".

       Note that if the result of "make bzImage" is ERROR, then you have to
       go back to Linux configuration Setup. Type "make menuconfig" in 
       directory /usr/src/linux.

   3.5 Verify driver installation
       You may refer to /var/log/messages to check the latest status
       log reported by this driver whenever it's activated.

-----------------------------------------------------------------------------
4. Uninstallation

   # cd /moxa/mxu11x0
   # make remove

   or

   # cd /moxa/mxu11x0/driver/kernel2.4
   # make remove

-----------------------------------------------------------------------------
5. Setserial

   MOXA UPort 1130/1130I provides three interfaces(RS-485 2W, RS-485 4W, RS-422) 
   and UPort 1150/1150I provides four interfaces(RS-232, RS-485 2W, RS-485 4W,
   RS-422). If you want to switch different interface, you can execute the
   setserial command to set the port's interface. The supported parameter is
   listed below.

   parameter  value  interface

   port       0      RS-232
              1      RS-485 2W
              2      RS-422
              3      RS-485 4W

   For example:
     To set the port's informations:
     # setserial /dev/ttyUSB0 port 1

     To get the port's informations:
     # setserial -G /dev/ttyUSB0
   
-----------------------------------------------------------------------------
6. Limitation 
   1. Max. ports
      If you want to install more than one UPort USB serial Hub, the best
      way is to connect to USB port directly. In lab test, four USB ports 
      with four UPort 1110/1130/1130I/1150/1150I still work very well. If we 
      connect to USB hub, the throughput will be dropped down. To get good 
      performance, please connecting UPort 1110/1130/1130I/1150/1150I to USB 
      port directly .    

   2. Compile error
      To build Moxa driver, it needs kernel header files. If you got
      some compile error, please run "rpm -qa | grep kernel" to check 
      whether the kernel-source package is installed properly. If not,
      please get the kernel-source irpm package and run "rpm -ivh <pacakge>"
      to install. You also need to make sure the build tool is ready,
      including make/gcc/lib. Please see Linux relative document to 
      get more information.
      
   3. Probe error
      The UPort 1110/1130/1130I/1150/1150I needs firmware downloaded after attaching
      to PC. Hence, the driver will reset the UPort 1110/1130/1130I/1150/1150I after
      downloading firmware and probe the UPort 1110/1130/1130I/1150/1150I again.
      After that, the UPort 1110/1130/1130I/1150/1150I will attach to the
      /dev/ttyUSBxx. Therefore, the message "mxu1_download_firmware - error
      downloading, -110" will show only once before successfully installing
      the device. You may refer to /dev/ttyUSBxx to see if the
      UPort 1110/1130/1130I/1150/1150I is set correctly.

-----------------------------------------------------------------------------
