mcHF v0.7 UHSDR(ver 2.9.13) ソフトウエアの日本対応

mcHF の組み立てを始めた時に Logic ボードの動作確認のため https://github.com/df8oe/UHSDR にある mcHF のファームウエアを raspberry pi にダウンロード・ビルドして動作確認を行いました。ただし、このソースをそのまま使用しますと日本のアマチュアバンドにない 5MHz帯などが設定されていたりするため問題があります。

基本的にこのソフトは設計者がイギリスの方なのでリージョン1のバンドプランで設定されています。これを日本のバンドプランにあわせたいところですが、特に 3.8MHz帯 は発射可能な周波数の範囲が細切れでこれをすべて反映させるのはソフトウエアの修正箇所が非常に多くなります。ここではもともと 5MHz 帯の設定を 3.8MHz 帯にずらした対応でやりたいと思います。

ソースのハードコピーを掲載してわかりやすくしたいところですが、git の diff 表示で我慢してください。

行の頭に(-)マイナスついている行は修正前のもので、削除されたもの
行の頭に(+)プラスがついている行は修正後のもので、追加されたもの

■電源 ON 時のファームウエアバージョン表示文字サイズを小さくする

diff --git a/mchf-eclipse/drivers/ui/ui_driver.c b/mchf-eclipse/drivers/ui/ui_driver.c
index 2f90ec7f..4109115a 100644
--- a/mchf-eclipse/drivers/ui/ui_driver.c
+++ b/mchf-eclipse/drivers/ui/ui_driver.c
@@ -5616,7 +5616,7 @@ void UiDriver_StartUpScreenInit()
 #endif

        snprintf(tx,100,"%s%s","UHSDR Vers. ",UiMenu_GetSystemInfo(&clr,INFO_FW_VERSION));
