-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathREADME.TXT
More file actions
1000 lines (757 loc) · 37.9 KB
/
README.TXT
File metadata and controls
1000 lines (757 loc) · 37.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
=============================================================================
MOXA Smartio/Industio Family Device Driver Installation Guide
for Linux Kernel 6.x
Copyright (C) 2022, Moxa Inc.
=============================================================================
Date: 02/24/2023
Content
0. Note
1. Introduction
2. System Requirement
3. Installation
3.1 Hardware installation
3.2 Driver files
3.3 Device naming convention
3.4 Module driver configuration
3.5 Static driver configuration
3.6 Custom configuration
3.7 Verify driver installation
4. Utilities
5. Setserial
6. Non-standard baud rate
7. How to sign the driver with a cypher key to support a platform which enables the secure boot
8. Troubleshooting
-----------------------------------------------------------------------------
0. Note
0.1 Installation step summary.
Hardware installation:
Refer to the "3.1 Hardware installation".
Software/driver installation:
0.1.1 Extract the Moxa driver: Refer to the "3.2 Driver files".
0.1.2 There are two methods to install Moxa driver: module & static. If
you want to use the module method, refer to the "3.4 Module driver
configuration". If you want to use the static method, refer to the
"3.5 & 3.6 Static driver configuration".
-----------------------------------------------------------------------------
1. Introduction
The Smartio/Industio/UPCI family Linux driver supports following the
multiport boards.
- 2 ports multiport board
CP-102U, CP-102UL, CP-102UF, CP-102E, CP-102EL,
CP-132U-I, CP-132UL,, CP-132EL, CP-132EL-I,
CP-132, CP-132I, CP132S, CP-132IS,
CP-112UL, CP-112UL-I,
CI-132, CI-132I, CI-132IS,
(C102H, C102HI, C102HIS, C102P, CP-102, CP-102S)
- 4 ports multiport board
CP-104EL, CP-104EL-A,
CP-104UL, CP-104JU,
CP-134U, CP-134U-I, CP-134EL-A-I,
C104H/PCI, C104HS/PCI,
CP-114, CP-114I, CP-114S, CP-114IS, CP-114UL, CP-114EL, CP-114EL-I,
C104H, C104HS,
CI-104J, CI-104JS,
CI-134, CI-134I, CI-134IS,
(C114HI, CT-114I, C104P)
POS-104UL
- 8 ports multiport board
CP-118EL, CP-168EL,
CP-118U, CP-118U-I,
CP-118E-A-I, CP-138E-A-I, CP-116E-A,
CP-118EL-A, CP-118E-I-A,
CP-138U, CP-138U-I
CP-168EL, CP-168U, CP-168EL-A, CP-168U,
C168H/PCI,
C168H, C168HS,
(C168P)
- 16 ports multiport board
CP-116E-A
This driver supports x86 and x64 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)
In addition, for the device driver, useful utilities are also provided in
this version. They are
- msdiag Diagnostic program for displaying installed Moxa
Smartio/Industio boards.
- msmon Monitor program to observe data count and line status signals.
- msterm A simple terminal program which is useful in testing serial
ports.
- muestty Device configuration tool for MUE series PCI Express
multiport board(CP-102E, CP-102EL, CP-132EL, CP-132EL-I,
CP-114EL, CP-114EL-I, CP-104EL-A, CP-168EL-A, CP-118EL-A,
CP-118E-A-I, CP-138E-A, CP-134EL-A, CP-116E-A).
The tool provides two functions to set and get the interface
and terminator resistor on the device.
- io-irq.exe Configuration program to setup ISA boards. Please note that
this program can only be executed under DOS.
All the drivers and utilities are published in the 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.
In Moxa's Web sites, you may always find the latest driver at
http://www.moxa.com
This version of driver can be installed as Loadable Module (Module driver)
or built-in into the kernel (Static driver). You may refer to the following
installation procedure a for suitable one. Before you install the driver,
please refer to hardware installation procedure in the User's Manual.
We assume the user should be familiar with the following documents.
- Serial-HOWTO
- Kernel-HOWTO
Note: The MUE series includes CP-102E, CP-102EL, CP-132EL, CP-132EL-I,
CP-114EL, CP-114EL-I, CP-104EL-A, CP-168EL-A, CP-118EL-A,
CP-118E-A-I, CP-138E-A, CP-134EL-A, CP-116E-A, and supports
linux kernel 6.x.
-----------------------------------------------------------------------------
2. System Requirement
- Hardware platform: x86, x64
- Kernel version: 6.x
- gcc version 2.72 or later
- Maximum 4 boards can be installed in combination
- Kernel source
Note: If you want to use this driver in VM, you MUST to enable
VM-Compatible in physical computer with linux operating system.
You can use muestty, the utility contained in this driver, to enable
VM-Compatible feature. You can refer to the "4. Utilities" for more
detail.
-----------------------------------------------------------------------------
3. Installation
3.1 Hardware installation
3.2 Driver files
3.3 Device naming convention
3.4 Module driver configuration
3.5 Static driver configuration
3.6 Custom configuration
3.7 Verify driver installation
3.1 Hardware installation
There are several types of buses, ISA and PCI/PCIE, for Smartio/Industio
family multiport board.
ISA board
---------
You'll have to configure CAP address, I/O address, Interrupt Vector
as well as IRQ before installing this driver. Please refer to hardware
installation procedure in User's Manual before proceeding any further.
Please make sure the JP1 is open after the ISA board is set properly.
PCI/UPCI board
--------------
You may need to adjust IRQ usage in BIOS to avoid IRQ conflict with
other ISA devices. Please refer to hardware installation procedure
in User's Manual in advance.
PCI IRQ Sharing
-----------
Each port within the same multiport board shares the same IRQ. Up to
4 Moxa Smartio/Industio PCI Family multiport boards can be installed
together on one system and they can share the same IRQ.
3.2 Driver files
The driver file could be obtained from the website, under the product
page.
The first step is making a copy of the driver file
"driv_linux_smart_[VERSION]_[BUILD].tgz" into the specified directory.
e.g. /moxa.
Please execute the following commands as below.
# cd /moxa
# tar -xzvf driv_linux_smart_vx.x_build_yymmddhh.tgz
In addition, you could find all driver files in /moxa/mxser.
3.3 Device naming convention
You could find all drivers and utilities in /moxa/mxser.
The installation procedures below are depended on the model you'd like
to run the driver. If you prefer the module driver, please refer to
3.4. If the static driver is required, please refer to 3.5.
Dial-in and callout port
-----------------------
This driver remains traditional serial device properties and only
dial-in ports will be created. The device name for each serial port is
/dev/ttyMxx. The MUE series multiport board’s serial port name is
/dev/ttyMUExx.
Device naming when more than 2 boards installed
-----------------------------------------------
Naming convention for each Smartio/Industio multiport board is
pre-defined as below.
Board Num. Dial-in Port
1st board ttyM0 - ttyM7
2nd board ttyM8 - ttyM15
3rd board ttyM16 - ttyM23
4th board ttyM24 - ttyM31
For MUE series:
Board Num. Dial-in Port
1st board ttyMUE0 - ttyMUE7
2nd board ttyMUE8 - ttyMUE15
3rd board ttyMUE16 - ttyMUE23
4th board ttyMUE24 - ttyMUE31
Board sequence
--------------
This driver will activate ISA boards Module according to the
parameter set in the driver. After all specified ISA board
activated, PCI board will be installed in the system automatically
driven. Therefore the board number is sorted by the CAP address of
ISA boards. For PCI boards, their sequence will be after ISA boards
and C168H/PCI has higher priority than C104H/PCI boards.
3.4 Module driver configuration
Module driver is the easiest way to install. If you prefer the static
driver installation, please skip this paragraph.
------------- Prepare to use the MOXA driver--------------------
3.4.1 Create tty device with correct major number
Before using MOXA driver, your system must have the tty devices
which are created with the driver's major number. We offer one
shell script "msmknod" to simplify the procedure.
This step is only needed to be executed once. But you still
need to do this procedure when:
a. You change the driver's major number. Please refer to the
"3.7" section.
b. Your total installed MOXA boards number is changed. Maybe you
add/delete one MOXA board.
c. You want to change the tty name. This needs to modify the
shell script "msmknod"
The procedure is:
# cd /moxa/mxser/driver
# ./msmknod
This shell script will require the major number for dial-in
device and callout device to create tty device. You also need
to specify the total installed MOXA board number. Default major
numbers for dial-in device and callout device are 30, 35. If
you need to change to other numbers, please refer section "3.7"
for more detailed procedure.
Msmknod will delete any special files occupying the same device
naming.
3.4.2 Build the MOXA driver and utilities
Before using the MOXA driver and utilities, you need to 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. For example, if you change the driver's major number
(see "3.7" section), then you need to do this step again.
Find "Makefile" in /moxa/mxser, then run
# make;
The driver files and utilities will be compiled respectively.
3.4.3 Install the MOXA driver and utilities
To install the MOXA driver and utilities, you have to execute the
command as below in /moxa/mxser directory. The driver and the
utilities will be installed to the system directory respectively.
# make install
!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!
For Red Hat Enterprise Linux AS4/ES4/WS4:
# make install sp2
!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!
------------- Load MOXA driver--------------------
3.4.4 Load the MOXA driver
# modprobe mxser <argument>
or
# modprobe mxupcie <option>
will activate the module driver. You may run "lsmod" to check
if "mxser" (or "mxupcie") is activated. If the MOXA board is
ISA board, the <argument> is needed. Please refer to section
"3.4.7" for more information.
The "mxupcie" is for MUE series multiport board only.
To simplify the processes above, we provide a single step to
build, install and load the MOXA driver. You may execute the
./mxinstall in /moxa/mxser/ to use the MOXA product.
# ./mxinstall
------------- Load MOXA driver on boot --------------------
3.4.5 For the above description, you may manually execute
"modprobe mxser" (or "modprobe mxupcie") to activate this
driver and run "rmmod mxser" (or "rmmod mxupcie") to remove it.
However, it's better to have a boot time configuration to
eliminate manual operation. Boot time configuration can be
achieved by rc file. We offer one "rc.mxser" file to simplify
the procedure under "moxa/mxser/driver".
But if you use ISA board, please modify the "modprobe ..." command
to add the argument (see "3.4.7" section). After modifying the
rc.mxser, please try to execute "/moxa/mxser/driver/rc.mxser"
manually to make sure the modification is ok. If any error
encountered, please try to modify again. If the modification is
completed, follow the below step.
a. For Red Hat
Run the following command for setting rc files.
# cd /moxa/mxser/driver
# cp ./rc.mxser /etc/rc.d/
# cd /etc/rc.d
Check "rc.serial" is existed or not. If "rc.serial" doesn't exist,
create it by vi, run "chmod 755 rc.serial" to change the permission.
Add "/etc/rc.d/rc.mxser" in last line,
Reboot and check if mxser or mxupcie activated by "lsmod" command.
b. For Debian
Run the following command for setting rc files.
# cd /moxa/mxser/driver
# cp ./rc.mxser /etc/init.d/
Reboot and check if mxser or mxupcie activated by "lsmod" command.
If the Debian system boots without Multiport Serial Boards driver loaded, please
execute the following command with root administration to resolve this
problem:
# update-rc.d rc.mxser defaults
Starting with Debian 6.0, the insserv command is used instead as
below instruction.
# insserv /etc/init.d/rc.mxser
c. For SuSE
Run the following command for setting rc files.
# cd /moxa/mxser/driver
# cp ./rc.mxser /etc/rc.d/
# cd /etc/rc.d
Check "boot.local" is existed or not. If "boot.local" doesn't exist,
create it by vi, run "chmod 755 boot.local" to change the permission.
Add "/etc/rc.d/rc.mxser" in last line,
Reboot and check if mxser or mxupcie activated by "lsmod" command.
3.4.6. Automatically modify the port settings on boot
In the rc files (see "3.4.5" section), it can modify the port settings
automatically on the boot time by adding the configuration scripts into
the rc files.
For example:
To configure the interface as RS-485 2 wire and the 120ohm terminator
resistor for ttyMUE0 when system startup, the following scripts can be
written into the rc files.
muestty -i RS4852W /dev/ttyMUE0
muestty -t 120TERM /dev/ttyMUE0
To see the usage of muestty, please check Chapter 4.
3.4.7. If you'd like to drive Smartio/Industio ISA boards in the system,
you'll have to add parameter to specify CAP address of given
board while activating "mxser.o". The format for parameters is
as follows.
Step 1: Unload the driver, if the driver is activating.
Run "lsmod" to check if "mxser" is activated or not.
#lsmod | grep mxser
If the driver is activating, unload it.
#rmmod mxser
Step 2: Activate the driver with parameters.
#modprobe mxser ioaddr=0x???,0x???,0x???,0x???
| | | |
| | | +- 4th ISA board
| | +------ 3rd ISA board
| +------------ 2nd ISA board
+------------------- 1st ISA board
The MUE series multiport board provides two options to set
the interface and terminator resistor while loading the driver.
The two options are available while working in RS-422 and
RS-485 mode. Option's value is applied to all ports on the
devices.
Step 1: Unload the driver, if the driver is activating.
Run "lsmod" to check if "mxupcie" is activated or not.
#lsmod | grep mxupcie
If the driver is activating, unload it.
#rmmod mxupcie
Step 2: Activate the driver with parameters.
#modprobe mxupcie interface=2 terminator=1
| |
| +- 120 ohm
+-------------- RS-422
The interface and terminator have values to set as the following.
Option Value Comment
interface 1 RS-232
2 RS-422
4 RS-485 2 wire
8 RS-485 4 wire
terminator 0 0 ohm
1 120 ohm
Note: You should unload the MOXA driver, before using modprobe
command to activate it.
3.4.8 Unload the MOXA driver
# rmmod mxser
or
# rmmod mxupcie
will deactivate the module driver. You may run "lsmod" to check
if "mxser" (or "mxupcie") is activated or not.
3.4.9 Clean the MOXA driver and utilities
Clean the MOXA driver and utilities in /moxa/mxser, you have
to execute the command below to clean the files.
# make clean
3.4.10 Uninstall the MOXA driver and utilities
The MOXA driver and utilities will be removed from the system
respectively after executing the command below in /moxa/mxser.
# make uninstall
3.5 Static driver configuration
Note: To use static driver, you must install the Linux kernel
source package.
3.5.1 Backup the built-in driver in the kernel.
# cd /usr/src/linux/drivers/char
# mv mxser.c mxser.c.old
3.5.2 Create link
# cd /usr/src/linux/drivers/char
# ln -s /moxa/mxser/driver/mxser.c mxser.c
# ln -s /moxa/mxser/driver/mxser.h mxser.h
# ln -s /moxa/mxser/driver/mxpcie.c mxupcie.c
# ln -s /moxa/mxser/driver/mxpcie.h mxupcie.h
3.5.3 Modify kernel configuration file.
Add the following lines into the configuration file.
Please modify the Kconfig file.
/usr/src/<kernel-source directory>/drivers/char/Kconfig
...
config MOXA_INTELLIO
...
config MOXA_SMARTIO
...
config MOXA_SMARTIO_MUE <-- Add the
tristate "Moxa SmartIO MUE support" <-- three
depends on SERIAL_NONSTANDARD <-- lines in here.
...
3.5.4 Modify the kernel Makefile
Add the following line to the last line of Makefile.
/usr/src/<kernel-source directory>/drviers/char/Makefile
...
...
obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
obj-$(CONFIG_MOXA_SMARTIO_MUE) += mxupcie.o <-- Add the line.
...
3.5.5 Add CAP address, Interrupt Vector Address and IRQ list for
ISA boards. For PCI boards user, please skip this step.
In module mode, the CAP address, Interrupt Vector Address and IRQ for
ISA board are given by parameters.
In static driver configuration, you'll have to assign it withini the
driver's source code. If you will not install any ISA boards, you may
skip to next portion.
The instructions to modify driver source code are as below.
a. # cd /moxa/mxser/driver
# vi mxser.c
b. Find the array mxserBoardCAP[] as below.
static int mxserBoardCAP[]
={0,0,0,0};
static int mxserBoardIRQ[]
={0,0,0,0}
static int mxserBoardVECT[]
={0,0,0,0}
c. Change the address within this array using vi. For
example, to driver 2 ISA boards with CAP address, vector, IRQ to
(0x180, 0x1c0, 10) and (0x280,0x2c0, 11). Just to change
the source code as follows.
static int mxserBoardCAP[]
= {0x180, 0x280, 0x00, 0x00};
static int mxserBoardIRQ[]
= {10, 11, 0x00, 0x00};
static int mxserBoardVECT[]
= {0x1c0, 0x2c0, 0x00, 0x00};
3.5.6 Setup kernel configuration
Configure the kernel:
# cd /usr/src/linux
# make menuconfig
You will go into a menu-driven system. Please select [Character
devices][Non-standard serial port support], enable the [Moxa
SmartIO support] (or [Moxa SmartIO MUE support]) driver with
"[*]" for built-in (not "[M]"), then select [Exit] to exit this
program.
3.5.7 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
d. make /* take probably 10-20 minutes
e. make modules_install /* take a few minutes
f. make install /* copy boot image to correct position
Please make sure the boot kernel (vmlinuz) is in the
correct position.
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.8 Make tty device and special file
# cd /moxa/mxser/driver
# ./msmknod
3.5.9 Install the utilities
There are four utilities to use with MOXA product.
Please refer to section 4 for more detail.
Install the utilities to system directory.
# cd /moxa/mxser/utility
# make install
3.5.10 Reboot
3.6 Custom configuration
Although this driver already provides you default configuration, you
still can change the device name and major number. The instruction to
change these parameters are shown below.
Change Device Name
------------------
If you'd like to use other device names instead of the default naming
the convention, all you have to do is to modify the internal code
within the shell script "msmknod". First, you have to open "msmknod"
by vi. Locate each line contains "ttyM" (or "ttyMUE") and "cum"
(or"cumue") and change them to the device name you desired. "msmknod"
creates the device names you need next time executed.
Change Major Number
-------------------
If major number 30 and 31 had been occupied, you may have to select
2 free major numbers for this driver. There are 3 steps to change
major numbers.
3.6.1 Find free major numbers
In /proc/devices, you may find all the major numbers occupied
in the system. Please select 2 major numbers that are available.
e.g. 40, 45.
3.6.2 Create special files
Run /moxa/mxser/driver/msmknod to create special files with
specified major numbers.
3.6.3 Modify driver with new major number
Run vi to open /moxa/mxser/driver/mxser.c. Locate the line
contains "MXSERMAJOR". Change the content as below.
#define MXSERMAJOR 40
#define MXSERCUMAJOR 45
3.6.4 Run "make clean; make install" in /moxa/mxser/driver.
3.7 Verify driver installation
You may refer to /var/log/messages to check the latest status
log reported by this driver whenever it's activated or type command
"dmesg" to get driver information includes model name and tty name of
installed UPorts.
Following demostrates the messages when installing UPort 2210.
mxser: MOXA Smartio/Industio family driver version 6.0
mxupcie: MOXA Smartio/Industio family driver version 6.0
mxupcie: Found MOXA CP-116E-A series (A) board(BusNo=9,DevNo=0)
mxupcie: ttyMUE0 - ttyMUE7
mxupcie: max. baud rate = 921600 bps.
mxupcie: MOXA CPLD version 1.0
mxupcie: Found MOXA CP-116E-A series (B) board(BusNo=10,DevNo=0)
mxupcie: ttyMUE8 - ttyMUE15
mxupcie: max. baud rate = 921600 bps.
mxupcie: MOXA CPLD version 1.0
Above message indicates /dev/ttyMUE[0-15] are installed successfully.
-----------------------------------------------------------------------------
4. Utilities
There are 4 utilities contained in this driver. They are msdiag, msmon,
msterm and muestty. These 4 utilities are released in the form of source
code. They should be compiled into an executable file and copied into
/usr/bin.
+------------------------------------------------------------------------+
| Note: “msmon” and “msterm” which will not be compiled in ARM system |
| due to not being supported. |
+------------------------------------------------------------------------+
Before using these utilities, please load driver (refer 3.4 & 3.5) and
make sure you had run the "msmknod" utility.
msdiag - Diagnostic
--------------------
This utility provides the function to display what Moxa Smartio/Industio
the board found by the driver in the system.
msmon - Port Monitoring
-----------------------
This utility gives the user a quick view about all the MOXA ports'
activities. One can easily learn each port's total received/transmitted
(Rx/Tx) character count since the time when the monitoring is started.
Rx/Tx throughputs per second are also reported in an interval basis (e.g.
the last 5 seconds) and on average basis (since the time the monitoring
is started). You can reset all ports' count by <HOME> key. <+> <->
(plus/minus) keys to change the displaying time interval. Press <ENTER>
on the port, that cursor stays, to view the port's communication
parameters, signal status, and input/output queue.
msterm - Terminal Emulation
---------------------------
This utility provides data sending and receiving the ability of all tty
ports, especially for MOXA ports. It is quite useful for testing simple
application, for example, sending AT command to a modem connected to the
port or used as a terminal for login purpose. Note that this is only a
dumb terminal emulation without handling full-screen operation.
muestty - Port Configuration Tool
---------------------------------
The utility provides options to set and get the interface and terminator
resistor for the MUE series.
Usage: muestty <operation> device_node
muestty -h | -v
muestty -v enable board_number
device: The MUE series device node.
operation: -h Help
-g Get the following information
a) interface type
b) terminator resistor
c) pull high/low resistor
-i intf Set interface type with options below
-t value Set terminator resistor
-p state Set pull high/low resistor
-a baud Auto tune and display the proper resistor on
RS-485 2W bus under specified baud rate
-d baud Diagnose and display the error status when
negotiating on RS-485 2W bus under specified baud rate
-v Show MOXA MUE series device board slot number and VM-Compatible information
-v enable board_number Enable/Disable VM-Compatible with board number(only available for specific model)
intf RS232 RS-232 mode
RS422 RS-422 mode
RS4852W RS-485 2 wire mode
RS4854W RS-485 4 wire mode
value NONTERM None terminator resistor
120TERM 120ohm terminator resistor
state 150K disable pull high/low resistor (150K ohm)
1K enable Pull high/low resistor (1K ohm)
baud 921600 Baud rate = 921600
460800 Baud rate = 460800
230400 Baud rate = 230400
115200 Baud rate = 115200
57600 Baud rate = 57600
38400 Baud rate = 38400
19200 Baud rate = 19200
9600 Baud rate = 9600
enable 1 Enable VM-Compatible
0 Disable VM-Compatible
board_number Get this information by the command "muestty -v"
For example:
To set the interface
# muestty -i RS422 /dev/ttyMUE1
To set the terminator resistor
# muestty -t 120TERM /dev/ttyMUE1
To diagnose whether the setting is correct or not
# muestty -d 115200 /dev/ttyMUE1
Note: If Alarm Status shows Fail, then there are problems with the
setting. Do the auto-tuning process with the following command.
To run the auto-tuning process and get the proper resistor values
# muestty -a 115200 /dev/ttyMUE1
To enable specific device running in VM
Step 1. Get the device board_number
# muestty -v
Step 2. Enable VM-Compatible with board_number
# muestty -v 1 1
Note: These steps must be set in physical computer.
-----------------------------------------------------------------------------
5. Setserial
Supported Setserial parameters are listed as below.
uart set UART type(16450-->disable FIFO, 16550A-->enable FIFO)
close_delay set the amount of time(in 1/100 of a second) that DTR
should be kept low while being closed.
closing_wait set the amount of time(in 1/100 of a second) that the
serial port should wait for data to be drained while
being closed, before the receiver is disable.
spd_hi Use 57.6kb when the application requests 38.4kb.
spd_vhi Use 115.2kb when the application requests 38.4kb.
spd_shi Use 230.4kb when the application requests 38.4kb.
spd_warp Use 460.8kb when the application requests 38.4kb.
spd_normal Use 38.4kb when the application requests 38.4kb.
-----------------------------------------------------------------------------
6. Non-standard baud rate
To set non-standard baud rate, you can follow the belowe programming guide.
Programming guide for special baud rate:
- Define the I/O control code.
#define MOXA_SET_SPECIAL_BAUD_RATE 0x44D
- Using the ioctl() API to set non-standard baud rate after
setting the termios parameters.
int baud;
baud = 500000; /* set the non-standard baud rate */
...
tcsetattr(fd,TCSANOW,&t);
ioctl(fd, MOXA_SET_SPECIAL_BAUD_RATE, &baud);
-----------------------------------------------------------------------------
7. How to sign the driver with a cypher key to support a platform that enables a secure
boot
When your company or you have a platform with the secure boot function enabled, you
may consider to install a driver with a signed cypher. There are two approaches for
key generation and you will need to sign the driver to install it to the platform:
1. To apply a public/private key generated by a third-party certificate authority, or
2. To apply a public/private key generated by your company’s internal server.
Approach 2 is a less costly and secure way if you use the pair of keys internally
(within the company). If you will use the key on the Internet, Moxa recommends the
Approach 1.
The following steps are the guidance of signing the driver:
1. Create a configuration file for generating the key pair
2. Enrolling the public key
3. Signing the module
4. Loading the signed module
7.1 Create a configuration file for generating the key pair
x509.genkey
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
#O = Unspecified company
CN = Build time autogenerated kernel key
#emailAddress = unspecified.user@unspecified.company
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
• Use the following command to generate an X.509 key pair.
# openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509.genkey
-outform DER -out my_signing_key_pub.der -keyout my_signing_key.priv
The keypair will be stored as my_signing_key_pub.der and my_signing_key.priv.
my_signing_key_pub.der is the public key file.
my_signing_key.priv is the private key file.
The two files will be used when signing the module.
7.2 Enrolling the public key
• Use the following command to enroll the public key
# mokutil --import my_signing_key_pub.der
You will be asked to enter a password that will be used in MokManager later.
• Reboot the machine
When the system reboot, the MokManager will be loaded.
• Choose “Eroll MOK”
MokManager will ask you enter the password you typed in earlier when running mokutil.
7.3 Signing the module
Using the following command to sign the module.
# /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 my_signing_key.priv
my_signing_key_pub.der mxpcie.ko
or
# /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 my_signing_key.priv
my_signing_key_pub.der mxser.ko
You can validate that the module is signed by checking that it includes the string
“~Module signature appended~” by the following command.
# hexdump -Cv my_module.ko | tail -n 5
00010c30 f8 61 31 0e 53 39 2c 8b 91 b2 98 63 d1 dc 00 00 |.a1.S9,....c....|
00010c40 02 00 00 00 00 00 00 00 02 9e 7e 4d 6f 64 75 6c |..........~Modul|
00010c50 65 20 73 69 67 6e 61 74 75 72 65 20 61 70 70 65 |e signature appe|
00010c60 6e 64 65 64 7e 0a |nded~.|
00010c66
7.4 Loading the signed module
• Copy module to kernel
After signing the module, you can copy the module to the kernel module directory that
you want.
For example:
# cp my_module.ko /lib/modules/$(uname -r)/kernel/drivers/char/
• Update the modular dependency list
# depmod -a
• Load the kernel module
# modprobe mxupcie
or
# modprobe mxser
-----------------------------------------------------------------------------
8. Troubleshooting
8.1 Error messages
The boot time error messages and solutions are stated as clearly as
possible. If all the possible solutions fail, please contact our technical
support team to get more help.
Error msg: More than 4 Moxa Smartio/Industio family boards found. Fifth
board and after are ignored.
Solution:
To avoid this problem, please unplug fifth and after board, because of Moxa
driver supports up to 4 boards.
Error msg: Request_irq fail, IRQ(?) may be conflict with another device.
Solution:
Other PCI or ISA devices occupy the assigned IRQ. If you are not sure
which device causes the situation, please check /proc/interrupts to find
free IRQ and simply change another free IRQ for Moxa board.
Error msg: Board #: C1xx Series(CAP=xxx) interrupt number invalid.
Solution:
Each port within the same multiport board shares the same IRQ. Please set
one IRQ (IRQ doesn't equal to zero) for one Moxa board.
Error msg: No interrupt vector be set for Moxa ISA board(CAP=xxx).
Solution:
Moxa ISA board needs an interrupt vector. Please refer to user's manual
"Hardware Installation" chapter to set the interrupt vector.
Error msg: Couldn't install MOXA Smartio/Industio family driver!
Solution:
Load Moxa driver fails, the major number may conflict with other devices.
Please refer to previous section 3.7 to change a free major number for
Moxa driver.
Error msg: Couldn't install MOXA Smartio/Industio family callout driver!
Solution:
Load Moxa callout driver fail, the callout device major number may
conflict with other devices. Please refer to previous section 3.7 to
change a free callout device major number for Moxa driver.
8.2 Baud rate mismatch when using MUE series PCI Express multiport board.
This is a problem of the build-in kernel module or driver.
Please run the script in the following file path.
mxser/driver/moxa_unbind
The script will unbind build-in module or driver, and reactive MOXA device
driver mxupcie. You can following the following step to run script
automatically on your system boot.
Step 1. Using crontab for scheduling the job.
# crontab -e
Step 2. type the following command on the last line
@reboot sh <THE_FULL_PATH_OF_THIS_DRIVER>/mxser/driver/unbindin
8.3 /dev/ppp device always try to reconnect while dail-in/dail-out
This is a problem of the PCI device latency. Please follow below steps
to reduce latency by disabling FIFO.
# setserial /dev/ttyMx uart 16450
You can refer to the "5. Setserial" for more detail about how to
enable/disable FIFO setting.
8.4 MOXA PCIE device can't read/write data in virtual machine.
Please follow below steps to enable MOXA PCIE device VM-Compatible.
Note: The following steps MUST be configure in physical computer with
linux operating system. If you execute these commands in virtual
machine, these configurations may not work correctly.
Step 1. Use muestty, the utility contain in this driver, to get the
device board_number
# muestty -v
Step 2. Enable VM-Compatible with board_number
# muestty -v 1 <board_number>
-----------------------------------------------------------------------------