diff --git a/src/codec2/mod.rs b/src/codec2/mod.rs
index 23b75add5259c5c7b1c95bb829033970c5200225..e34f45f73df7535a40ac982de17fe895b8f3f70d 100644
--- a/src/codec2/mod.rs
+++ b/src/codec2/mod.rs
@@ -2,13 +2,16 @@ use std::collections::VecDeque;
 
 const MODE_M_MAX: usize = 4;
 const M: i32 = 2;
+const N_SYM: i32 = 50;
 
 #[link(name = "fsk", kind = "static")]
 extern "C" {
-    fn fsk_create(
+    fn fsk_create_hbr(
         Fs: libc::c_int,
         Rs: libc::c_int,
         M: libc::c_int,
+        P: libc::c_int,
+        n_sym: libc::c_int,
         f1_tx: libc::c_int,
         tone_spacing: libc::c_int,
     ) -> *mut InternalFsk;
@@ -99,9 +102,9 @@ pub struct Fsk<I: Iterator<Item = Complex>> {
 
 impl<I: Iterator<Item = Complex>> Fsk<I> {
     pub fn new(iq_iter: I) -> Self {
-        const FS: i32 = 9600 * 8;
+        const FS: i32 = 9600 * 5;
 
-        let internal = unsafe { fsk_create(FS, 9600, M, -1, 0) };
+        let internal = unsafe { fsk_create_hbr(FS, 9600, M, 5, N_SYM, -1, 0) };
 
         let fsk_lower = -FS / 2;
         let fsk_upper = FS / 2;