Saturday, April 9, 2016

Experience with Icom IC-7300

The IC-7300 arrived about April 1.  The IC-9100 came off the shelf above the computer desk and the IC-7300 went in it's place.

The hamlib-3.2 drivers with IC-7300 support got installed today, some comments...

  • The IC-7300 only supports a narrow bandwidth SSB digital mode option.  On the IC-9100 the SSB digital mode with selectable bandwidth that covered both the JT-65A and JT9 mode frequencies. But the IC-7300 reduces the bandwidth to 1200 Hz, which doesn't even cover the JT65 spectrum.
  • The IC-7300 has limitations on the source of Tx audio.  The source is selectable in digital mode or in non-digital mode.  WSJT-X wants the source set to USB to use the internal sound interface.  This means that to switch operation between microphone SSB and WSJT-X, the operator has to use menu screens to switch the Tx source between the microphone and internal USB sound card.

Monday, May 4, 2015

Icom IC-9100 USB interface and WSJT-X under linux

First, downloaded the latest Beta WSJT-X for Ubuntu, Version 1.5-rc1.  Then plugged in the USB cable into my Ubuntu 15.04 desktop.  This produced three devices, one sound card and two serial ports.  Here a snip from the lsusb utility...

Bus 007 Device 017: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

Bus 007 Device 016: ID 08bb:2901 Texas Instruments PCM2901 Audio Codec

Bus 007 Device 015: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

The sound card has a different name in the WSJT-X setting display

alsa_input.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00-CODEC.analog-stereo
alsa_output.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00-CODEC.analog-stereo



Two new serial ports appeared ttyUSB0 and ttyUSB1.  Specifying /dev/ttyUSB0 in Settings made the CAT work right away

The sound card also worked right away.  But the level from the 9100 seems about 30 dB too high and the input level slider needs to be placed almost all the way to the bottom.

It took a while to get the USB Tx modulation working.  The 9100 has a setting to specify the source of modulation from the USB sound card. Settings number 58 and 59 set Data Off Modulation input and Data On Modulation input. Set both to USB.

WSJT-X can use either SSB or SSB Digital mode.  On the 9100, access digital mode with a long press on the SSB key, in WSJT-X it's controlled in settings.

By using Digital Mode, The Rx bandwidth can be set to 3.6 KHz and the passband tuners can shift the bandwidth up 300 Hz to cover most of the JT9 portion of the band.

It's not possible to extend the Tx bandwidth above 2.9 KHz, so WSJT-X uses the "fake it" mode to shift the Tx frequency to the best range.

Sunday, April 26, 2015

IC-9100 Transverter Input Modification

I drilled holes in my nice new Icom IC-9100.  This modification brings the path from Tx/Rx relay to Rx out to SMA connectors.  With a jumper across the SMAs, the radio works as before, but it also enables a transverter to feed the receiver directly without risk of damage from the transmitter.

The SMA bulkhead connectors mount using 2-56 screws into tapped holes in the casting.


The bulkhead connector originally had semirigid coax soldered in, but pulled that off and resoldered it with UG-141 teflon coax. At the other end, mounted Taiko Denki TMP-K01X-A1 connectors, the same ones used by Icom for the internal jumpers.  Those are available on Ebay.  They normally use a crimp, but had no problem soldering them after some careful work stripping with an Xacto knife.


