For discussions about development of TAPs, patches and other software for the Toppy

Moderator: Technical

Post Reply
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

tom3q wrote:Are you sure that it should be 115?
Toppy hardware uses IRQ 115 for IDE interrupts (see above in the thread).
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

DeadBeef wrote:
tom3q wrote:Are you sure that it should be 115?
Toppy hardware uses IRQ 115 for IDE interrupts (see above in the thread).
Weird. According to the IRQ map it belongs to the IRQ of GPIO 43.
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

IRQ 115 (ZPIO 43) is the one the PIO mode worked before with.

The reason for hanging was a failed patch of setup.c with respect to masking both IDE interrupts (Toppy-specific). That caused spurious interrupts as soon as the drive raised an interrupt. After correcting the patch the boot process proceeded as follows:

Code: Select all

ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
hda: ASSMNU GPS8020 N, ATA DISK drive
ide0 at 0x2d22-0x2d29,0x2d5b on irq 115
hda: attached ide-disk driver.
hda: 0 sectors (0 MB) w/8KiB Cache, CHS=65343/0/0
hda: INVALID GEOMETRY: 0 PHYSICAL HEADS?
emma_ide_init_module
emma_ide_register
emma_ide_init_hwif
emma_ide_init_hwif: Configuring HWIF 0
emma_ide_hw_setup: Running in MPX mode
and then froze. The drive info is corrupted because the first reads bypass the EMMA specific iops.

When loading emma_dma.o into my kernel I get lots of error messages:

Code: Select all

# insmode emma-dma.o
insmod: local symbol emma-dma.c with index 10 exceeds local_symtab_size 10
insmod: local symbol __module_license with index 15 exceeds local_symtab_size 10
insmod: local symbol __module_kernel_version with index 20 exceeds local_symtab_size_10
This usually indicates problems with binutils. I am using binutils 2.17.
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

MPX mode. It's strange, because according to some information i've got, MPX mode means that the chip has a hardware bug breaking something in IDE subsystem... Stay tuned, I will do some research on that.

Did you remove some code from arch/mips/emma/setup.c? There should be two lines detecting whether to use SEP2 or MPX mode:

Code: Select all

        if(*EMMA_BHIF_STRAP_2 & 0x200000)
                emma_ide_sep2 = 1
You can try to manually set emma_ide_sep2 to 1 in setup.c to force using SEP2 mode.
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

tom3q wrote:MPX mode. It's strange, because according to some information i've got, MPX mode means that the chip has a hardware bug breaking something in IDE subsystem... Stay tuned, I will do some research on that.

Did you remove some code from arch/mips/emma/setup.c? There should be two lines detecting whether to use SEP2 or MPX mode:

Code: Select all

        if(*EMMA_BHIF_STRAP_2 & 0x200000)
                emma_ide_sep2 = 1
You can try to manually set emma_ide_sep2 to 1 in setup.c to force using SEP2 mode.
No, I have not removed these lines. I also tried to comment out the call to emma_ide_hw_setup(). But the kernel still did not boot.

The problem with exceeding local_symtab_size can be manually fixed by calling

Code: Select all

mips-ld -r -o emma_dmaOK.o emma_dma.o
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

The good news is that I could get DMA working with my kernel/IDE driver as described by tom3q (insmod rtos; insmod dma; insmod emma_dma). I can see 2.5 faster read access to the disk in UDMA2 mode (I could not activate higher modes). Measurement of the actual transfer rate is not possible - see below.

The bad news is that the kernel crashes even with DMA when reading large amounts of data from disk (> 4000 blocks). I actually installed most of the MMU patches used by tom3q - obviously to no avil.

One essential difference between the working (Kaon) and crashing (Toppy) configurations is that in the former the linux kernel is loaded from flash and executed on a cleanly reset hardware. To reproduce that with the Toppy it would be necessary to flash vmlinux and to install a harddisk with an ext2 partition.
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

Have you tried to comment the following code?

