SoftEther vpn client for 32 bit ARM

Post your questions about SoftEther VPN software here. Please answer questions if you can afford.
Post Reply
ratin3
Posts: 9
Joined: Mon Feb 24, 2020 5:14 am

SoftEther vpn client for 32 bit ARM

Post by ratin3 » Thu Feb 27, 2020 12:53 am

Hi, I buil a test version of the 32 bit arm executable of the vpnclient and vpncmd on a Ubunu 16.04 host (cross compiler) using the following makefile. But when I run the client, I get this error:

zynq> ./vpncmd
-- Alert: SoftEther VPN Kernel --
String Library Init Failed.
Please check your locale settings and iconv() libraries.

Wondering how to solve this issue. I tried to export the locales (as i pasted below). Looks like the issue is the libiconv.a but its distributed as part of the arm eabi installer so I am kind of confused why would there be an issue (since these libraries are static and I am building static, so there should not be dependency issues)


My Makefile:

SoftEther VPN Client (Ver 4.32, Build 9731, ARM EABI) for Linux
# Makefile
#
# Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan. All Rights Reserved.
# Platform: linux-armeabi-32bit

CC:=gcc
CROSS_COMPILER:=arm-linux-gnueabi-
CFLAGS := -static -msoft-float --disable-shared

OPTIONS=-fPIE -O2 -fsigned-char -pthread -lm -lrt -Wl,--no-warn-mismatch -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a -$

default:
@./.install.sh

# NOTE:
# You have to read and agree the license agreement at the same directory
# before using this software.

i_read_and_agree_the_license_agreement:
@echo "Preparing SoftEther VPN Client..."
-arm-linux-gnueabi-ranlib lib/libcharset.a
-arm-linux-gnueabi-ranlib lib/libcrypto.a
-arm-linux-gnueabi-ranlib lib/libedit.a
-arm-linux-gnueabi-ranlib lib/libiconv.a
-arm-linux-gnueabi-ranlib lib/libncurses.a
-arm-linux-gnueabi-ranlib lib/libssl.a
-arm-linux-gnueabi-ranlib lib/libz.a
-arm-linux-gnueabi-ranlib code/vpnclient.a
$(CROSS_COMPILER)$(CC) $(CFLAGS) code/vpnclient.a $(OPTIONS) -o vpnclient
-arm-linux-gnueabi-ranlib code/vpncmd.a
$(CROSS_COMPILER)$(CC) $(CFLAGS) code/vpncmd.a $(OPTIONS) -o vpncmd


Here is my LOCALE settings:

export LANG='en_US.UTF-8'
export LANGUAGE='en_US'
export LC_ALL='en_US'




Here is my cpu info:

processor : 0
model name : ARMv7 Processor rev 0 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

processor : 1
model name : ARMv7 Processor rev 0 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

Hardware : Xilinx Zynq Platform
Revision : 0000
Serial : 0000000000000000

ratin3
Posts: 9
Joined: Mon Feb 24, 2020 5:14 am

Re: SoftEther vpn client for 32 bit ARM

Post by ratin3 » Sat Feb 29, 2020 9:30 am

Bump

sky59
Posts: 477
Joined: Tue Sep 11, 2018 5:58 pm

Re: SoftEther vpn client for 32 bit ARM

Post by sky59 » Sat Feb 29, 2020 10:08 am

If i remember well, it was one of many problems

I think name is either libiconv or iconv

When you solve this you might expect another dozen of problems

ratin3
Posts: 9
Joined: Mon Feb 24, 2020 5:14 am

Re: SoftEther vpn client for 32 bit ARM

Post by ratin3 » Thu Mar 05, 2020 5:13 am

Hi Sky59, Thanks a lot for your reply,
How did you fix the issue? libiconv is provided with the downloaded tar file, so the linker just links all the libraries (i am building statically) to produce a large client binary. But did you fix it by locally building libiconv? And Once you got it going, were you able to use openVPN as the vpn protocol?
Thanks, Ratin

sky59
Posts: 477
Joined: Tue Sep 11, 2018 5:58 pm

Re: SoftEther vpn client for 32 bit ARM

Post by sky59 » Thu Mar 05, 2020 12:25 pm

Just have a look into the log why it failed, if it is missing iconv or libiconv

Yes, openvpn is normally served without limitations

ratin3
Posts: 9
Joined: Mon Feb 24, 2020 5:14 am

Re: SoftEther vpn client for 32 bit ARM

Post by ratin3 » Fri Mar 06, 2020 3:21 am

I compiled all the companion libraries from source and still had the same issue. At this point I am going to go with another client, while trying to see if SoftETher VPN server can still be used.

Thanks for your help.

scottbarry
Posts: 1
Joined: Mon Mar 09, 2020 7:13 am

Re: SoftEther vpn client for 32 bit ARM

Post by scottbarry » Mon Mar 09, 2020 7:16 am

I checked the file. Nothing is missing but I still get the issue.

sky59
Posts: 477
Joined: Tue Sep 11, 2018 5:58 pm

Re: SoftEther vpn client for 32 bit ARM

Post by sky59 » Mon Mar 09, 2020 11:04 am

I checked my notes and I had to edit file Internat.c (SE source) where all iconv needed to be changed to libiconv

flimbar
Posts: 10
Joined: Sat Mar 13, 2021 8:04 am

Re: SoftEther vpn client for 32 bit ARM

Post by flimbar » Thu Mar 18, 2021 2:17 pm

sky59 wrote:
Mon Mar 09, 2020 11:04 am
I checked my notes and I had to edit file Internat.c (SE source) where all iconv needed to be changed to libiconv
I don't follow this.

It sounds like you mean replace every instance of the string "iconv" with "libiconv"?
Is that what you mean?

Thanks
Nick

sky59
Posts: 477
Joined: Tue Sep 11, 2018 5:58 pm

Re: SoftEther vpn client for 32 bit ARM

Post by sky59 » Thu Mar 18, 2021 2:48 pm

flimbar wrote:
Thu Mar 18, 2021 2:17 pm
sky59 wrote:
Mon Mar 09, 2020 11:04 am
I checked my notes and I had to edit file Internat.c (SE source) where all iconv needed to be changed to libiconv
I don't follow this.

It sounds like you mean replace every instance of the string "iconv" with "libiconv"?
Is that what you mean?

Thanks
Nick
yes, I use version 4.25, may be for newer version not necessary

flimbar
Posts: 10
Joined: Sat Mar 13, 2021 8:04 am

Re: SoftEther vpn client for 32 bit ARM

Post by flimbar » Fri Mar 19, 2021 9:15 am

I don't understand how this will work because all these types and functions in iconv.h

typedef void *iconv_t;
extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
extern int iconv_close (iconv_t __cd);

will be broken if you change every instance of "iconv" to "libiconv"

Post Reply