The original cable is tie-wrapped in place to allow restoration to original condition (except for the small tapped holes.

Sunday, December 28, 2014

Amplifier Simulator using Solderable Magnet Wire

The solid state amplifier controller has some interest and I'm back to working on the code.  The lack of a test environment lead to creating an amplifier simulator

  • 6 adjustable pots (4 usable with serial LCD)
  • 3 LEDs to indicate the state of the sequencer
  • 1 LED to indicate the state of the meter drive
  • 1 pushbutton to key the "amplifier"
The photo below shows the amplifier simulator shield.  The wires coming out the top connect to a serial LCD.

Amplifier Simulator Proto Shield















The construction technique used an experiment with solderable magnet wire.  There was a roll of #30 on the bench and a quick test showed that a soldering iron melts the insulation away and tins the copper.  

Amplifier Proto Backside Wired with #30 Solderable Magnet Wire
This approach saved a lot time on stripping and cutting to length.  Making multiple connections, like to a series of grounds, just takes tacking the end and then running the wire loosely past the other connection points and on to ground.

The insulation remains intact everywhere but under the solder joint.  A good joint shows a meniscus of solder where wire enters the solder pool.

The picture below shows the Amplifier simulator in operation with the 20x4 serial LCD.  The pots set the temperature, drain current, forward and reverse power.  Drain Voltage and Supply voltage use analog pins 4 and 5 which are shared with the I2C bus.  So, Vs doesn't get displayed and Vd is set in the code to a constant.  At this point the bar graph shows forward power, but the Pf read out is shutoff.
Amplifier Simulator With Key Button Pushed


Tuesday, December 9, 2014

Publish SSPA Building blocks Design and Code

The three SSPA building block projects went up to Google Drive for more general release.
  • Amplifier controller, protection, and sequencer
  • Directional Coupler and Power Meter
  • PIN Diode SSPA input protection Switch
These projects use Eagle for schematic capture and board design.  The Amplifier Controller and Power Meter use Arduino Uno and software.

Thursday, September 20, 2012

Compiling map65 for LInux, Ubuntu 12.04

Joe says...

First, compile the library libm65.a

$ cd libm65
$ make 


Which results in an error on my Ubuntu 12.04 machine...

m65a.F90:45.9:

  p_m65=>address_m65()
         1
Error: The pointer object 'address_m65' at (1) must have an explicit function interface or be declared as array


Ok...I've been stumped at this point before.  At the top of the m65a.F90 file, there's hint.

! NB: this interface block is required by g95, but must be omitted
!     for gfortran.  (????)

#ifndef UNIX
  interface
     function address_m65()
     end function address_m65
  end interface
#endif


Switching the state of the #ifndef produces a different result...
 
gfortran -c -fno-second-underscore -DUNIX m65a.F90
m65a.F90:45.9:

  p_m65=>address_m65()
         1
Error: Target expression in pointer assignment at (1) must deliver a pointer result


This site had a useful definition of pointers and functions returning pointers
     http://w3.pppl.gov/~hammett/comp/f90tut/f90.tut6.html

Well, after some fooling around, it complies.  First, define the return parameters for address_m65 with the interface block function definition.  Then remove the other reference defining address_m65  as a pointer.  Lastly, define the p_m65 points as an array.

===================================================================
--- m65a.F90    (revision 2591)
+++ m65a.F90    (working copy)
@@ -3,16 +3,17 @@
 ! NB: this interface block is required by g95, but must be omitted
 !     for gfortran.  (????)

-#ifndef UNIX
+#ifdef UNIX
   interface
      function address_m65()
+     integer*1, pointer :: address_m65(:)
      end function address_m65
   end interface
 #endif
  
   integer*1 attach_m65,lock_m65,unlock_m65
   integer size_m65
-  integer*1, pointer :: address_m65,p_m65
+  integer*1, pointer :: p_m65(:)
   character*80 cwd
   logical fileExists

   common/tracer/limtrace,lu


Wednesday, September 19, 2012

Fix for map65iq for latest gfortran

Posted to the WSJT and linrad mail lists...
 
According to
     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52860,
gfortran revisions later than v4.4 handles writes to files at EndOfFile more strictly.

ftn_init.f90 reads to the end of ALL65.TXT file and leaves the file position just _after_ the EOF mark.  On my Ubuntu 12.04 system, Map65iq quits with the error...

    At line 56 of file decode1.f90 (unit = 21, file = 
'/home/jeff/ham/wsjt/branches/map65iq/ALL65.TXT')
    Fortran runtime error: Sequential READ or WRITE not allowed after EOF marker, possibly use REWIND or BACKSPACE

I fixed this by adding a backspace command to just before the decode1.f90 subroutine writes out the ALL65.TXT date line.  This positions the file pointer to just before the EOF mark.  See the patch below...

jeff, wa1hco

===================================================================
--- decode1.f90    (revision 2591)
+++ decode1.f90    (working copy)
@@ -50,6 +50,10 @@
       rewind 21
       ns0=999999
    endif
+
+! wa1hco: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52860
+  backspace(21)
+
    if(n.lt.ns0 .and. utcdate(1:1).eq.'2') then

       call cs_lock('decode1a')