Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Parallel port

    Scheduled Pinned Locked Moved General pfSense Questions
    34 Posts 5 Posters 9.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gderf
      last edited by

      @matumbo:

      Do I need to use any special options with gcc to compile it or just "gcc code.c" ?

      Just a guess, but you probably want to compile and statically link to all libraries that are not available on your pfsense box.

      1 Reply Last reply Reply Quote 0
      • M
        matumbo
        last edited by

        @gderf:

        @matumbo:

        Do I need to use any special options with gcc to compile it or just "gcc code.c" ?

        Just a guess, but you probably want to compile and statically link to all libraries that are not available on your pfsense box.

        How can I do that? I am not very good at programming nor compiling.

        1 Reply Last reply Reply Quote 0
        • stephenw10S
          stephenw10 Netgate Administrator
          last edited by

          I am using a real machine, an old laptop, and the only other option I specified was the output file:

          root@.box/home/admin# gcc -o WGXepc WGXepc.c
          
          

          Is this a 32bit vs 64bit problem?

          Steve

          1 Reply Last reply Reply Quote 0
          • M
            matumbo
            last edited by

            Okey, but it should work with a Virtual Machine aswell. I am running a 32bit-machine.

            1 Reply Last reply Reply Quote 0
            • stephenw10S
              stephenw10 Netgate Administrator
              last edited by

              Yep, should work.  :-
              I'm out of my depth here.  ;)

              Steve

              1 Reply Last reply Reply Quote 0
              • M
                matumbo
                last edited by

                Found out that this means that the libraries the headers refer to are not found in the system:
                /libexec/ld-elf.so.1: /root/program/a.out: Shared object has no run-time symbol table

                Are there no libs present in pfsense? And can someone tell me how to statically link libraries to the program?

                1 Reply Last reply Reply Quote 0
                • stephenw10S
                  stephenw10 Netgate Administrator
                  last edited by

                  About the only thing I can think you may have done is used some cut down version of FreeBSD. Alternatively I have installed some extra stuff in my FreeBSD install.  :-
                  I don't remember doing that but some package or other may have pulled in some dependencies. It's a few years since I installed it.

                  Steve

                  1 Reply Last reply Reply Quote 0
                  • M
                    matumbo
                    last edited by

                    I installed with the dvd image, which I think is the full version and I installed all standard packets or something like that. But it seems like the problem is not with my virtual FreeBSD, it's with my pfsense missing libraries which I suppose is normal. From what I understand, the only possible solution is for me to somehow statically link the required libraries into the program so that they are not needed on pfsense when I execute the program. But what I really don't understand is why I can run your program with no problem but if I compile it by myself it won't work. Especially when you didn't use any option with gcc to compile it.

                    1 Reply Last reply Reply Quote 0
                    • stephenw10S
                      stephenw10 Netgate Administrator
                      last edited by

                      @matumbo:

                      what I really don't understand is why I can run your program with no problem but if I compile it by myself it won't work. Especially when you didn't use any option with gcc to compile it.

                      It's exactly that reason makes me think it's a problem with your compile box.
                      One way to test would be if I compile your code (unless it's top secret).

                      Steve

                      1 Reply Last reply Reply Quote 0
                      • M
                        matumbo
                        last edited by

                        @stephenw10:

                        It's exactly that reason makes me think it's a problem with your compile box.
                        One way to test would be if I compile your code (unless it's top secret).

                        Steve

                        You are welcome to compile it, maybe that would do the trick :P But I'm not sure the program is working correctly yet since I haven't been able to try it at all.

                        code.c.png

                        1 Reply Last reply Reply Quote 0
                        • stephenw10S
                          stephenw10 Netgate Administrator
                          last edited by

                          Ok, Here is your compile code.
                          However it doesn't seem to work. It's hard to say because it doesn't have many printf statements so it just does nothing.  ;)

                          Running it on the compile box:

                          root@.box/home/admin# ./readio 378
                          Reading 378 :4
                          root@.box/home/admin# ./code 2 378
                          fel antal argroot@.box/home/admin# ./code 2
                          root@.box/home/admin# ./readio 378
                          Reading 378 :32
                          
                          

                          Running on my pfSense box:

                          [2.0.1-RELEASE][root@pfsense.fire.box]/tmp(6): ./code
                          fel antal arg[2.0.1-RELEASE][root@pfsense.fire.box]/tmp(7):
                          
                          

                          Seems to run fine. I didn't try to actually write any registers as that box needs to stay up!

                          When I was investigating the firebox LED I wrote a program almost the same as yours: writeio and another to compliment it: readio. I now think there is a function in FreeBSD to do this already but it was a fun exercise. See attachments.

                          Steve

                          Edit: Actually your code seems to work, just not as I'd expected.

                          code.png
                          writeio.png
                          writeio.c.png
                          readio.png

                          1 Reply Last reply Reply Quote 0
                          • M
                            matumbo
                            last edited by

                            Thanks!
                            I know, but as I said it's not really complete :P I want to add some messages that tell me what I am doing, and I want to be able to control specific pins like this: "./code 1h 2l" which would set the first pin to 1 and the second to 0. This program was a test to see if me and my friend had found the right way to communicate with the port.

                            What does Readio and writeio do?

                            I tried to statically link the library libc.a to my program while compiling(thought that might have been what was missing in pfsense) and after that I didn't get the same error message on my pfsense box. Instead it was a segmentation fault. Don't know which of the error-messages I prefer :P

                            I haven't received my equipment that is going to be connected to the parallel port yet, so I can't try if it works correctly right now. I am thinking that I might be able to use a multimeter/multitester to see If I can change one of the datapins to 1. The supported command for the program should be: 0, 1, 2 or 3.
                            That would translate to:
                            0= set both to 0
                            1= set first datapin to 1
                            2= set second datapin to 1
                            3= set first and second datapin to 1

                            1 Reply Last reply Reply Quote 0
                            • stephenw10S
                              stephenw10 Netgate Administrator
                              last edited by

                              readio and writeio allow you to read and write any memory mapped io space, such as the parallel port or in my case the southbridge gpio pins.
                              They are used:
                              readio (address)
                              writeio (address, value)
                              Values in Hex.

                              e.g.:

                              root@.box/home/admin# ./readio 378
                              Reading 378 :34
                              root@.box/home/admin# ./writeio 378 21
                              Setting 378 to 21
                              root@.box/home/admin# ./readio 378
                              Reading 378 :21
                              
                              

                              Steve

                              1 Reply Last reply Reply Quote 0
                              • M
                                matumbo
                                last edited by

                                I just tried your programs(writeio and readio) and they are great :) I used a multimeter to verify that the port did output 50 mA when I set a pin to 1 and it seems to work. I tried my program as well and it worked :) Can't understand why it works when you compile it, but I am happy it does :P

                                I received the equipment I've been waiting for today, so now I will start to build the circuit to control my power strip.
                                Thank you for all the help you have given me!

                                //Matumbo

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post
                                Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.