Code: Select all

	if(!emma_ide_sep2) {
		printk(KERN_INFO "emma_ide_hw_setup: Running in MPX mode\n");
		*EMMA_BHIF_STRAP_WRITE_2 &= ~&#40;&#40;1<<1&#41; | &#40;1<<6&#41;&#41;;
		*EMMA_ZPIO_PORT_DIRECTION_0 |= 1<<10;
		*EMMA_ZPIO_PORT_DATA_0 |= 1<<10;
		temp = *EMMA_BHIF_STRAP_WRITE_2;
		temp &= ~&#40;&#40;1<<19&#41;|&#40;1<<21&#41;|&#40;1<<27&#41;&#41;;
		temp |= 1<<7;
		*EMMA_BHIF_STRAP_WRITE_2 = temp;
	&#125; else &#123;
		printk&#40;KERN_INFO "emma_ide_hw_setup&#58; Running in SEP2 mode\n"&#41;;
	&#125;
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

tom3q wrote:Have you tried to comment the following code?
I commented out the call to emma_ide_hw_setup() which contains this code. Didn't work.
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

DeadBeef wrote:
tom3q wrote:Have you tried to comment the following code?
I commented out the call to emma_ide_hw_setup() which contains this code. Didn't work.
The emma_ide_hw_setup() function is needed to initialize the hardware properly... Just try to comment those lines.
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

tom3q wrote:The emma_ide_hw_setup() function is needed to initialize the hardware properly... Just try to comment those lines.
The hardware has already been initialized to a valid state. There seems to be an interface registration problem causing a freeze (with and without emma_ide_hw_setup()).
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

DeadBeef wrote:
tom3q wrote:The emma_ide_hw_setup() function is needed to initialize the hardware properly... Just try to comment those lines.
The hardware has already been initialized to a valid state. There seems to be an interface registration problem causing a freeze (with and without emma_ide_hw_setup()).
Just give it a try...
newsy13
Posts: 3
Joined: Thu Apr 10, 2008 9:48 pm

Your Kernel on a Galaxis LinuxTV

Post by newsy13 »

Hello, i am an owner of a Galaxis LinuxTV, also an emma2 machine. This is the STB tom3q has the prop. modules from. I follow your work for a long time. You do a GREAT JOB!

Allthough the LinuxTV has Linux on it, there is no source code for the kernel or the prop. modules. The company galaxis is bancrupt, so there is no one to get new Version. The last offical image is from 2004.

I patched the bootloader to accept modified Images and have an Image with busybox 1.6.1, dropbear and vsftpd. But system has two problems: the cu1216 cable driver does not support qam256, and the viewing software zappa is not really good.

So i am interessted on your development for emma2.

I got the tom3q kernel to run on the LinuxTV. Heres the Output when starting from the org flash image (with busybox 0.60.5)

Code: Select all

===================================================
LinuxTV Galaxis EMMA2 bootloader V0.8
build date&#58; Dec 21 2003 19&#58;40&#58;26
Copyright &#40;C&#41; 2002 Convergence gmbH
===================================================
L&#58; 1.21 F&#58; 1.37 G&#58; 1.132 M&#58; 1.46 H&#58; 1.7 I&#58; 1.60 B&#58; 1.33 D&#58; 1.11

FlashInit&#58; fsm=1, size=0x800000
FlashInit&#58; Flash0 AM29DL640T &#40;8M x 8&#41; typ=6, did=0x227e, s=1f800000, l=800000
FlashInit&#58; Flash1 AM29DL640T &#40;8M x 8&#41; typ=6, did=0x227e, s=1f000000, l=800000
PT Flash configuration for 0001&#58;227e & 0001&#58;227e set!


Initializing TV output on RF channel 38 ...

DEBUG&#58; Init I2C
SCART setup OK
setup_rf_modulator failed setting up RF modulator @ addr 0x65!
DEBUG&#58; I2C init done! Init framebuffer
DEBUG&#58; Framebuffer init done! Unpacking logo ...
DEBUG&#58; Logo unpacked.
Doing bootloader integrity check ... passed.

Press 'T' to start a standard kernel in factory test mode NOW!
Press 'C' to start a standard kernel with special parameters NOW!
Press 'c' to start an essu kernel with special parameters NOW!
Press 'M' to enter the menu NOW!
Press 'D' to upload software NOW!
Press 'E' to do an emergency update NOW!
Press 'S' to send a config NOW!
Press 'H' to test the hardware NOW!

Key for ESSU was pressed!

Doing SHA-1 check of bootimage ... passed!
No CRAMFS or SQUASHFS detected for skipping ...
Copying 1036288 bytes Kernel from 0x00030000 logical to RAM@0x81e00000 ..
Booting "Convergence ESSU for EMMA2" version "Build 2" ...
DEBUG&#58; calling startFunc@0x81e00000 &#40;argc, argv, NULL&#41;;
DEBUG&#58;   argc  = 8
DEBUG&#58;   argv  = 0x80000900
DEBUG&#58;   argv&#91;0&#93;@0x80000400 = "mtdparts=lolvl_partition_info_0&#58;8192k@0k&#40;linuxtv0&#41;;lolvl_partition_info_1&#58;8k@0k&#40;cfg0&#41;.8k@8k&#40;cfg1&#41;.8k@16k&#40;cfg2&#41;.8k@24k&#40;cfg3&#41;.32k@32k&#40;free32k&#41;.1024k@64k&#40;essu&#41;.3008k@1088k&#40;linuxtv1&#41;.128k@4096k&#40;bootloader&#41;.2944k@4224k&#40;linuxtv2&#41;.1024k@7168k&#40;ufs&#41;;highlvl_partition_info&#58;128k&#40;bootloader&#41;.8k&#40;cfg0&#41;.8k&#40;cfg1&#41;.8k&#40;cfg2&#41;.8k&#40;cfg3&#41;.32k&#40;flash32k&#41;.1024k&#40;essu&#41;.1024k&#40;ufs&#41;.-&#40;LinuxTV&#41;;flash_info&#58;8192k@507904k&#40;chip0&#41;.8192k@516096k&#40;chip1&#41;"
DEBUG&#58;   argv&#91;1&#93;@0x9f804a60 = "ltv-mac-eth0=00&#58;09&#58;dc&#58;00&#58;08&#58;1e"
DEBUG&#58;   argv&#91;2&#93;@0x9f804a80 = "ltv-hwid=0x0009dcff0001"
DEBUG&#58;   argv&#91;3&#93;@0x9f804a98 = "ltv-roothash0=0x432265e4456a49e054554f2d4a0039188a23c09e"
DEBUG&#58;   argv&#91;4&#93;@0x9f804ad1 = "ltv-roothash1=0x2cba2f9a284c4d9e427068ccb27dd01250b3336c"
DEBUG&#58;   argv&#91;5&#93;@0x9f804b0a = "ltv-roothash2=0x4e7bce74c9ab6ab60b19218c0f51cbaefdb8063c"
DEBUG&#58;   argv&#91;6&#93;@0x9f804b7c = "ltv-ssu-uri0=http&#58;//192.168.1.6/emma2_pvr.idas"
DEBUG&#58;   argv&#91;7&#93;@0x9f8050b4 = "console=ttyS0,115200N8 rootfstype=cramfs root=1f08"
DEBUG&#58;  &#40;argv&#91;8&#93;@0x0 = "&#40;null&#41;"&#41;
DEBUG&#58;  ----------------------------------------------------------------
Uncompressing Linux... 
Ok, booting the kernel.
CPU revision is&#58; 00000c72
Primary instruction cache 16kB, physically tagged, direct mapped, linesize 16 bytes.
Primary data cache 8kB, direct mapped, linesize 16 bytes.
Linux version 2.4.29-emma2 &#40;bedi@linux&#41; &#40;gcc-Version 3.4.6&#41; #27 Mi 9. Apr 23&#58;25&#58;25 CEST 2008
NEC EMMA2 Version 4.1.1.3.0
Strap settings 0x00002d41 0x0020014a 0x00002d41 0x0020116a
Kernel loaded at 0x80b00000
Reserved 11 MB of memory for UMA/DMA buffers at 0x80001000 - 0x80ab2000.
ATASEP2 mode
io.h&#58; setting mips_io_port_base to 0xb0010000
Determined physical RAM map&#58;
 memory&#58; 04000000 @ 00000000 &#40;usable&#41;
On node 0 totalpages&#58; 16384
zone&#40;0&#41;&#58; 16384 pages.
zone&#40;1&#41;&#58; 0 pages.
zone&#40;2&#41;&#58; 0 pages.
Kernel command line&#58; mtdparts=lolvl_partition_info_0&#58;8192k@0k&#40;linuxtv0&#41;;lolvl_partition_info_1&#58;8k@0k&#40;cfg0&#41;.8k@8k&#40;cfg1&#41;.8k@16k&#40;cfg2&#41;.8k@24k&#40;cfg3&#41;.32k@32k&#40;free32k&#41;.1024k@64k&#40;essu&#41;.3008k@1088k&#40;linuxtv1&#41;.128k@4096k&#40;bootloader&#41;.2944k@4224k&#40;linuxtv2&#41;.1024k@7168k&#40;ufs&#41;;highlvl_partition_info&#58;128k&#40;bootloader&#41;.8k&#40;cfg0&#41;.8k&#40;cfg1&#41;.8k&#40;cfg2&#41;.8k&#40;cfg3&#41;.32k&#40;flash32k&#41;.1024k&#40;essu&#41;.1024k&#40;ufs&#41;.-&#40;LinuxTV&#41;;flash_info&#58;8192k@507904k&#40;chip0&#41;.8192k@516096k&#40;chip1&#41; ltv-mac-eth0=00&#58;09&#58;dc&#58;00&#58;08&#58;1e ltv-hwid=0x0009dcff0001 ltv-roothash0=0x432265e4456a49e054554f2d4a0039188a23c09e ltv-roothash1=0x2cba2f9a284c4d9e427068ccb27dd01250b3336c ltv-roothash2=0x4e7bce74c9ab6ab60b19218c0f51cbaefdb8063c ltv-ssu-uri0=http&#58;//192.168.1.6/emma2_pvr.idas console=ttyS0,115200N8 rootfstype=cramfs root=1f08
Using 20.813 MHz high precision timer.
Console&#58; colour dummy device 80x25
-> serial_console_init
-> serial_console_setup
<- serial_console_setup
<- serial_console_init
Calibrating delay loop... 165.88 BogoMIPS
Memory&#58; 51108k/65536k available &#40;1948k kernel code, 14428k reserved, 128k data, 104k init, 0k highmem&#41;
Dentry cache hash table entries&#58; 8192 &#40;order&#58; 4, 65536 bytes&#41;
Inode cache hash table entries&#58; 4096 &#40;order&#58; 3, 32768 bytes&#41;
Mount cache hash table entries&#58; 512 &#40;order&#58; 0, 4096 bytes&#41;
Buffer cache hash table entries&#58; 4096 &#40;order&#58; 2, 16384 bytes&#41;
Page-cache hash table entries&#58; 16384 &#40;order&#58; 4, 65536 bytes&#41;
Checking for 'wait' instruction...  unavailable.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Journalled Block Device driver loaded
devfs&#58; v1.12c &#40;20020818&#41; Richard Gooch &#40;rgooch@atnf.csiro.au&#41;
devfs&#58; boot_options&#58; 0x1
Installing knfsd &#40;copyright &#40;C&#41; 1996 okir@monad.swb.de&#41;.
Console&#58; switching to colour frame buffer device 80x36
fb0&#58; EMMA OSD frame buffer device, PAL mode.
fb1&#58; EMMA OSD frame buffer device, PAL mode.
pty&#58; 256 Unix98 ptys configured
Serial driver version 5.05c &#40;2001-07-08&#41; with MANY_PORTS enabled
ttyS00 at 0xb2001000 &#40;irq = 56&#41; is a 16550A
ttyS01 at 0xb2002000 &#40;irq = 57&#41; is a 16550A
RAMDISK driver initialized&#58; 16 RAM disks of 16384K size 1024 blocksize
loop&#58; loaded &#40;max 8 devices&#41;
Uniform Multi-Platform E-IDE driver Revision&#58; 7.00beta4-2.4
ide&#58; Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
hda&#58; OTHSBI AKM0161AG P, ATA DISK drive
ide0 at 0x2d22-0x2d29,0x2d5b on irq 13
hda&#58; attached ide-disk driver.
hda&#58; 0 sectors &#40;0 MB&#41;, CHS=65343/0/0
hda&#58; INVALID GEOMETRY&#58; 0 PHYSICAL HEADS?
emma_ide_init_hwif&#58; Configuring HWIF 0
emma_ide_hw_setup&#58; Running in SEP2 mode
hda&#58; TOSHIBA MK1016GAP, ATA DISK drive
ide0 at 0x2d22-0x2d29,0x2d5b on irq 13
hda&#58; attached ide-disk driver.
hda&#58; host protected area => 1
hda&#58; 19640880 sectors &#40;10056 MB&#41;, CHS=19485/16/63
Partition check&#58;
 /dev/ide/host0/bus0/target0/lun0&#58; &#91;PTBL&#93; &#91;1299/240/63&#93; p1 p2
emma_ide_register&#58; Got HWIF 0
emma_ide_register&#58; Interface registered succesfully
SCSI subsystem driver Revision&#58; 1.00
kmod&#58; failed to exec /sbin/modprobe -s -k scsi_hostadapter, errno = 2
LinuxTV MTD Mapping Driver
LinuxTV MTD - request whole Flash Space
LINUXTV MTD - Probing Flash Bank #0
lolvl_partition_info_0&#58; Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
lolvl_partition_info_0&#58; CFI does not contain boot bank location. Assuming top.
number of CFI chips&#58; 1
cfi_cmdset_0002&#58; Disabling erase-suspend-program due to code brokenness.
LINUXTV MTD - Probing Flash Bank #1
lolvl_partition_info_1&#58; Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
lolvl_partition_info_1&#58; CFI does not contain boot bank location. Assuming top.
number of CFI chips&#58; 1
cfi_cmdset_0002&#58; Disabling erase-suspend-program due to code brokenness.
1 cmdlinepart partitions found on MTD device lolvl_partition_info_0
mtd_parts_nb=1
Using command line partition definition
Creating 1 MTD partitions on "lolvl_partition_info_0"&#58;
0x00000000-0x00800000 &#58; "linuxtv0"
10 cmdlinepart partitions found on MTD device lolvl_partition_info_1
mtd_parts_nb=10
Using command line partition definition
Creating 10 MTD partitions on "lolvl_partition_info_1"&#58;
0x00000000-0x00002000 &#58; "cfg0"
0x00002000-0x00004000 &#58; "cfg1"
0x00004000-0x00006000 &#58; "cfg2"
0x00006000-0x00008000 &#58; "cfg3"
0x00008000-0x00010000 &#58; "free32k"
0x00010000-0x00110000 &#58; "essu"
0x00110000-0x00400000 &#58; "linuxtv1"
0x00400000-0x00420000 &#58; "bootloader"
0x00420000-0x00700000 &#58; "linuxtv2"
0x00700000-0x00800000 &#58; "ufs"
Concatenating MTD devices&#58;
&#40;0&#41;&#58; "bootloader"
&#40;1&#41;&#58; "cfg0"
&#40;2&#41;&#58; "cfg1"
&#40;3&#41;&#58; "cfg2"
&#40;4&#41;&#58; "cfg3"
&#40;5&#41;&#58; "free32k"
&#40;6&#41;&#58; "essu"
&#40;7&#41;&#58; "ufs"
&#40;8&#41;&#58; "linuxtv0"
&#40;9&#41;&#58; "linuxtv1"
&#40;10&#41;&#58; "linuxtv2"
into device "highlvl_partition_info"
9 cmdlinepart partitions found on MTD device highlvl_partition_info
mtd_parts_nb=9
Using command line partition definition
Creating 9 MTD partitions on "highlvl_partition_info"&#58;
0x00000000-0x00020000 &#58; "bootloader"
0x00020000-0x00022000 &#58; "cfg0"
0x00022000-0x00024000 &#58; "cfg1"
0x00024000-0x00026000 &#58; "cfg2"
0x00026000-0x00028000 &#58; "cfg3"
0x00028000-0x00030000 &#58; "flash32k"
0x00030000-0x00130000 &#58; "essu"
0x00130000-0x00230000 &#58; "ufs"
0x00230000-0x01000000 &#58; "LinuxTV"
Linux video capture interface&#58; v1.00
NET4&#58; Linux TCP/IP 1.0 for NET4.0
IP Protocols&#58; ICMP, UDP, TCP
IP&#58; routing cache hash table of 512 buckets, 4Kbytes
TCP&#58; Hash tables configured &#40;established 4096 bind 8192&#41;
NET4&#58; Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS&#58; Mounted root &#40;cramfs filesystem&#41; readonly.
Mounted devfs on /dev
Freeing unused kernel memory&#58; 104k freed
init started&#58;  BusyBox v0.60.5 &#40;2004.11.23-03&#58;46+0000&#41; multi-call binary
Algorithmics/MIPS FPU Emulator v1.5
Failed to open frontpanel device&#58; No such file or directory
loading frontpanel module... insmod&#58; /lib/modules/2.4.29-emma2&#58; No such file or directory
Using /lib/modules/2.4.22-emma2_pvr20041123042009+0100-cim41/emma2-cim/emma2fp.o
insmod&#58; unresolved symbol input_register_deviceinsmod&#58; unresolved symbol emma2_atasep2insmod&#58; unresolved symbol input_unregister_deviceinsmod&#58; unresolved symbol input_event

..... and so on as the rc script tries to load original modules...

The kernel also booted with the rootfs on the harddisk!!! Large filetransfers work!

If i can be of any help let me know. I could post a capture booting the original kernel or post a Disasm of the original Kernel with some symbols.


Keep up the good work.

newsy13...
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

newsy13:
I'm glad that you like my work. At the moment i'm moving my project to 2.6.24 kernel as 2.6 kernels are much cleaner, have better documentation and it's easier to write drivers for them. There is one thing that would be useful. I would be very happy if you could do a dump of the bootloader.
DeadBeef
Frequent contributor
Posts: 264
Joined: Mon Jan 09, 2006 7:28 pm

Post by DeadBeef »

tom3q wrote:Just give it a try...
I gave it a try - same result.

BTW, I noticed that linux reports very different strap values on the Toppy (compared to the Galaxis box):

Code: Select all

NEC EMMA2 Version 4.1.0.3.0
Strap settings 0x00002d41 0x000001ca 0x00002d41 0x000000fa
Do you have more info on that?
tom3q
Regular contributor
Posts: 53
Joined: Thu Mar 06, 2008 6:25 pm

Post by tom3q »

Kaon's straps:

Code: Select all

NEC EMMA2 Version 4.1.0.3.0
Strap settings 0x00002d33 0x0020014b 0x00002d33 0x0020014f
Bit 21 (bitmask 0x200000) means that the IDE controller is using SEP2 mode.

I think that the IDE problem on Toppies is related to MPX mode, but i still don't know what exactly it is. There must be some additional initialization steps needed for MPX mode.
Post Reply