-       nextY = UiLcdHy28_PrintTextCentered(ts.Layout->StartUpScreen_START.x, nextY + 8, 320, tx, Yellow, Black, 1);
+       nextY = UiLcdHy28_PrintTextCentered(ts.Layout->StartUpScreen_START.x, nextY + 8, 320, tx, Yellow, Black, 0);

        nextY = UiLcdHy28_PrintTextCentered(ts.Layout->StartUpScreen_START.x, nextY + 3, 320, "Firmware License: " UHSDR_LICENCE "\n
" UHSDR_REPO, White, Black, 0);

■バージョン番号に -JA を付与する

diff --git a/mchf-eclipse/src/uhsdr_version.h b/mchf-eclipse/src/uhsdr_version.h
index 63ba7176..e4eba8fe 100644
--- a/mchf-eclipse/src/uhsdr_version.h
+++ b/mchf-eclipse/src/uhsdr_version.h
@@ -28,7 +28,7 @@
 #endif

 // trailing characters are needed for identifying version and building date+time in binary
-#define            UHSDR_VERSION           "fwv-"UHSDR_VER_MAJOR"."UHSDR_VER_MINOR"."UHSDR_VER_RELEASE
+#define            UHSDR_VERSION           "fwv-"UHSDR_VER_MAJOR"."UHSDR_VER_MINOR"."UHSDR_VER_RELEASE"-JA"
 #define            UHSDR_BUILD_DAT         "fwt-"__DATE__ " - " __TIME__
 #define            UHSDR_LICENCE           "GNU GPLv3"
 #define     UHSDR_REPO              "github.com/df8oe/UHSDR"

■3.5MHz ,3.8MHz, 7MHz 帯のバンド変更

diff --git a/mchf-eclipse/hardware/uhsdr_board.h b/mchf-eclipse/hardware/uhsdr_board.h
index 6f73ee2b..eb2a0b3c 100644
--- a/mchf-eclipse/hardware/uhsdr_board.h
+++ b/mchf-eclipse/hardware/uhsdr_board.h
@@ -289,15 +289,15 @@ struct mchf_waterfall
 //
 #define        BAND_MODE_80                    0
 #define        BAND_FREQ_80                    3500*KHZ_MULT           // 3500 kHz
-#define        BAND_SIZE_80                    500*KHZ_MULT            // 500 kHz in size (Region 2)
+#define        BAND_SIZE_80                    75*KHZ_MULT             // 500 kHz in size (Region 2)
 //
 #define        BAND_MODE_60                    1
-#define        BAND_FREQ_60                    5250*KHZ_MULT           // 5250 kHz
-#define        BAND_SIZE_60                    200*KHZ_MULT            // 200 kHz in size to allow different allocations
+#define        BAND_FREQ_60                    3702*KHZ_MULT           // 5250 kHz
+#define        BAND_SIZE_60                    14*KHZ_MULT             // 200 kHz in size to allow different allocations
 //
 #define        BAND_MODE_40                    2
 #define        BAND_FREQ_40                    7000*KHZ_MULT           // 7000 kHz
-#define        BAND_SIZE_40                    300*KHZ_MULT            // 300 kHz in size (Region 2)
+#define        BAND_SIZE_40                    200*KHZ_MULT            // 300 kHz in size (Region 2)
 //
 #define        BAND_MODE_30                    3
 #define        BAND_FREQ_30                    10100*KHZ_MULT          // 10100 kHz

■LCD に表示するバンド名(60m を 79mに)、フィルター切り替え設定の修正

diff --git a/mchf-eclipse/drivers/ui/radio_management.c b/mchf-eclipse/drivers/ui/radio_management.c
index 745f26ff..904b0959 100644
--- a/mchf-eclipse/drivers/ui/radio_management.c
+++ b/mchf-eclipse/drivers/ui/radio_management.c
@@ -84,7 +84,7 @@ DialFrequency               df;
 const BandInfo bandInfo[] =
 {
     BandInfoGenerate(80,M,"80m") ,
-    BandInfoGenerate(60,M,"60m"),
+    BandInfoGenerate(60,M,"79m"),
     BandInfoGenerate(40,M,"40m"),
     BandInfoGenerate(30,M,"30m"),
     BandInfoGenerate(20,M,"20m"),
@@ -784,10 +784,11 @@ void RadioManagement_ChangeBandFilter(uchar band)
     case BAND_MODE_630:
     case BAND_MODE_160:
     case BAND_MODE_80:
+    case BAND_MODE_60:
         Board_SelectLpfBpf(0);
         break;

-    case BAND_MODE_60:
+    // case BAND_MODE_60:
     case BAND_MODE_40:
         Board_SelectLpfBpf(1);
         break;

——– 2018/3/9 追記開始
hardware/uhsdr_board.c のローパスフィルター切り替えについて補足します。 RF ボードで一生懸命トロイダルコアに線を巻いてフィルターを作りましたが、この回路を LTSpice で見ると以下のようになります。(クリックすると大きく表示されます)

カットオフ周波数はおおよそですが
・5MHz
・8Mhz
・17.5Mhz
・36MHz
の4つあります。5Mhz帯(60m)の設定を 3.8MHz帯に書き換えしたときは、このLPF設定も 5Mhz の LPF を使うようにしたほうがいいなということで、上記フィルター切り替えの変更をしています。書き換えない場合は 8Mhz のフィルターをとおるので別に壊れたりすることはありませんが、せっかく LPF をとおしているので、 5MHz のフィルターを通るようにしたほうが気分的にもいいです。

——– 2018/3/9 追記おわり

他にも修正するべきところは有ったりするかもしれませんが、ざっくりとこんなところで必要最小限の修正は可能かと思われます。git のリポジトリがしょっちゅう更新されますので、この修正はバージョン 2.9.13 の頃に適用できるものとして参照ください。

ひとまず、これをビルドして mcHF に書き込みます。

起動時のイニシャル画面に -JA 付きのバージョンが表示されます。また

メニュー画面の System Info に表示されるファームウエアバージョンでも -JA であることが確認できます。